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

Side by Side Diff: content/browser/renderer_host/render_process_host_impl.cc

Issue 273523007: Dispatch geolocation IPCs on the UI thread. Aside from simplifying the code to avoid a lot of threa… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 6 years, 7 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 | Annotate | Revision Log
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 // Represents the browser side of the browser <--> renderer communication 5 // Represents the browser side of the browser <--> renderer communication
6 // channel. There will be one RenderProcessHost per renderer process. 6 // channel. There will be one RenderProcessHost per renderer process.
7 7
8 #include "content/browser/renderer_host/render_process_host_impl.h" 8 #include "content/browser/renderer_host/render_process_host_impl.h"
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 id_(ChildProcessHostImpl::GenerateChildProcessUniqueId()), 404 id_(ChildProcessHostImpl::GenerateChildProcessUniqueId()),
405 browser_context_(browser_context), 405 browser_context_(browser_context),
406 storage_partition_impl_(storage_partition_impl), 406 storage_partition_impl_(storage_partition_impl),
407 sudden_termination_allowed_(true), 407 sudden_termination_allowed_(true),
408 ignore_input_events_(false), 408 ignore_input_events_(false),
409 is_guest_(is_guest), 409 is_guest_(is_guest),
410 gpu_observer_registered_(false), 410 gpu_observer_registered_(false),
411 delayed_cleanup_needed_(false), 411 delayed_cleanup_needed_(false),
412 within_process_died_observer_(false), 412 within_process_died_observer_(false),
413 power_monitor_broadcaster_(this), 413 power_monitor_broadcaster_(this),
414 geolocation_dispatcher_host_(NULL),
415 screen_orientation_dispatcher_host_(NULL), 414 screen_orientation_dispatcher_host_(NULL),
416 worker_ref_count_(0), 415 worker_ref_count_(0),
417 weak_factory_(this) { 416 weak_factory_(this) {
418 widget_helper_ = new RenderWidgetHelper(); 417 widget_helper_ = new RenderWidgetHelper();
419 418
420 ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID()); 419 ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID());
421 420
422 CHECK(!g_exited_main_message_loop); 421 CHECK(!g_exited_main_message_loop);
423 RegisterHost(GetID(), this); 422 RegisterHost(GetID(), this);
424 g_all_hosts.Get().set_check_on_null_data(true); 423 g_all_hosts.Get().set_check_on_null_data(true);
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 AddFilter(new ClipboardMessageFilter); 697 AddFilter(new ClipboardMessageFilter);
699 AddFilter(new DOMStorageMessageFilter( 698 AddFilter(new DOMStorageMessageFilter(
700 GetID(), 699 GetID(),
701 storage_partition_impl_->GetDOMStorageContext())); 700 storage_partition_impl_->GetDOMStorageContext()));
702 AddFilter(new IndexedDBDispatcherHost( 701 AddFilter(new IndexedDBDispatcherHost(
703 GetID(), 702 GetID(),
704 storage_partition_impl_->GetURLRequestContext(), 703 storage_partition_impl_->GetURLRequestContext(),
705 storage_partition_impl_->GetIndexedDBContext(), 704 storage_partition_impl_->GetIndexedDBContext(),
706 ChromeBlobStorageContext::GetFor(browser_context))); 705 ChromeBlobStorageContext::GetFor(browser_context)));
707 706
708 geolocation_dispatcher_host_ = new GeolocationDispatcherHost(
709 GetID(), browser_context->GetGeolocationPermissionContext());
710 AddFilter(geolocation_dispatcher_host_);
711 gpu_message_filter_ = new GpuMessageFilter(GetID(), widget_helper_.get()); 707 gpu_message_filter_ = new GpuMessageFilter(GetID(), widget_helper_.get());
712 AddFilter(gpu_message_filter_); 708 AddFilter(gpu_message_filter_);
713 #if defined(ENABLE_WEBRTC) 709 #if defined(ENABLE_WEBRTC)
714 AddFilter(new WebRTCIdentityServiceHost( 710 AddFilter(new WebRTCIdentityServiceHost(
715 GetID(), storage_partition_impl_->GetWebRTCIdentityStore())); 711 GetID(), storage_partition_impl_->GetWebRTCIdentityStore()));
716 peer_connection_tracker_host_ = new PeerConnectionTrackerHost(GetID()); 712 peer_connection_tracker_host_ = new PeerConnectionTrackerHost(GetID());
717 AddFilter(peer_connection_tracker_host_.get()); 713 AddFilter(peer_connection_tracker_host_.get());
718 AddFilter(new MediaStreamDispatcherHost( 714 AddFilter(new MediaStreamDispatcherHost(
719 GetID(), 715 GetID(),
720 browser_context->GetResourceContext()->GetMediaDeviceIDSalt(), 716 browser_context->GetResourceContext()->GetMediaDeviceIDSalt(),
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
1445 base::MessageLoop::current()->DeleteSoon(FROM_HERE, this); 1441 base::MessageLoop::current()->DeleteSoon(FROM_HERE, this);
1446 deleting_soon_ = true; 1442 deleting_soon_ = true;
1447 // It's important not to wait for the DeleteTask to delete the channel 1443 // It's important not to wait for the DeleteTask to delete the channel
1448 // proxy. Kill it off now. That way, in case the profile is going away, the 1444 // proxy. Kill it off now. That way, in case the profile is going away, the
1449 // rest of the objects attached to this RenderProcessHost start going 1445 // rest of the objects attached to this RenderProcessHost start going
1450 // away first, since deleting the channel proxy will post a 1446 // away first, since deleting the channel proxy will post a
1451 // OnChannelClosed() to IPC::ChannelProxy::Context on the IO thread. 1447 // OnChannelClosed() to IPC::ChannelProxy::Context on the IO thread.
1452 channel_.reset(); 1448 channel_.reset();
1453 gpu_message_filter_ = NULL; 1449 gpu_message_filter_ = NULL;
1454 message_port_message_filter_ = NULL; 1450 message_port_message_filter_ = NULL;
1455 geolocation_dispatcher_host_ = NULL;
1456 screen_orientation_dispatcher_host_ = NULL; 1451 screen_orientation_dispatcher_host_ = NULL;
1457 1452
1458 // Remove ourself from the list of renderer processes so that we can't be 1453 // Remove ourself from the list of renderer processes so that we can't be
1459 // reused in between now and when the Delete task runs. 1454 // reused in between now and when the Delete task runs.
1460 UnregisterHost(GetID()); 1455 UnregisterHost(GetID());
1461 } 1456 }
1462 } 1457 }
1463 1458
1464 void RenderProcessHostImpl::AddPendingView() { 1459 void RenderProcessHostImpl::AddPendingView() {
1465 pending_views_++; 1460 pending_views_++;
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
1833 Details<RendererClosedDetails>(&details)); 1828 Details<RendererClosedDetails>(&details));
1834 FOR_EACH_OBSERVER(RenderProcessHostObserver, 1829 FOR_EACH_OBSERVER(RenderProcessHostObserver,
1835 observers_, 1830 observers_,
1836 RenderProcessExited(this, GetHandle(), status, exit_code)); 1831 RenderProcessExited(this, GetHandle(), status, exit_code));
1837 within_process_died_observer_ = false; 1832 within_process_died_observer_ = false;
1838 1833
1839 child_process_launcher_.reset(); 1834 child_process_launcher_.reset();
1840 channel_.reset(); 1835 channel_.reset();
1841 gpu_message_filter_ = NULL; 1836 gpu_message_filter_ = NULL;
1842 message_port_message_filter_ = NULL; 1837 message_port_message_filter_ = NULL;
1843 geolocation_dispatcher_host_ = NULL;
1844 screen_orientation_dispatcher_host_ = NULL; 1838 screen_orientation_dispatcher_host_ = NULL;
1845 1839
1846 IDMap<IPC::Listener>::iterator iter(&listeners_); 1840 IDMap<IPC::Listener>::iterator iter(&listeners_);
1847 while (!iter.IsAtEnd()) { 1841 while (!iter.IsAtEnd()) {
1848 iter.GetCurrentValue()->OnMessageReceived( 1842 iter.GetCurrentValue()->OnMessageReceived(
1849 ViewHostMsg_RenderProcessGone(iter.GetCurrentKey(), 1843 ViewHostMsg_RenderProcessGone(iter.GetCurrentKey(),
1850 static_cast<int>(status), 1844 static_cast<int>(status),
1851 exit_code)); 1845 exit_code));
1852 iter.Advance(); 1846 iter.Advance();
1853 } 1847 }
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
2079 mojo::ScopedMessagePipeHandle handle) { 2073 mojo::ScopedMessagePipeHandle handle) {
2080 mojo_activation_required_ = true; 2074 mojo_activation_required_ = true;
2081 MaybeActivateMojo(); 2075 MaybeActivateMojo();
2082 2076
2083 mojo::AllocationScope scope; 2077 mojo::AllocationScope scope;
2084 mojo_application_host_->shell_client()->AcceptConnection(service_name, 2078 mojo_application_host_->shell_client()->AcceptConnection(service_name,
2085 handle.Pass()); 2079 handle.Pass());
2086 } 2080 }
2087 2081
2088 } // namespace content 2082 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698