weblayer_render_frame_observer.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef WEBLAYER_RENDERER_WEBLAYER_RENDER_FRAME_OBSERVER_H_
  5. #define WEBLAYER_RENDERER_WEBLAYER_RENDER_FRAME_OBSERVER_H_
  6. #include "components/safe_browsing/buildflags.h"
  7. #include "content/public/renderer/render_frame_observer.h"
  8. #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
  9. namespace safe_browsing {
  10. class PhishingClassifierDelegate;
  11. }
  12. namespace translate {
  13. class TranslateAgent;
  14. }
  15. namespace weblayer {
  16. // This class holds the WebLayer-specific parts of RenderFrame, and has the
  17. // same lifetime. It is analogous to //chrome's ChromeRenderFrameObserver.
  18. class WebLayerRenderFrameObserver : public content::RenderFrameObserver {
  19. public:
  20. explicit WebLayerRenderFrameObserver(content::RenderFrame* render_frame);
  21. WebLayerRenderFrameObserver(const WebLayerRenderFrameObserver&) = delete;
  22. WebLayerRenderFrameObserver& operator=(const WebLayerRenderFrameObserver&) =
  23. delete;
  24. blink::AssociatedInterfaceRegistry* associated_interfaces() {
  25. return &associated_interfaces_;
  26. }
  27. private:
  28. enum TextCaptureType { PRELIMINARY_CAPTURE, FINAL_CAPTURE };
  29. ~WebLayerRenderFrameObserver() override;
  30. // RenderFrameObserver:
  31. bool OnAssociatedInterfaceRequestForFrame(
  32. const std::string& interface_name,
  33. mojo::ScopedInterfaceEndpointHandle* handle) override;
  34. void ReadyToCommitNavigation(
  35. blink::WebDocumentLoader* document_loader) override;
  36. void DidMeaningfulLayout(blink::WebMeaningfulLayout layout_type) override;
  37. void OnDestruct() override;
  38. void CapturePageText(TextCaptureType capture_type);
  39. // Initializes a |phishing_classifier_delegate_|.
  40. void SetClientSidePhishingDetection();
  41. blink::AssociatedInterfaceRegistry associated_interfaces_;
  42. // Has the same lifetime as this object.
  43. translate::TranslateAgent* translate_agent_;
  44. #if BUILDFLAG(SAFE_BROWSING_AVAILABLE)
  45. safe_browsing::PhishingClassifierDelegate* phishing_classifier_ = nullptr;
  46. #endif
  47. };
  48. } // namespace weblayer
  49. #endif // WEBLAYER_RENDERER_WEBLAYER_RENDER_FRAME_OBSERVER_H_