display_webview.h 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Copyright 2021 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 ANDROID_WEBVIEW_BROWSER_GFX_DISPLAY_WEBVIEW_H_
  5. #define ANDROID_WEBVIEW_BROWSER_GFX_DISPLAY_WEBVIEW_H_
  6. #include "base/containers/flat_set.h"
  7. #include "base/memory/raw_ptr.h"
  8. #include "base/scoped_observation.h"
  9. #include "components/viz/service/display/display.h"
  10. #include "components/viz/service/frame_sinks/frame_sink_manager_impl.h"
  11. #include "components/viz/service/frame_sinks/frame_sink_observer.h"
  12. namespace android_webview {
  13. class OverlayProcessorWebView;
  14. class RootFrameSink;
  15. class DisplayWebView : public viz::Display, public viz::FrameSinkObserver {
  16. public:
  17. static std::unique_ptr<DisplayWebView> Create(
  18. const viz::RendererSettings& settings,
  19. const viz::DebugRendererSettings* debug_settings,
  20. const viz::FrameSinkId& frame_sink_id,
  21. std::unique_ptr<viz::DisplayCompositorMemoryAndTaskController>
  22. gpu_dependency,
  23. std::unique_ptr<viz::OutputSurface> output_surface,
  24. viz::FrameSinkManagerImpl* frame_sink_manager,
  25. RootFrameSink* root_frame_sink);
  26. ~DisplayWebView() override;
  27. OverlayProcessorWebView* overlay_processor() const {
  28. return overlay_processor_webview_;
  29. }
  30. const base::flat_set<viz::SurfaceId>& GetContainedSurfaceIds();
  31. // viz::FrameSinkObserver implenentation:
  32. void OnRegisteredFrameSinkId(const viz::FrameSinkId& frame_sink_id) override {
  33. }
  34. void OnInvalidatedFrameSinkId(
  35. const viz::FrameSinkId& frame_sink_id) override {}
  36. void OnCreatedCompositorFrameSink(const viz::FrameSinkId& frame_sink_id,
  37. bool is_root) override {}
  38. void OnDestroyedCompositorFrameSink(
  39. const viz::FrameSinkId& frame_sink_id) override {}
  40. void OnRegisteredFrameSinkHierarchy(
  41. const viz::FrameSinkId& parent_frame_sink_id,
  42. const viz::FrameSinkId& child_frame_sink_id) override {}
  43. void OnUnregisteredFrameSinkHierarchy(
  44. const viz::FrameSinkId& parent_frame_sink_id,
  45. const viz::FrameSinkId& child_frame_sink_id) override {}
  46. void OnFrameSinkDidBeginFrame(const viz::FrameSinkId& frame_sink_id,
  47. const viz::BeginFrameArgs& args) override {}
  48. void OnFrameSinkDidFinishFrame(const viz::FrameSinkId& frame_sink_id,
  49. const viz::BeginFrameArgs& args) override;
  50. void OnCaptureStarted(const viz::FrameSinkId& frame_sink_id) override {}
  51. private:
  52. DisplayWebView(
  53. const viz::RendererSettings& settings,
  54. const viz::DebugRendererSettings* debug_settings,
  55. const viz::FrameSinkId& frame_sink_id,
  56. std::unique_ptr<viz::DisplayCompositorMemoryAndTaskController>
  57. gpu_dependency,
  58. std::unique_ptr<viz::OutputSurface> output_surface,
  59. std::unique_ptr<viz::OverlayProcessorInterface> overlay_processor,
  60. std::unique_ptr<viz::DisplaySchedulerBase> scheduler,
  61. OverlayProcessorWebView* overlay_processor_webview,
  62. viz::FrameSinkManagerImpl* frame_sink_manager);
  63. const raw_ptr<OverlayProcessorWebView> overlay_processor_webview_;
  64. const raw_ptr<viz::FrameSinkManagerImpl> frame_sink_manager_;
  65. base::ScopedObservation<viz::FrameSinkManagerImpl, viz::FrameSinkObserver>
  66. frame_sink_manager_observation_{this};
  67. const bool use_new_invalidate_heuristic_;
  68. };
  69. } // namespace android_webview
  70. #endif // ANDROID_WEBVIEW_BROWSER_GFX_DISPLAY_WEBVIEW_H_