| Index: content/browser/frame_host/render_frame_host_impl.cc
|
| diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
|
| index c5c6b04749a9de5743278470bc877171e85f9b35..206119339c0383e19fab31001f04790d884c5df3 100644
|
| --- a/content/browser/frame_host/render_frame_host_impl.cc
|
| +++ b/content/browser/frame_host/render_frame_host_impl.cc
|
| @@ -266,6 +266,14 @@ class RemoterFactoryImpl final : public media::mojom::RemoterFactory {
|
| };
|
| #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING)
|
|
|
| +void CreateResourceCoordinatorFrameInterface(
|
| + RenderFrameHostImpl* render_frame_host,
|
| + const service_manager::BindSourceInfo& source_info,
|
| + resource_coordinator::mojom::CoordinationUnitRequest request) {
|
| + render_frame_host->GetFrameResourceCoordinator()->service()->Duplicate(
|
| + std::move(request));
|
| +}
|
| +
|
| template <typename Interface>
|
| void IgnoreInterfaceRequest(const service_manager::BindSourceInfo& source_info,
|
| mojo::InterfaceRequest<Interface> request) {
|
| @@ -2830,6 +2838,9 @@ void RenderFrameHostImpl::RegisterMojoInterfaces() {
|
| base::Bind(&IgnoreInterfaceRequest<device::mojom::VRService>));
|
| #endif
|
|
|
| + GetInterfaceRegistry()->AddInterface(base::Bind(
|
| + &CreateResourceCoordinatorFrameInterface, base::Unretained(this)));
|
| +
|
| #if BUILDFLAG(ENABLE_WEBRTC)
|
| // BrowserMainLoop::GetInstance() may be null on unit tests.
|
| if (BrowserMainLoop::GetInstance()) {
|
| @@ -3254,6 +3265,7 @@ void RenderFrameHostImpl::InvalidateMojoConnection() {
|
|
|
| // Disconnect with ImageDownloader Mojo service in RenderFrame.
|
| mojo_image_downloader_.reset();
|
| + frame_resource_coordinator_.reset();
|
| }
|
|
|
| bool RenderFrameHostImpl::IsFocused() {
|
| @@ -3360,6 +3372,18 @@ RenderFrameHostImpl::GetMojoImageDownloader() {
|
| return mojo_image_downloader_;
|
| }
|
|
|
| +resource_coordinator::ResourceCoordinatorInterface*
|
| +RenderFrameHostImpl::GetFrameResourceCoordinator() {
|
| + if (!frame_resource_coordinator_) {
|
| + frame_resource_coordinator_ =
|
| + base::MakeUnique<resource_coordinator::ResourceCoordinatorInterface>(
|
| + ServiceManagerConnection::GetForProcess()->GetConnector(),
|
| + resource_coordinator::CoordinationUnitType::kFrame);
|
| + }
|
| +
|
| + return frame_resource_coordinator_.get();
|
| +}
|
| +
|
| void RenderFrameHostImpl::ResetLoadingState() {
|
| if (is_loading()) {
|
| // When pending deletion, just set the loading state to not loading.
|
|
|