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

Side by Side Diff: content/renderer/render_thread_impl.cc

Issue 2381493003: Move ViewMsg_New to mojom (Closed)
Patch Set: . Created 4 years, 2 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
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | content/renderer/render_view_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/renderer/render_thread_impl.h" 5 #include "content/renderer/render_thread_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <map> 9 #include <map>
10 #include <utility> 10 #include <utility>
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 void CreateFrame(int32_t frame_routing_id, 340 void CreateFrame(int32_t frame_routing_id,
341 mojom::FrameRequest frame_request, 341 mojom::FrameRequest frame_request,
342 mojom::FrameHostPtr frame_host) override { 342 mojom::FrameHostPtr frame_host) override {
343 // TODO(morrita): This is for investigating http://crbug.com/415059 and 343 // TODO(morrita): This is for investigating http://crbug.com/415059 and
344 // should be removed once it is fixed. 344 // should be removed once it is fixed.
345 CHECK_LT(routing_id_highmark_, frame_routing_id); 345 CHECK_LT(routing_id_highmark_, frame_routing_id);
346 routing_id_highmark_ = frame_routing_id; 346 routing_id_highmark_ = frame_routing_id;
347 347
348 RenderFrameImpl* frame = RenderFrameImpl::FromRoutingID(frame_routing_id); 348 RenderFrameImpl* frame = RenderFrameImpl::FromRoutingID(frame_routing_id);
349 // We can receive a GetServiceProviderForFrame message for a frame not yet 349 // We can receive a GetServiceProviderForFrame message for a frame not yet
350 // created due to a race between the message and a ViewMsg_New IPC that 350 // created due to a race between the message and a
351 // triggers creation of the RenderFrame we want. 351 // mojom::Renderer::CreateView IPC that triggers creation of the RenderFrame
352 // we want.
352 if (!frame) { 353 if (!frame) {
353 RenderThreadImpl::current()->RegisterPendingFrameCreate( 354 RenderThreadImpl::current()->RegisterPendingFrameCreate(
354 frame_routing_id, std::move(frame_request), std::move(frame_host)); 355 frame_routing_id, std::move(frame_request), std::move(frame_host));
355 return; 356 return;
356 } 357 }
357 358
358 frame->Bind(std::move(frame_request), std::move(frame_host)); 359 frame->Bind(std::move(frame_request), std::move(frame_host));
359 } 360 }
360 361
361 private: 362 private:
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 std::unique_ptr<blink::scheduler::RendererScheduler> scheduler, 599 std::unique_ptr<blink::scheduler::RendererScheduler> scheduler,
599 scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) 600 scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue)
600 : ChildThreadImpl(Options::Builder() 601 : ChildThreadImpl(Options::Builder()
601 .InBrowserProcess(params) 602 .InBrowserProcess(params)
602 .UseMojoChannel(true) 603 .UseMojoChannel(true)
603 .AutoStartMojoShellConnection(false) 604 .AutoStartMojoShellConnection(false)
604 .ConnectToBrowser(true) 605 .ConnectToBrowser(true)
605 .Build()), 606 .Build()),
606 renderer_scheduler_(std::move(scheduler)), 607 renderer_scheduler_(std::move(scheduler)),
607 time_zone_monitor_binding_(this), 608 time_zone_monitor_binding_(this),
608 categorized_worker_pool_(new CategorizedWorkerPool()) { 609 categorized_worker_pool_(new CategorizedWorkerPool()),
610 renderer_binding_(this) {
609 Init(resource_task_queue); 611 Init(resource_task_queue);
610 } 612 }
611 613
612 // When we run plugins in process, we actually run them on the render thread, 614 // When we run plugins in process, we actually run them on the render thread,
613 // which means that we need to make the render thread pump UI events. 615 // which means that we need to make the render thread pump UI events.
614 RenderThreadImpl::RenderThreadImpl( 616 RenderThreadImpl::RenderThreadImpl(
615 std::unique_ptr<base::MessageLoop> main_message_loop, 617 std::unique_ptr<base::MessageLoop> main_message_loop,
616 std::unique_ptr<blink::scheduler::RendererScheduler> scheduler) 618 std::unique_ptr<blink::scheduler::RendererScheduler> scheduler)
617 : ChildThreadImpl(Options::Builder() 619 : ChildThreadImpl(Options::Builder()
618 .UseMojoChannel(true) 620 .UseMojoChannel(true)
619 .AutoStartMojoShellConnection(false) 621 .AutoStartMojoShellConnection(false)
620 .ConnectToBrowser(true) 622 .ConnectToBrowser(true)
621 .Build()), 623 .Build()),
622 renderer_scheduler_(std::move(scheduler)), 624 renderer_scheduler_(std::move(scheduler)),
623 time_zone_monitor_binding_(this), 625 time_zone_monitor_binding_(this),
624 main_message_loop_(std::move(main_message_loop)), 626 main_message_loop_(std::move(main_message_loop)),
625 categorized_worker_pool_(new CategorizedWorkerPool()) { 627 categorized_worker_pool_(new CategorizedWorkerPool()),
628 renderer_binding_(this) {
626 scoped_refptr<base::SingleThreadTaskRunner> test_task_counter; 629 scoped_refptr<base::SingleThreadTaskRunner> test_task_counter;
627 Init(test_task_counter); 630 Init(test_task_counter);
628 } 631 }
629 632
630 void RenderThreadImpl::Init( 633 void RenderThreadImpl::Init(
631 scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) { 634 scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) {
632 TRACE_EVENT0("startup", "RenderThreadImpl::Init"); 635 TRACE_EVENT0("startup", "RenderThreadImpl::Init");
633 636
634 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex( 637 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex(
635 base::PlatformThread::CurrentId(), 638 base::PlatformThread::CurrentId(),
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 switches::kUseMusInRenderer)) { 732 switches::kUseMusInRenderer)) {
730 CreateRenderWidgetWindowTreeClientFactory(GetMojoShellConnection()); 733 CreateRenderWidgetWindowTreeClientFactory(GetMojoShellConnection());
731 } 734 }
732 #endif 735 #endif
733 736
734 // Must be called before RenderThreadStarted() below. 737 // Must be called before RenderThreadStarted() below.
735 StartMojoShellConnection(); 738 StartMojoShellConnection();
736 739
737 GetContentClient()->renderer()->RenderThreadStarted(); 740 GetContentClient()->renderer()->RenderThreadStarted();
738 741
742 GetAssociatedInterfaceRegistry()->AddInterface(
743 base::Bind(&RenderThreadImpl::OnRendererInterfaceRequest,
744 base::Unretained(this)));
745
739 InitSkiaEventTracer(); 746 InitSkiaEventTracer();
740 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( 747 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
741 skia::SkiaMemoryDumpProvider::GetInstance(), "Skia", nullptr); 748 skia::SkiaMemoryDumpProvider::GetInstance(), "Skia", nullptr);
742 749
743 const base::CommandLine& command_line = 750 const base::CommandLine& command_line =
744 *base::CommandLine::ForCurrentProcess(); 751 *base::CommandLine::ForCurrentProcess();
745 752
746 #if defined(ENABLE_IPC_FUZZER) 753 #if defined(ENABLE_IPC_FUZZER)
747 if (command_line.HasSwitch(switches::kIpcDumpDirectory)) { 754 if (command_line.HasSwitch(switches::kIpcDumpDirectory)) {
748 base::FilePath dump_directory = 755 base::FilePath dump_directory =
(...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after
1558 audio_renderer_mixer_manager_ = AudioRendererMixerManager::Create(); 1565 audio_renderer_mixer_manager_ = AudioRendererMixerManager::Create();
1559 } 1566 }
1560 1567
1561 return audio_renderer_mixer_manager_.get(); 1568 return audio_renderer_mixer_manager_.get();
1562 } 1569 }
1563 1570
1564 base::WaitableEvent* RenderThreadImpl::GetShutdownEvent() { 1571 base::WaitableEvent* RenderThreadImpl::GetShutdownEvent() {
1565 return ChildProcess::current()->GetShutDownEvent(); 1572 return ChildProcess::current()->GetShutDownEvent();
1566 } 1573 }
1567 1574
1575 void RenderThreadImpl::OnAssociatedInterfaceRequest(
1576 const std::string& name,
1577 mojo::ScopedInterfaceEndpointHandle handle) {
1578 associated_interfaces_.BindRequest(name, std::move(handle));
1579 }
1580
1568 bool RenderThreadImpl::IsGpuRasterizationForced() { 1581 bool RenderThreadImpl::IsGpuRasterizationForced() {
1569 return is_gpu_rasterization_forced_; 1582 return is_gpu_rasterization_forced_;
1570 } 1583 }
1571 1584
1572 bool RenderThreadImpl::IsGpuRasterizationEnabled() { 1585 bool RenderThreadImpl::IsGpuRasterizationEnabled() {
1573 return is_gpu_rasterization_enabled_; 1586 return is_gpu_rasterization_enabled_;
1574 } 1587 }
1575 1588
1576 bool RenderThreadImpl::IsAsyncWorkerContextEnabled() { 1589 bool RenderThreadImpl::IsAsyncWorkerContextEnabled() {
1577 return is_async_worker_context_enabled_; 1590 return is_async_worker_context_enabled_;
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
1717 embedded_worker_dispatcher_->OnMessageReceived(msg)) { 1730 embedded_worker_dispatcher_->OnMessageReceived(msg)) {
1718 return true; 1731 return true;
1719 } 1732 }
1720 1733
1721 bool handled = true; 1734 bool handled = true;
1722 IPC_BEGIN_MESSAGE_MAP(RenderThreadImpl, msg) 1735 IPC_BEGIN_MESSAGE_MAP(RenderThreadImpl, msg)
1723 IPC_MESSAGE_HANDLER(FrameMsg_NewFrame, OnCreateNewFrame) 1736 IPC_MESSAGE_HANDLER(FrameMsg_NewFrame, OnCreateNewFrame)
1724 IPC_MESSAGE_HANDLER(FrameMsg_NewFrameProxy, OnCreateNewFrameProxy) 1737 IPC_MESSAGE_HANDLER(FrameMsg_NewFrameProxy, OnCreateNewFrameProxy)
1725 // TODO(port): removed from render_messages_internal.h; 1738 // TODO(port): removed from render_messages_internal.h;
1726 // is there a new non-windows message I should add here? 1739 // is there a new non-windows message I should add here?
1727 IPC_MESSAGE_HANDLER(ViewMsg_New, OnCreateNewView)
1728 IPC_MESSAGE_HANDLER(ViewMsg_NetworkConnectionChanged, 1740 IPC_MESSAGE_HANDLER(ViewMsg_NetworkConnectionChanged,
1729 OnNetworkConnectionChanged) 1741 OnNetworkConnectionChanged)
1730 IPC_MESSAGE_HANDLER(WorkerProcessMsg_CreateWorker, OnCreateNewSharedWorker) 1742 IPC_MESSAGE_HANDLER(WorkerProcessMsg_CreateWorker, OnCreateNewSharedWorker)
1731 #if defined(OS_ANDROID) 1743 #if defined(OS_ANDROID)
1732 IPC_MESSAGE_HANDLER(ViewMsg_SetWebKitSharedTimersSuspended, 1744 IPC_MESSAGE_HANDLER(ViewMsg_SetWebKitSharedTimersSuspended,
1733 OnSetWebKitSharedTimersSuspended) 1745 OnSetWebKitSharedTimersSuspended)
1734 #endif 1746 #endif
1735 #if defined(OS_MACOSX) 1747 #if defined(OS_MACOSX)
1736 IPC_MESSAGE_HANDLER(ViewMsg_UpdateScrollbarTheme, OnUpdateScrollbarTheme) 1748 IPC_MESSAGE_HANDLER(ViewMsg_UpdateScrollbarTheme, OnUpdateScrollbarTheme)
1737 IPC_MESSAGE_HANDLER(ViewMsg_SystemColorsChanged, OnSystemColorsChanged) 1749 IPC_MESSAGE_HANDLER(ViewMsg_SystemColorsChanged, OnSystemColorsChanged)
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1804 base::IntToString(render_view_routing_id)); 1816 base::IntToString(render_view_routing_id));
1805 base::debug::SetCrashKeyValue("newproxy_opener_id", 1817 base::debug::SetCrashKeyValue("newproxy_opener_id",
1806 base::IntToString(opener_routing_id)); 1818 base::IntToString(opener_routing_id));
1807 base::debug::SetCrashKeyValue("newproxy_parent_id", 1819 base::debug::SetCrashKeyValue("newproxy_parent_id",
1808 base::IntToString(parent_routing_id)); 1820 base::IntToString(parent_routing_id));
1809 RenderFrameProxy::CreateFrameProxy(routing_id, render_view_routing_id, 1821 RenderFrameProxy::CreateFrameProxy(routing_id, render_view_routing_id,
1810 opener_routing_id, parent_routing_id, 1822 opener_routing_id, parent_routing_id,
1811 replicated_state); 1823 replicated_state);
1812 } 1824 }
1813 1825
1814 void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) {
1815 CompositorDependencies* compositor_deps = this;
1816 // When bringing in render_view, also bring in webkit's glue and jsbindings.
1817 RenderViewImpl::Create(compositor_deps, params, false);
1818 }
1819
1820 scoped_refptr<gpu::GpuChannelHost> RenderThreadImpl::EstablishGpuChannelSync() { 1826 scoped_refptr<gpu::GpuChannelHost> RenderThreadImpl::EstablishGpuChannelSync() {
1821 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync"); 1827 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync");
1822 1828
1823 if (gpu_channel_) { 1829 if (gpu_channel_) {
1824 // Do nothing if we already have a GPU channel or are already 1830 // Do nothing if we already have a GPU channel or are already
1825 // establishing one. 1831 // establishing one.
1826 if (!gpu_channel_->IsLost()) 1832 if (!gpu_channel_->IsLost())
1827 return gpu_channel_; 1833 return gpu_channel_;
1828 1834
1829 // Recreate the channel if it has been lost. 1835 // Recreate the channel if it has been lost.
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
1976 sync_compositor_message_filter_.get(), 1982 sync_compositor_message_filter_.get(),
1977 std::move(frame_swap_message_queue)); 1983 std::move(frame_swap_message_queue));
1978 } 1984 }
1979 #endif 1985 #endif
1980 return base::WrapUnique(new RendererCompositorFrameSink( 1986 return base::WrapUnique(new RendererCompositorFrameSink(
1981 routing_id, compositor_frame_sink_id, 1987 routing_id, compositor_frame_sink_id,
1982 CreateExternalBeginFrameSource(routing_id), std::move(context_provider), 1988 CreateExternalBeginFrameSource(routing_id), std::move(context_provider),
1983 std::move(worker_context_provider), std::move(frame_swap_message_queue))); 1989 std::move(worker_context_provider), std::move(frame_swap_message_queue)));
1984 } 1990 }
1985 1991
1992 AssociatedInterfaceRegistry*
1993 RenderThreadImpl::GetAssociatedInterfaceRegistry() {
1994 return &associated_interfaces_;
1995 }
1996
1986 std::unique_ptr<cc::SwapPromise> 1997 std::unique_ptr<cc::SwapPromise>
1987 RenderThreadImpl::RequestCopyOfOutputForLayoutTest( 1998 RenderThreadImpl::RequestCopyOfOutputForLayoutTest(
1988 int32_t routing_id, 1999 int32_t routing_id,
1989 std::unique_ptr<cc::CopyOutputRequest> request) { 2000 std::unique_ptr<cc::CopyOutputRequest> request) {
1990 DCHECK(layout_test_deps_); 2001 DCHECK(layout_test_deps_);
1991 return layout_test_deps_->RequestCopyOfOutput(routing_id, std::move(request)); 2002 return layout_test_deps_->RequestCopyOfOutput(routing_id, std::move(request));
1992 } 2003 }
1993 2004
1994 blink::WebMediaStreamCenter* RenderThreadImpl::CreateMediaStreamCenter( 2005 blink::WebMediaStreamCenter* RenderThreadImpl::CreateMediaStreamCenter(
1995 blink::WebMediaStreamCenterClient* client) { 2006 blink::WebMediaStreamCenterClient* client) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
2053 net::NetworkChangeNotifier::ConnectionType type, 2064 net::NetworkChangeNotifier::ConnectionType type,
2054 double max_bandwidth_mbps) { 2065 double max_bandwidth_mbps) {
2055 bool online = type != net::NetworkChangeNotifier::CONNECTION_NONE; 2066 bool online = type != net::NetworkChangeNotifier::CONNECTION_NONE;
2056 WebNetworkStateNotifier::setOnLine(online); 2067 WebNetworkStateNotifier::setOnLine(online);
2057 FOR_EACH_OBSERVER( 2068 FOR_EACH_OBSERVER(
2058 RenderThreadObserver, observers_, NetworkStateChanged(online)); 2069 RenderThreadObserver, observers_, NetworkStateChanged(online));
2059 WebNetworkStateNotifier::setWebConnection( 2070 WebNetworkStateNotifier::setWebConnection(
2060 NetConnectionTypeToWebConnectionType(type), max_bandwidth_mbps); 2071 NetConnectionTypeToWebConnectionType(type), max_bandwidth_mbps);
2061 } 2072 }
2062 2073
2074 void RenderThreadImpl::CreateView(mojom::CreateViewParamsPtr params) {
2075 CompositorDependencies* compositor_deps = this;
2076 // When bringing in render_view, also bring in webkit's glue and jsbindings.
2077 RenderViewImpl::Create(compositor_deps, *params, false);
2078 }
2079
2063 void RenderThreadImpl::OnTimeZoneChange(const std::string& zone_id) { 2080 void RenderThreadImpl::OnTimeZoneChange(const std::string& zone_id) {
2064 if (!blink_platform_impl_) 2081 if (!blink_platform_impl_)
2065 return; 2082 return;
2066 if (!zone_id.empty()) { 2083 if (!zone_id.empty()) {
2067 icu::TimeZone *new_zone = icu::TimeZone::createTimeZone( 2084 icu::TimeZone *new_zone = icu::TimeZone::createTimeZone(
2068 icu::UnicodeString::fromUTF8(zone_id)); 2085 icu::UnicodeString::fromUTF8(zone_id));
2069 icu::TimeZone::adoptDefault(new_zone); 2086 icu::TimeZone::adoptDefault(new_zone);
2070 VLOG(1) << "ICU default timezone is set to " << zone_id; 2087 VLOG(1) << "ICU default timezone is set to " << zone_id;
2071 } 2088 }
2072 NotifyTimezoneChange(); 2089 NotifyTimezoneChange();
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
2307 // OnSyncMemoryPressure() is never called in that case. 2324 // OnSyncMemoryPressure() is never called in that case.
2308 void RenderThreadImpl::OnTrimMemoryImmediately() { 2325 void RenderThreadImpl::OnTrimMemoryImmediately() {
2309 if (blink::mainThreadIsolate()) { 2326 if (blink::mainThreadIsolate()) {
2310 blink::mainThreadIsolate()->MemoryPressureNotification( 2327 blink::mainThreadIsolate()->MemoryPressureNotification(
2311 v8::MemoryPressureLevel::kCritical); 2328 v8::MemoryPressureLevel::kCritical);
2312 blink::MemoryPressureNotificationToWorkerThreadIsolates( 2329 blink::MemoryPressureNotificationToWorkerThreadIsolates(
2313 v8::MemoryPressureLevel::kCritical); 2330 v8::MemoryPressureLevel::kCritical);
2314 } 2331 }
2315 } 2332 }
2316 2333
2334 void RenderThreadImpl::OnRendererInterfaceRequest(
2335 mojom::RendererAssociatedRequest request) {
2336 DCHECK(!renderer_binding_.is_bound());
2337 renderer_binding_.Bind(std::move(request));
2338 }
2317 2339
2318 } // namespace content 2340 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | content/renderer/render_view_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698