web_engine_render_frame_observer.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Copyright 2020 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 FUCHSIA_WEB_WEBENGINE_RENDERER_WEB_ENGINE_RENDER_FRAME_OBSERVER_H_
  5. #define FUCHSIA_WEB_WEBENGINE_RENDERER_WEB_ENGINE_RENDER_FRAME_OBSERVER_H_
  6. #include "base/callback.h"
  7. #include "components/url_rewrite/renderer/url_request_rules_receiver.h"
  8. #include "content/public/renderer/render_frame_observer.h"
  9. namespace content {
  10. class RenderFrame;
  11. } // namespace content
  12. // This class owns WebEngine-specific objects whose lifespan is tied to a
  13. // RenderFrame. Owned by WebEngineContentRendererClient, this object will be
  14. // destroyed on RenderFrame destruction, triggering the destruction of all of
  15. // the objects it exposes.
  16. class WebEngineRenderFrameObserver final : public content::RenderFrameObserver {
  17. public:
  18. // |on_render_frame_deleted_callback| must delete |this|.
  19. WebEngineRenderFrameObserver(
  20. content::RenderFrame* render_frame,
  21. base::OnceCallback<void(int)> on_render_frame_deleted_callback);
  22. ~WebEngineRenderFrameObserver() override;
  23. WebEngineRenderFrameObserver(const WebEngineRenderFrameObserver&) = delete;
  24. WebEngineRenderFrameObserver& operator=(const WebEngineRenderFrameObserver&) =
  25. delete;
  26. url_rewrite::UrlRequestRulesReceiver* url_request_rules_receiver() {
  27. return &url_request_rules_receiver_;
  28. }
  29. private:
  30. // content::RenderFrameObserver implementation.
  31. void OnDestruct() override;
  32. url_rewrite::UrlRequestRulesReceiver url_request_rules_receiver_;
  33. base::OnceCallback<void(int)> on_render_frame_deleted_callback_;
  34. };
  35. #endif // FUCHSIA_WEB_WEBENGINE_RENDERER_WEB_ENGINE_RENDER_FRAME_OBSERVER_H_