// Copyright 2019 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef WEBLAYER_RENDERER_WEBLAYER_RENDER_FRAME_OBSERVER_H_ #define WEBLAYER_RENDERER_WEBLAYER_RENDER_FRAME_OBSERVER_H_ #include "components/safe_browsing/buildflags.h" #include "content/public/renderer/render_frame_observer.h" #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h" namespace safe_browsing { class PhishingClassifierDelegate; } namespace translate { class TranslateAgent; } namespace weblayer { // This class holds the WebLayer-specific parts of RenderFrame, and has the // same lifetime. It is analogous to //chrome's ChromeRenderFrameObserver. class WebLayerRenderFrameObserver : public content::RenderFrameObserver { public: explicit WebLayerRenderFrameObserver(content::RenderFrame* render_frame); WebLayerRenderFrameObserver(const WebLayerRenderFrameObserver&) = delete; WebLayerRenderFrameObserver& operator=(const WebLayerRenderFrameObserver&) = delete; blink::AssociatedInterfaceRegistry* associated_interfaces() { return &associated_interfaces_; } private: enum TextCaptureType { PRELIMINARY_CAPTURE, FINAL_CAPTURE }; ~WebLayerRenderFrameObserver() override; // RenderFrameObserver: bool OnAssociatedInterfaceRequestForFrame( const std::string& interface_name, mojo::ScopedInterfaceEndpointHandle* handle) override; void ReadyToCommitNavigation( blink::WebDocumentLoader* document_loader) override; void DidMeaningfulLayout(blink::WebMeaningfulLayout layout_type) override; void OnDestruct() override; void CapturePageText(TextCaptureType capture_type); // Initializes a |phishing_classifier_delegate_|. void SetClientSidePhishingDetection(); blink::AssociatedInterfaceRegistry associated_interfaces_; // Has the same lifetime as this object. translate::TranslateAgent* translate_agent_; #if BUILDFLAG(SAFE_BROWSING_AVAILABLE) safe_browsing::PhishingClassifierDelegate* phishing_classifier_ = nullptr; #endif }; } // namespace weblayer #endif // WEBLAYER_RENDERER_WEBLAYER_RENDER_FRAME_OBSERVER_H_