Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2795)

Unified Diff: content/renderer/render_thread_impl.cc

Issue 2310563002: Adds routed interface support between RenderFrameHost and RenderFrame (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/render_thread_impl.cc
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 605769b9e6bd1c8adde074de5f3644b54ae62b42..71d394774146737523813e75a0e419485c19dbc5 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -588,7 +588,8 @@ RenderThreadImpl::RenderThreadImpl(
.ConnectToBrowser(true)
.Build()),
renderer_scheduler_(std::move(scheduler)),
- categorized_worker_pool_(new CategorizedWorkerPool()) {
+ categorized_worker_pool_(new CategorizedWorkerPool()),
+ route_provider_binding_(this) {
Init(resource_task_queue);
}
@@ -604,7 +605,8 @@ RenderThreadImpl::RenderThreadImpl(
.Build()),
renderer_scheduler_(std::move(scheduler)),
main_message_loop_(std::move(main_message_loop)),
- categorized_worker_pool_(new CategorizedWorkerPool()) {
+ categorized_worker_pool_(new CategorizedWorkerPool()),
+ route_provider_binding_(this) {
scoped_refptr<base::SingleThreadTaskRunner> test_task_counter;
Init(test_task_counter);
}
@@ -713,6 +715,9 @@ void RenderThreadImpl::Init(
}
#endif
+ GetChannel()->AddAssociatedInterface(base::Bind(
+ &RenderThreadImpl::OnRouteProviderRequest, base::Unretained(this)));
+
// Must be called before RenderThreadStarted() below.
StartMojoShellConnection();
@@ -1040,6 +1045,7 @@ void RenderThreadImpl::AddRoute(int32_t routing_id, IPC::Listener* listener) {
void RenderThreadImpl::RemoveRoute(int32_t routing_id) {
ChildThreadImpl::GetRouter()->RemoveRoute(routing_id);
+ routed_interface_providers_.erase(routing_id);
}
void RenderThreadImpl::AddEmbeddedWorkerRoute(int32_t routing_id,
@@ -1081,6 +1087,20 @@ int RenderThreadImpl::GenerateRoutingID() {
return routing_id;
}
+void RenderThreadImpl::AddRoutedInterfaces(
+ int32_t routing_id,
+ mojom::RoutedInterfaceProvider* provider) {
+ auto result =
+ routed_interface_providers_.insert(std::make_pair(routing_id, provider));
+ DCHECK(result.second);
+}
+
+mojom::RouteProvider* RenderThreadImpl::GetRemoteRouteProvider() {
+ if (!remote_route_provider_)
+ channel()->GetRemoteAssociatedInterface(&remote_route_provider_);
+ return remote_route_provider_.get();
+}
+
void RenderThreadImpl::AddFilter(IPC::MessageFilter* filter) {
channel()->AddFilter(filter);
}
@@ -2232,5 +2252,20 @@ void RenderThreadImpl::OnTrimMemoryImmediately() {
}
}
+void RenderThreadImpl::OnRouteProviderRequest(
+ mojom::RouteProviderAssociatedRequest request) {
+ DCHECK(!route_provider_binding_.is_bound());
+ route_provider_binding_.Bind(std::move(request));
+}
+
+void RenderThreadImpl::GetRoutedInterfaces(
+ int32_t routing_id,
+ mojom::RoutedInterfaceProviderAssociatedRequest request) {
+ auto it = routed_interface_providers_.find(routing_id);
+ if (it == routed_interface_providers_.end())
+ return;
+ routed_interface_provider_bindings_.AddBinding(it->second,
+ std::move(request));
+}
} // namespace content
« content/public/renderer/render_frame.h ('K') | « content/renderer/render_thread_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698