electron_render_frame_observer.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright (c) 2017 GitHub, Inc.
  2. // Use of this source code is governed by the MIT license that can be
  3. // found in the LICENSE file.
  4. #ifndef ELECTRON_SHELL_RENDERER_ELECTRON_RENDER_FRAME_OBSERVER_H_
  5. #define ELECTRON_SHELL_RENDERER_ELECTRON_RENDER_FRAME_OBSERVER_H_
  6. #include <string>
  7. #include "content/public/renderer/render_frame_observer.h"
  8. #include "ipc/ipc_platform_file.h"
  9. #include "third_party/blink/public/web/web_local_frame.h"
  10. namespace electron {
  11. class RendererClientBase;
  12. // Helper class to forward the messages to the client.
  13. class ElectronRenderFrameObserver : private content::RenderFrameObserver {
  14. public:
  15. ElectronRenderFrameObserver(content::RenderFrame* frame,
  16. RendererClientBase* renderer_client);
  17. // disable copy
  18. ElectronRenderFrameObserver(const ElectronRenderFrameObserver&) = delete;
  19. ElectronRenderFrameObserver& operator=(const ElectronRenderFrameObserver&) =
  20. delete;
  21. private:
  22. // content::RenderFrameObserver:
  23. void DidClearWindowObject() override;
  24. void DidInstallConditionalFeatures(v8::Local<v8::Context> context,
  25. int world_id) override;
  26. void WillReleaseScriptContext(v8::Local<v8::Context> context,
  27. int world_id) override;
  28. void OnDestruct() override;
  29. void DidMeaningfulLayout(blink::WebMeaningfulLayout layout_type) override;
  30. [[nodiscard]] bool ShouldNotifyClient(int world_id) const;
  31. void CreateIsolatedWorldContext();
  32. void OnTakeHeapSnapshot(IPC::PlatformFileForTransit file_handle,
  33. const std::string& channel);
  34. bool has_delayed_node_initialization_ = false;
  35. raw_ptr<content::RenderFrame> render_frame_;
  36. raw_ptr<RendererClientBase> renderer_client_;
  37. };
  38. } // namespace electron
  39. #endif // ELECTRON_SHELL_RENDERER_ELECTRON_RENDER_FRAME_OBSERVER_H_