web_engine_content_renderer_client.h 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // Copyright 2018 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_CONTENT_RENDERER_CLIENT_H_
  5. #define FUCHSIA_WEB_WEBENGINE_RENDERER_WEB_ENGINE_CONTENT_RENDERER_CLIENT_H_
  6. #include <memory>
  7. #include "content/public/renderer/content_renderer_client.h"
  8. #include "fuchsia_web/webengine/renderer/web_engine_audio_device_factory.h"
  9. #include "fuchsia_web/webengine/renderer/web_engine_render_frame_observer.h"
  10. namespace cast_streaming {
  11. class ResourceProvider;
  12. }
  13. namespace memory_pressure {
  14. class MultiSourceMemoryPressureMonitor;
  15. } // namespace memory_pressure
  16. class WebEngineContentRendererClient : public content::ContentRendererClient {
  17. public:
  18. WebEngineContentRendererClient();
  19. WebEngineContentRendererClient(const WebEngineContentRendererClient&) =
  20. delete;
  21. WebEngineContentRendererClient& operator=(
  22. const WebEngineContentRendererClient&) = delete;
  23. ~WebEngineContentRendererClient() override;
  24. // Returns the WebEngineRenderFrameObserver corresponding to
  25. // |render_frame_id|.
  26. WebEngineRenderFrameObserver* GetWebEngineRenderFrameObserverForRenderFrameId(
  27. int render_frame_id) const;
  28. private:
  29. // Called by WebEngineRenderFrameObserver when its corresponding RenderFrame
  30. // is in the process of being deleted.
  31. void OnRenderFrameDeleted(int render_frame_id);
  32. // content::ContentRendererClient overrides.
  33. void RenderThreadStarted() override;
  34. void RenderFrameCreated(content::RenderFrame* render_frame) override;
  35. void GetSupportedKeySystems(media::GetSupportedKeySystemsCB cb) override;
  36. bool IsSupportedVideoType(const media::VideoType& type) override;
  37. std::unique_ptr<blink::URLLoaderThrottleProvider>
  38. CreateURLLoaderThrottleProvider(
  39. blink::URLLoaderThrottleProviderType type) override;
  40. bool DeferMediaLoad(content::RenderFrame* render_frame,
  41. bool has_played_media_before,
  42. base::OnceClosure closure) override;
  43. std::unique_ptr<media::RendererFactory> GetBaseRendererFactory(
  44. content::RenderFrame* render_frame,
  45. media::MediaLog* media_log,
  46. media::DecoderFactory* decoder_factory,
  47. base::RepeatingCallback<media::GpuVideoAcceleratorFactories*()>
  48. get_gpu_factories_cb) override;
  49. std::unique_ptr<cast_streaming::ResourceProvider>
  50. CreateCastStreamingResourceProvider() override;
  51. bool RunClosureWhenInForeground(content::RenderFrame* render_frame,
  52. base::OnceClosure closure);
  53. // Overrides the default Content/Blink audio pipeline, to allow Renderers to
  54. // use the AudioConsumer service directly.
  55. WebEngineAudioDeviceFactory audio_device_factory_;
  56. // Map of RenderFrame ID to WebEngineRenderFrameObserver.
  57. std::map<int, std::unique_ptr<WebEngineRenderFrameObserver>>
  58. render_frame_id_to_observer_map_;
  59. // Initiates cache purges and Blink/V8 garbage collection when free memory
  60. // is limited.
  61. std::unique_ptr<memory_pressure::MultiSourceMemoryPressureMonitor>
  62. memory_pressure_monitor_;
  63. };
  64. #endif // FUCHSIA_WEB_WEBENGINE_RENDERER_WEB_ENGINE_CONTENT_RENDERER_CLIENT_H_