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

Side by Side Diff: content/browser/browser_child_process_host_impl.cc

Issue 2766263009: Convert content ConnectionFilter to OnBindInterface (Closed)
Patch Set: . Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/browser_child_process_host_impl.h" 5 #include "content/browser/browser_child_process_host_impl.h"
6 6
7 #include "base/base_switches.h" 7 #include "base/base_switches.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/alias.h" 10 #include "base/debug/alias.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 void NotifyProcessCrashed(const ChildProcessData& data, int exit_code) { 83 void NotifyProcessCrashed(const ChildProcessData& data, int exit_code) {
84 for (auto& observer : g_observers.Get()) 84 for (auto& observer : g_observers.Get())
85 observer.BrowserChildProcessCrashed(data, exit_code); 85 observer.BrowserChildProcessCrashed(data, exit_code);
86 } 86 }
87 87
88 void NotifyProcessKilled(const ChildProcessData& data, int exit_code) { 88 void NotifyProcessKilled(const ChildProcessData& data, int exit_code) {
89 for (auto& observer : g_observers.Get()) 89 for (auto& observer : g_observers.Get())
90 observer.BrowserChildProcessKilled(data, exit_code); 90 observer.BrowserChildProcessKilled(data, exit_code);
91 } 91 }
92 92
93 class ConnectionFilterImpl : public ConnectionFilter {
94 public:
95 ConnectionFilterImpl() {}
96
97 private:
98 // ConnectionFilter:
99 bool OnConnect(const service_manager::Identity& remote_identity,
100 service_manager::InterfaceRegistry* registry,
101 service_manager::Connector* connector) override {
102 return true;
103 }
104
105 DISALLOW_COPY_AND_ASSIGN(ConnectionFilterImpl);
106 };
107
108 } // namespace 93 } // namespace
109 94
110 BrowserChildProcessHost* BrowserChildProcessHost::Create( 95 BrowserChildProcessHost* BrowserChildProcessHost::Create(
111 content::ProcessType process_type, 96 content::ProcessType process_type,
112 BrowserChildProcessHostDelegate* delegate) { 97 BrowserChildProcessHostDelegate* delegate) {
113 return Create(process_type, delegate, std::string()); 98 return Create(process_type, delegate, std::string());
114 } 99 }
115 100
116 BrowserChildProcessHost* BrowserChildProcessHost::Create( 101 BrowserChildProcessHost* BrowserChildProcessHost::Create(
117 content::ProcessType process_type, 102 content::ProcessType process_type,
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 166
182 if (!service_name.empty()) { 167 if (!service_name.empty()) {
183 DCHECK_CURRENTLY_ON(BrowserThread::IO); 168 DCHECK_CURRENTLY_ON(BrowserThread::IO);
184 child_connection_.reset( 169 child_connection_.reset(
185 new ChildConnection(service_name, base::StringPrintf("%d", data_.id), 170 new ChildConnection(service_name, base::StringPrintf("%d", data_.id),
186 pending_connection_.get(), 171 pending_connection_.get(),
187 ServiceManagerContext::GetConnectorForIOThread(), 172 ServiceManagerContext::GetConnectorForIOThread(),
188 base::ThreadTaskRunnerHandle::Get())); 173 base::ThreadTaskRunnerHandle::Get()));
189 } 174 }
190 175
191 // May be null during test execution.
192 if (ServiceManagerConnection::GetForProcess()) {
193 ServiceManagerConnection::GetForProcess()->AddConnectionFilter(
194 base::MakeUnique<ConnectionFilterImpl>());
195 }
196
197 // Create a persistent memory segment for subprocess histograms. 176 // Create a persistent memory segment for subprocess histograms.
198 CreateMetricsAllocator(); 177 CreateMetricsAllocator();
199 } 178 }
200 179
201 BrowserChildProcessHostImpl::~BrowserChildProcessHostImpl() { 180 BrowserChildProcessHostImpl::~BrowserChildProcessHostImpl() {
202 g_child_process_list.Get().remove(this); 181 g_child_process_list.Get().remove(this);
203 182
204 if (notify_child_disconnected_) { 183 if (notify_child_disconnected_) {
205 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 184 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
206 base::Bind(&NotifyProcessHostDisconnected, data_)); 185 base::Bind(&NotifyProcessHostDisconnected, data_));
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 void BrowserChildProcessHostImpl::ForceShutdown() { 287 void BrowserChildProcessHostImpl::ForceShutdown() {
309 DCHECK_CURRENTLY_ON(BrowserThread::IO); 288 DCHECK_CURRENTLY_ON(BrowserThread::IO);
310 g_child_process_list.Get().remove(this); 289 g_child_process_list.Get().remove(this);
311 child_process_host_->ForceShutdown(); 290 child_process_host_->ForceShutdown();
312 } 291 }
313 292
314 void BrowserChildProcessHostImpl::AddFilter(BrowserMessageFilter* filter) { 293 void BrowserChildProcessHostImpl::AddFilter(BrowserMessageFilter* filter) {
315 child_process_host_->AddFilter(filter->GetFilter()); 294 child_process_host_->AddFilter(filter->GetFilter());
316 } 295 }
317 296
318 service_manager::InterfaceProvider* 297 void BrowserChildProcessHostImpl::BindInterface(
319 BrowserChildProcessHostImpl::GetRemoteInterfaces() { 298 const std::string& interface_name,
299 mojo::ScopedMessagePipeHandle interface_pipe) {
320 DCHECK_CURRENTLY_ON(BrowserThread::IO); 300 DCHECK_CURRENTLY_ON(BrowserThread::IO);
321 if (!child_connection_) 301 if (!child_connection_)
322 return nullptr; 302 return;
323 303
324 return child_connection_->GetRemoteInterfaces(); 304 child_connection_->BindInterface(interface_name, std::move(interface_pipe));
325 } 305 }
326 306
327 void BrowserChildProcessHostImpl::HistogramBadMessageTerminated( 307 void BrowserChildProcessHostImpl::HistogramBadMessageTerminated(
328 int process_type) { 308 int process_type) {
329 UMA_HISTOGRAM_ENUMERATION("ChildProcess.BadMessgeTerminated", process_type, 309 UMA_HISTOGRAM_ENUMERATION("ChildProcess.BadMessgeTerminated", process_type,
330 PROCESS_TYPE_MAX); 310 PROCESS_TYPE_MAX);
331 } 311 }
332 312
333 base::TerminationStatus BrowserChildProcessHostImpl::GetTerminationStatus( 313 base::TerminationStatus BrowserChildProcessHostImpl::GetTerminationStatus(
334 bool known_dead, int* exit_code) { 314 bool known_dead, int* exit_code) {
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 591
612 #if defined(OS_WIN) 592 #if defined(OS_WIN)
613 593
614 void BrowserChildProcessHostImpl::OnObjectSignaled(HANDLE object) { 594 void BrowserChildProcessHostImpl::OnObjectSignaled(HANDLE object) {
615 OnChildDisconnected(); 595 OnChildDisconnected();
616 } 596 }
617 597
618 #endif 598 #endif
619 599
620 } // namespace content 600 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/browser_child_process_host_impl.h ('k') | content/browser/dom_storage/local_storage_context_mojo.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698