Commit d0c2fd84 authored by Tal Pressman's avatar Tal Pressman Committed by Chromium LUCI CQ

Use ExecutionContext's BrowserInterfaceBroker to bind PushMessaging.

We are in the process of attributing as many mojo interfaces as possible
to specific execution contexts, which would enable better control by the
browser over those contexts. As part of that effort, this CL uses the
execution context's BrowserInterfaceBroker to bind the
PushMessaging remote and moves the code registering the binders
accordingly.

Bug: 1126758
Change-Id: Idfd27baf90fc2fa5e150f0d97753e21757104607
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2596587Reviewed-by: default avatarRayan Kanso <rayankans@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Commit-Queue: Tal Pressman <talp@google.com>
Cr-Commit-Position: refs/heads/master@{#841337}
parent a41a7b0e
...@@ -1156,6 +1156,8 @@ void PopulateServiceWorkerBinders(ServiceWorkerHost* host, ...@@ -1156,6 +1156,8 @@ void PopulateServiceWorkerBinders(ServiceWorkerHost* host,
map->Add<blink::mojom::PeriodicBackgroundSyncService>( map->Add<blink::mojom::PeriodicBackgroundSyncService>(
BindServiceWorkerReceiver( BindServiceWorkerReceiver(
&RenderProcessHostImpl::CreatePeriodicSyncService, host)); &RenderProcessHostImpl::CreatePeriodicSyncService, host));
map->Add<blink::mojom::PushMessaging>(BindServiceWorkerReceiver(
&RenderProcessHostImpl::BindPushMessaging, host));
} }
void PopulateBinderMapWithContext( void PopulateBinderMapWithContext(
......
...@@ -2292,11 +2292,6 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() { ...@@ -2292,11 +2292,6 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() {
{base::TaskPriority::USER_BLOCKING, base::MayBlock()})); {base::TaskPriority::USER_BLOCKING, base::MayBlock()}));
#endif #endif
AddUIThreadInterface(
registry.get(),
base::BindRepeating(&RenderProcessHostImpl::BindPushMessagingManager,
weak_factory_.GetWeakPtr()));
file_system_manager_impl_.reset(new FileSystemManagerImpl( file_system_manager_impl_.reset(new FileSystemManagerImpl(
GetID(), storage_partition_impl_->GetFileSystemContext(), GetID(), storage_partition_impl_->GetFileSystemContext(),
ChromeBlobStorageContext::GetFor(GetBrowserContext()))); ChromeBlobStorageContext::GetFor(GetBrowserContext())));
...@@ -2533,8 +2528,9 @@ void RenderProcessHostImpl::CreatePeriodicSyncService( ...@@ -2533,8 +2528,9 @@ void RenderProcessHostImpl::CreatePeriodicSyncService(
->CreatePeriodicSyncService(std::move(receiver)); ->CreatePeriodicSyncService(std::move(receiver));
} }
void RenderProcessHostImpl::BindPushMessagingManager( void RenderProcessHostImpl::BindPushMessaging(
mojo::PendingReceiver<blink::mojom::PushMessaging> receiver) { mojo::PendingReceiver<blink::mojom::PushMessaging> receiver) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
push_messaging_manager_->AddPushMessagingReceiver(std::move(receiver)); push_messaging_manager_->AddPushMessagingReceiver(std::move(receiver));
} }
......
...@@ -585,6 +585,11 @@ class CONTENT_EXPORT RenderProcessHostImpl ...@@ -585,6 +585,11 @@ class CONTENT_EXPORT RenderProcessHostImpl
mojo::PendingReceiver<media::mojom::VideoDecodePerfHistory> receiver) mojo::PendingReceiver<media::mojom::VideoDecodePerfHistory> receiver)
override; override;
// Binds `receiever` to the `PushMessagingManager` instance owned by the
// render process host, and is used by workers via `BrowserInterfaceBroker`.
void BindPushMessaging(
mojo::PendingReceiver<blink::mojom::PushMessaging> receiver);
// Binds |receiver| to a OneShotBackgroundSyncService instance owned by the // Binds |receiver| to a OneShotBackgroundSyncService instance owned by the
// StoragePartition associated with the render process host, and is used by // StoragePartition associated with the render process host, and is used by
// frames and service workers via BrowserInterfaceBroker. // frames and service workers via BrowserInterfaceBroker.
...@@ -766,8 +771,6 @@ class CONTENT_EXPORT RenderProcessHostImpl ...@@ -766,8 +771,6 @@ class CONTENT_EXPORT RenderProcessHostImpl
mojo::PendingReceiver<blink::mojom::WebDatabaseHost> receiver); mojo::PendingReceiver<blink::mojom::WebDatabaseHost> receiver);
void BindAecDumpManager( void BindAecDumpManager(
mojo::PendingReceiver<blink::mojom::AecDumpManager> receiver); mojo::PendingReceiver<blink::mojom::AecDumpManager> receiver);
void BindPushMessagingManager(
mojo::PendingReceiver<blink::mojom::PushMessaging> receiver);
void BindP2PSocketManager( void BindP2PSocketManager(
mojo::PendingReceiver<network::mojom::P2PSocketManager> receiver); mojo::PendingReceiver<network::mojom::P2PSocketManager> receiver);
void CreateMediaLogRecordHost( void CreateMediaLogRecordHost(
......
...@@ -6,9 +6,11 @@ ...@@ -6,9 +6,11 @@
#include <utility> #include <utility>
#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
#include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h" #include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h"
#include "third_party/blink/public/mojom/push_messaging/push_messaging_status.mojom-blink.h" #include "third_party/blink/public/mojom/push_messaging/push_messaging_status.mojom-blink.h"
#include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/modules/push_messaging/push_error.h" #include "third_party/blink/renderer/modules/push_messaging/push_error.h"
#include "third_party/blink/renderer/modules/push_messaging/push_messaging_utils.h" #include "third_party/blink/renderer/modules/push_messaging/push_messaging_utils.h"
#include "third_party/blink/renderer/modules/push_messaging/push_subscription.h" #include "third_party/blink/renderer/modules/push_messaging/push_subscription.h"
...@@ -45,8 +47,10 @@ PushProvider* PushProvider::From(ServiceWorkerRegistration* registration) { ...@@ -45,8 +47,10 @@ PushProvider* PushProvider::From(ServiceWorkerRegistration* registration) {
// static // static
mojom::blink::PushMessaging* PushProvider::GetPushMessagingRemote() { mojom::blink::PushMessaging* PushProvider::GetPushMessagingRemote() {
if (!push_messaging_manager_.is_bound()) { if (!push_messaging_manager_.is_bound()) {
Platform::Current()->GetBrowserInterfaceBroker()->GetInterface( GetSupplementable()
push_messaging_manager_.BindNewPipeAndPassReceiver( ->GetExecutionContext()
->GetBrowserInterfaceBroker()
.GetInterface(push_messaging_manager_.BindNewPipeAndPassReceiver(
GetSupplementable()->GetExecutionContext()->GetTaskRunner( GetSupplementable()->GetExecutionContext()->GetTaskRunner(
TaskType::kMiscPlatformAPI))); TaskType::kMiscPlatformAPI)));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment