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

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

Issue 456513002: Add base:: qualification to some CommandLine references in content. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: imerge Created 6 years, 4 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 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 313
314 #if defined(OS_WIN) 314 #if defined(OS_WIN)
315 virtual void PreSpawnTarget(sandbox::TargetPolicy* policy, 315 virtual void PreSpawnTarget(sandbox::TargetPolicy* policy,
316 bool* success) { 316 bool* success) {
317 AddBaseHandleClosePolicy(policy); 317 AddBaseHandleClosePolicy(policy);
318 GetContentClient()->browser()->PreSpawnRenderer(policy, success); 318 GetContentClient()->browser()->PreSpawnRenderer(policy, success);
319 } 319 }
320 320
321 #elif defined(OS_POSIX) 321 #elif defined(OS_POSIX)
322 virtual bool ShouldUseZygote() OVERRIDE { 322 virtual bool ShouldUseZygote() OVERRIDE {
323 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess(); 323 const base::CommandLine& browser_command_line =
324 CommandLine::StringType renderer_prefix = 324 *base::CommandLine::ForCurrentProcess();
325 base::CommandLine::StringType renderer_prefix =
325 browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix); 326 browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix);
326 return renderer_prefix.empty(); 327 return renderer_prefix.empty();
327 } 328 }
328 virtual int GetIpcFd() OVERRIDE { 329 virtual int GetIpcFd() OVERRIDE {
329 return ipc_fd_; 330 return ipc_fd_;
330 } 331 }
331 #endif // OS_WIN 332 #endif // OS_WIN
332 333
333 private: 334 private:
334 #if defined(OS_POSIX) 335 #if defined(OS_POSIX)
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 475
475 ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID()); 476 ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID());
476 477
477 CHECK(!g_exited_main_message_loop); 478 CHECK(!g_exited_main_message_loop);
478 RegisterHost(GetID(), this); 479 RegisterHost(GetID(), this);
479 g_all_hosts.Get().set_check_on_null_data(true); 480 g_all_hosts.Get().set_check_on_null_data(true);
480 // Initialize |child_process_activity_time_| to a reasonable value. 481 // Initialize |child_process_activity_time_| to a reasonable value.
481 mark_child_process_activity_time(); 482 mark_child_process_activity_time();
482 483
483 if (!GetBrowserContext()->IsOffTheRecord() && 484 if (!GetBrowserContext()->IsOffTheRecord() &&
484 !CommandLine::ForCurrentProcess()->HasSwitch( 485 !base::CommandLine::ForCurrentProcess()->HasSwitch(
485 switches::kDisableGpuShaderDiskCache)) { 486 switches::kDisableGpuShaderDiskCache)) {
486 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 487 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
487 base::Bind(&CacheShaderInfo, GetID(), 488 base::Bind(&CacheShaderInfo, GetID(),
488 storage_partition_impl_->GetPath())); 489 storage_partition_impl_->GetPath()));
489 } 490 }
490 491
491 // Note: When we create the RenderProcessHostImpl, it's technically 492 // Note: When we create the RenderProcessHostImpl, it's technically
492 // backgrounded, because it has no visible listeners. But the process 493 // backgrounded, because it has no visible listeners. But the process
493 // doesn't actually exist yet, so we'll Background it later, after 494 // doesn't actually exist yet, so we'll Background it later, after
494 // creation. 495 // creation.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 544
544 // We may have some unsent messages at this point, but that's OK. 545 // We may have some unsent messages at this point, but that's OK.
545 channel_.reset(); 546 channel_.reset();
546 while (!queued_messages_.empty()) { 547 while (!queued_messages_.empty()) {
547 delete queued_messages_.front(); 548 delete queued_messages_.front();
548 queued_messages_.pop(); 549 queued_messages_.pop();
549 } 550 }
550 551
551 UnregisterHost(GetID()); 552 UnregisterHost(GetID());
552 553
553 if (!CommandLine::ForCurrentProcess()->HasSwitch( 554 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
554 switches::kDisableGpuShaderDiskCache)) { 555 switches::kDisableGpuShaderDiskCache)) {
555 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 556 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
556 base::Bind(&RemoveShaderInfo, GetID())); 557 base::Bind(&RemoveShaderInfo, GetID()));
557 } 558 }
558 559
559 #if defined(OS_ANDROID) 560 #if defined(OS_ANDROID)
560 CompositorImpl::DestroyAllSurfaceTextures(GetID()); 561 CompositorImpl::DestroyAllSurfaceTextures(GetID());
561 #endif 562 #endif
562 } 563 }
563 564
564 void RenderProcessHostImpl::EnableSendQueue() { 565 void RenderProcessHostImpl::EnableSendQueue() {
565 is_initialized_ = false; 566 is_initialized_ = false;
566 } 567 }
567 568
568 bool RenderProcessHostImpl::Init() { 569 bool RenderProcessHostImpl::Init() {
569 // calling Init() more than once does nothing, this makes it more convenient 570 // calling Init() more than once does nothing, this makes it more convenient
570 // for the view host which may not be sure in some cases 571 // for the view host which may not be sure in some cases
571 if (channel_) 572 if (channel_)
572 return true; 573 return true;
573 574
574 CommandLine::StringType renderer_prefix; 575 base::CommandLine::StringType renderer_prefix;
575 #if defined(OS_POSIX) 576 #if defined(OS_POSIX)
576 // A command prefix is something prepended to the command line of the spawned 577 // A command prefix is something prepended to the command line of the spawned
577 // process. It is supported only on POSIX systems. 578 // process. It is supported only on POSIX systems.
578 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess(); 579 const base::CommandLine& browser_command_line =
580 *base::CommandLine::ForCurrentProcess();
579 renderer_prefix = 581 renderer_prefix =
580 browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix); 582 browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix);
581 #endif // defined(OS_POSIX) 583 #endif // defined(OS_POSIX)
582 584
583 #if defined(OS_LINUX) 585 #if defined(OS_LINUX)
584 int flags = renderer_prefix.empty() ? ChildProcessHost::CHILD_ALLOW_SELF : 586 int flags = renderer_prefix.empty() ? ChildProcessHost::CHILD_ALLOW_SELF :
585 ChildProcessHost::CHILD_NORMAL; 587 ChildProcessHost::CHILD_NORMAL;
586 #else 588 #else
587 int flags = ChildProcessHost::CHILD_NORMAL; 589 int flags = ChildProcessHost::CHILD_NORMAL;
588 #endif 590 #endif
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 options.message_loop_type = base::MessageLoop::TYPE_DEFAULT; 628 options.message_loop_type = base::MessageLoop::TYPE_DEFAULT;
627 #endif 629 #endif
628 in_process_renderer_->StartWithOptions(options); 630 in_process_renderer_->StartWithOptions(options);
629 631
630 g_in_process_thread = in_process_renderer_->message_loop(); 632 g_in_process_thread = in_process_renderer_->message_loop();
631 633
632 OnProcessLaunched(); // Fake a callback that the process is ready. 634 OnProcessLaunched(); // Fake a callback that the process is ready.
633 } else { 635 } else {
634 // Build command line for renderer. We call AppendRendererCommandLine() 636 // Build command line for renderer. We call AppendRendererCommandLine()
635 // first so the process type argument will appear first. 637 // first so the process type argument will appear first.
636 CommandLine* cmd_line = new CommandLine(renderer_path); 638 base::CommandLine* cmd_line = new base::CommandLine(renderer_path);
637 if (!renderer_prefix.empty()) 639 if (!renderer_prefix.empty())
638 cmd_line->PrependWrapper(renderer_prefix); 640 cmd_line->PrependWrapper(renderer_prefix);
639 AppendRendererCommandLine(cmd_line); 641 AppendRendererCommandLine(cmd_line);
640 cmd_line->AppendSwitchASCII(switches::kProcessChannelID, channel_id); 642 cmd_line->AppendSwitchASCII(switches::kProcessChannelID, channel_id);
641 643
642 // Spawn the child process asynchronously to avoid blocking the UI thread. 644 // Spawn the child process asynchronously to avoid blocking the UI thread.
643 // As long as there's no renderer prefix, we can use the zygote process 645 // As long as there's no renderer prefix, we can use the zygote process
644 // at this stage. 646 // at this stage.
645 child_process_launcher_.reset(new ChildProcessLauncher( 647 child_process_launcher_.reset(new ChildProcessLauncher(
646 new RendererSandboxedProcessLauncherDelegate(channel_.get()), 648 new RendererSandboxedProcessLauncherDelegate(channel_.get()),
(...skipping 23 matching lines...) Expand all
670 return; // Waiting on someone to require Mojo. 672 return; // Waiting on someone to require Mojo.
671 673
672 if (!GetHandle()) 674 if (!GetHandle())
673 return; // Waiting on renderer startup. 675 return; // Waiting on renderer startup.
674 676
675 if (!mojo_application_host_->did_activate()) 677 if (!mojo_application_host_->did_activate())
676 mojo_application_host_->Activate(this, GetHandle()); 678 mojo_application_host_->Activate(this, GetHandle());
677 } 679 }
678 680
679 bool RenderProcessHostImpl::ShouldUseMojoChannel() const { 681 bool RenderProcessHostImpl::ShouldUseMojoChannel() const {
680 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 682 const base::CommandLine& command_line =
683 *base::CommandLine::ForCurrentProcess();
681 return command_line.HasSwitch(switches::kEnableRendererMojoChannel); 684 return command_line.HasSwitch(switches::kEnableRendererMojoChannel);
682 } 685 }
683 686
684 scoped_ptr<IPC::ChannelProxy> RenderProcessHostImpl::CreateChannelProxy( 687 scoped_ptr<IPC::ChannelProxy> RenderProcessHostImpl::CreateChannelProxy(
685 const std::string& channel_id) { 688 const std::string& channel_id) {
686 scoped_refptr<base::SingleThreadTaskRunner> runner = 689 scoped_refptr<base::SingleThreadTaskRunner> runner =
687 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); 690 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO);
688 if (ShouldUseMojoChannel()) { 691 if (ShouldUseMojoChannel()) {
689 VLOG(1) << "Mojo Channel is enabled on host"; 692 VLOG(1) << "Mojo Channel is enabled on host";
690 return IPC::ChannelProxy::Create( 693 return IPC::ChannelProxy::Create(
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
879 AddFilter(new QuotaDispatcherHost( 882 AddFilter(new QuotaDispatcherHost(
880 GetID(), 883 GetID(),
881 storage_partition_impl_->GetQuotaManager(), 884 storage_partition_impl_->GetQuotaManager(),
882 GetContentClient()->browser()->CreateQuotaPermissionContext())); 885 GetContentClient()->browser()->CreateQuotaPermissionContext()));
883 AddFilter(new GamepadBrowserMessageFilter()); 886 AddFilter(new GamepadBrowserMessageFilter());
884 AddFilter(new DeviceMotionMessageFilter()); 887 AddFilter(new DeviceMotionMessageFilter());
885 AddFilter(new DeviceOrientationMessageFilter()); 888 AddFilter(new DeviceOrientationMessageFilter());
886 AddFilter(new ProfilerMessageFilter(PROCESS_TYPE_RENDERER)); 889 AddFilter(new ProfilerMessageFilter(PROCESS_TYPE_RENDERER));
887 AddFilter(new HistogramMessageFilter()); 890 AddFilter(new HistogramMessageFilter());
888 #if defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID)) 891 #if defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID))
889 if (CommandLine::ForCurrentProcess()->HasSwitch( 892 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
890 switches::kEnableMemoryBenchmarking)) 893 switches::kEnableMemoryBenchmarking))
891 AddFilter(new MemoryBenchmarkMessageFilter()); 894 AddFilter(new MemoryBenchmarkMessageFilter());
892 #endif 895 #endif
893 AddFilter(new VibrationMessageFilter()); 896 AddFilter(new VibrationMessageFilter());
894 AddFilter(new PushMessagingMessageFilter( 897 AddFilter(new PushMessagingMessageFilter(
895 GetID(), storage_partition_impl_->GetServiceWorkerContext())); 898 GetID(), storage_partition_impl_->GetServiceWorkerContext()));
896 AddFilter(new BatteryStatusMessageFilter()); 899 AddFilter(new BatteryStatusMessageFilter());
897 #if defined(OS_ANDROID) 900 #if defined(OS_ANDROID)
898 AddFilter(new ScreenOrientationMessageFilterAndroid()); 901 AddFilter(new ScreenOrientationMessageFilterAndroid());
899 #endif 902 #endif
(...skipping 29 matching lines...) Expand all
929 IPC::Listener* listener) { 932 IPC::Listener* listener) {
930 listeners_.AddWithID(listener, routing_id); 933 listeners_.AddWithID(listener, routing_id);
931 } 934 }
932 935
933 void RenderProcessHostImpl::RemoveRoute(int32 routing_id) { 936 void RenderProcessHostImpl::RemoveRoute(int32 routing_id) {
934 DCHECK(listeners_.Lookup(routing_id) != NULL); 937 DCHECK(listeners_.Lookup(routing_id) != NULL);
935 listeners_.Remove(routing_id); 938 listeners_.Remove(routing_id);
936 939
937 #if defined(OS_WIN) 940 #if defined(OS_WIN)
938 // Dump the handle table if handle auditing is enabled. 941 // Dump the handle table if handle auditing is enabled.
939 const CommandLine& browser_command_line = 942 const base::CommandLine& browser_command_line =
940 *CommandLine::ForCurrentProcess(); 943 *base::CommandLine::ForCurrentProcess();
941 if (browser_command_line.HasSwitch(switches::kAuditHandles) || 944 if (browser_command_line.HasSwitch(switches::kAuditHandles) ||
942 browser_command_line.HasSwitch(switches::kAuditAllHandles)) { 945 browser_command_line.HasSwitch(switches::kAuditAllHandles)) {
943 DumpHandles(); 946 DumpHandles();
944 947
945 // We wait to close the channels until the child process has finished 948 // We wait to close the channels until the child process has finished
946 // dumping handles and sends us ChildProcessHostMsg_DumpHandlesDone. 949 // dumping handles and sends us ChildProcessHostMsg_DumpHandlesDone.
947 return; 950 return;
948 } 951 }
949 #endif 952 #endif
950 // Keep the one renderer thread around forever in single process mode. 953 // Keep the one renderer thread around forever in single process mode.
951 if (!run_renderer_in_process()) 954 if (!run_renderer_in_process())
952 Cleanup(); 955 Cleanup();
953 } 956 }
954 957
955 void RenderProcessHostImpl::AddObserver(RenderProcessHostObserver* observer) { 958 void RenderProcessHostImpl::AddObserver(RenderProcessHostObserver* observer) {
956 observers_.AddObserver(observer); 959 observers_.AddObserver(observer);
957 } 960 }
958 961
959 void RenderProcessHostImpl::RemoveObserver( 962 void RenderProcessHostImpl::RemoveObserver(
960 RenderProcessHostObserver* observer) { 963 RenderProcessHostObserver* observer) {
961 observers_.RemoveObserver(observer); 964 observers_.RemoveObserver(observer);
962 } 965 }
963 966
964 void RenderProcessHostImpl::ReceivedBadMessage() { 967 void RenderProcessHostImpl::ReceivedBadMessage() {
965 CommandLine* command_line = CommandLine::ForCurrentProcess(); 968 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
966 if (command_line->HasSwitch(switches::kDisableKillAfterBadIPC)) 969 if (command_line->HasSwitch(switches::kDisableKillAfterBadIPC))
967 return; 970 return;
968 971
969 if (run_renderer_in_process()) { 972 if (run_renderer_in_process()) {
970 // In single process mode it is better if we don't suicide but just 973 // In single process mode it is better if we don't suicide but just
971 // crash. 974 // crash.
972 CHECK(false); 975 CHECK(false);
973 } 976 }
974 // We kill the renderer but don't include a NOTREACHED, because we want the 977 // We kill the renderer but don't include a NOTREACHED, because we want the
975 // browser to try to survive when it gets illegal messages from the renderer. 978 // browser to try to survive when it gets illegal messages from the renderer.
(...skipping 27 matching lines...) Expand all
1003 } 1006 }
1004 1007
1005 bool RenderProcessHostImpl::IsIsolatedGuest() const { 1008 bool RenderProcessHostImpl::IsIsolatedGuest() const {
1006 return is_isolated_guest_; 1009 return is_isolated_guest_;
1007 } 1010 }
1008 1011
1009 StoragePartition* RenderProcessHostImpl::GetStoragePartition() const { 1012 StoragePartition* RenderProcessHostImpl::GetStoragePartition() const {
1010 return storage_partition_impl_; 1013 return storage_partition_impl_;
1011 } 1014 }
1012 1015
1013 static void AppendCompositorCommandLineFlags(CommandLine* command_line) { 1016 static void AppendCompositorCommandLineFlags(base::CommandLine* command_line) {
1014 if (IsPinchVirtualViewportEnabled()) 1017 if (IsPinchVirtualViewportEnabled())
1015 command_line->AppendSwitch(cc::switches::kEnablePinchVirtualViewport); 1018 command_line->AppendSwitch(cc::switches::kEnablePinchVirtualViewport);
1016 1019
1017 if (IsDelegatedRendererEnabled()) 1020 if (IsDelegatedRendererEnabled())
1018 command_line->AppendSwitch(switches::kEnableDelegatedRenderer); 1021 command_line->AppendSwitch(switches::kEnableDelegatedRenderer);
1019 1022
1020 if (IsImplSidePaintingEnabled()) 1023 if (IsImplSidePaintingEnabled())
1021 command_line->AppendSwitch(switches::kEnableImplSidePainting); 1024 command_line->AppendSwitch(switches::kEnableImplSidePainting);
1022 1025
1023 if (content::IsGpuRasterizationEnabled()) 1026 if (content::IsGpuRasterizationEnabled())
1024 command_line->AppendSwitch(switches::kEnableGpuRasterization); 1027 command_line->AppendSwitch(switches::kEnableGpuRasterization);
1025 1028
1026 if (content::IsForceGpuRasterizationEnabled()) 1029 if (content::IsForceGpuRasterizationEnabled())
1027 command_line->AppendSwitch(switches::kForceGpuRasterization); 1030 command_line->AppendSwitch(switches::kForceGpuRasterization);
1028 1031
1029 // Appending disable-gpu-feature switches due to software rendering list. 1032 // Appending disable-gpu-feature switches due to software rendering list.
1030 GpuDataManagerImpl* gpu_data_manager = GpuDataManagerImpl::GetInstance(); 1033 GpuDataManagerImpl* gpu_data_manager = GpuDataManagerImpl::GetInstance();
1031 DCHECK(gpu_data_manager); 1034 DCHECK(gpu_data_manager);
1032 gpu_data_manager->AppendRendererCommandLine(command_line); 1035 gpu_data_manager->AppendRendererCommandLine(command_line);
1033 } 1036 }
1034 1037
1035 void RenderProcessHostImpl::AppendRendererCommandLine( 1038 void RenderProcessHostImpl::AppendRendererCommandLine(
1036 CommandLine* command_line) const { 1039 base::CommandLine* command_line) const {
1037 // Pass the process type first, so it shows first in process listings. 1040 // Pass the process type first, so it shows first in process listings.
1038 command_line->AppendSwitchASCII(switches::kProcessType, 1041 command_line->AppendSwitchASCII(switches::kProcessType,
1039 switches::kRendererProcess); 1042 switches::kRendererProcess);
1040 1043
1041 // Now send any options from our own command line we want to propagate. 1044 // Now send any options from our own command line we want to propagate.
1042 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess(); 1045 const base::CommandLine& browser_command_line =
1046 *base::CommandLine::ForCurrentProcess();
1043 PropagateBrowserCommandLineToRenderer(browser_command_line, command_line); 1047 PropagateBrowserCommandLineToRenderer(browser_command_line, command_line);
1044 1048
1045 // Pass on the browser locale. 1049 // Pass on the browser locale.
1046 const std::string locale = 1050 const std::string locale =
1047 GetContentClient()->browser()->GetApplicationLocale(); 1051 GetContentClient()->browser()->GetApplicationLocale();
1048 command_line->AppendSwitchASCII(switches::kLang, locale); 1052 command_line->AppendSwitchASCII(switches::kLang, locale);
1049 1053
1050 // If we run base::FieldTrials, we want to pass to their state to the 1054 // If we run base::FieldTrials, we want to pass to their state to the
1051 // renderer so that it can act in accordance with each state, or record 1055 // renderer so that it can act in accordance with each state, or record
1052 // histograms relating to the base::FieldTrial states. 1056 // histograms relating to the base::FieldTrial states.
(...skipping 12 matching lines...) Expand all
1065 1069
1066 #if defined(OS_WIN) 1070 #if defined(OS_WIN)
1067 command_line->AppendSwitchASCII(switches::kDeviceScaleFactor, 1071 command_line->AppendSwitchASCII(switches::kDeviceScaleFactor,
1068 base::DoubleToString(gfx::GetDPIScale())); 1072 base::DoubleToString(gfx::GetDPIScale()));
1069 #endif 1073 #endif
1070 1074
1071 AppendCompositorCommandLineFlags(command_line); 1075 AppendCompositorCommandLineFlags(command_line);
1072 } 1076 }
1073 1077
1074 void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( 1078 void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
1075 const CommandLine& browser_cmd, 1079 const base::CommandLine& browser_cmd,
1076 CommandLine* renderer_cmd) const { 1080 base::CommandLine* renderer_cmd) const {
1077 // Propagate the following switches to the renderer command line (along 1081 // Propagate the following switches to the renderer command line (along
1078 // with any associated values) if present in the browser command line. 1082 // with any associated values) if present in the browser command line.
1079 static const char* const kSwitchNames[] = { 1083 static const char* const kSwitchNames[] = {
1080 switches::kAllowInsecureWebSocketFromHttpsOrigin, 1084 switches::kAllowInsecureWebSocketFromHttpsOrigin,
1081 switches::kAllowLoopbackInPeerConnection, 1085 switches::kAllowLoopbackInPeerConnection,
1082 switches::kAudioBufferSize, 1086 switches::kAudioBufferSize,
1083 switches::kAuditAllHandles, 1087 switches::kAuditAllHandles,
1084 switches::kAuditHandles, 1088 switches::kAuditHandles,
1085 switches::kBlinkPlatformLogChannels, 1089 switches::kBlinkPlatformLogChannels,
1086 switches::kBlockCrossSiteDocuments, 1090 switches::kBlockCrossSiteDocuments,
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after
1720 1724
1721 // static 1725 // static
1722 bool RenderProcessHost::run_renderer_in_process() { 1726 bool RenderProcessHost::run_renderer_in_process() {
1723 return g_run_renderer_in_process_; 1727 return g_run_renderer_in_process_;
1724 } 1728 }
1725 1729
1726 // static 1730 // static
1727 void RenderProcessHost::SetRunRendererInProcess(bool value) { 1731 void RenderProcessHost::SetRunRendererInProcess(bool value) {
1728 g_run_renderer_in_process_ = value; 1732 g_run_renderer_in_process_ = value;
1729 1733
1730 CommandLine* command_line = CommandLine::ForCurrentProcess(); 1734 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
1731 if (value) { 1735 if (value) {
1732 if (!command_line->HasSwitch(switches::kLang)) { 1736 if (!command_line->HasSwitch(switches::kLang)) {
1733 // Modify the current process' command line to include the browser locale, 1737 // Modify the current process' command line to include the browser locale,
1734 // as the renderer expects this flag to be set. 1738 // as the renderer expects this flag to be set.
1735 const std::string locale = 1739 const std::string locale =
1736 GetContentClient()->browser()->GetApplicationLocale(); 1740 GetContentClient()->browser()->GetApplicationLocale();
1737 command_line->AppendSwitchASCII(switches::kLang, locale); 1741 command_line->AppendSwitchASCII(switches::kLang, locale);
1738 } 1742 }
1739 // TODO(piman): we should really send configuration through bools rather 1743 // TODO(piman): we should really send configuration through bools rather
1740 // than by parsing strings, i.e. sending an IPC rather than command line 1744 // than by parsing strings, i.e. sending an IPC rather than command line
(...skipping 16 matching lines...) Expand all
1757 1761
1758 // static 1762 // static
1759 bool RenderProcessHost::ShouldTryToUseExistingProcessHost( 1763 bool RenderProcessHost::ShouldTryToUseExistingProcessHost(
1760 BrowserContext* browser_context, const GURL& url) { 1764 BrowserContext* browser_context, const GURL& url) {
1761 // Experimental: 1765 // Experimental:
1762 // If --enable-strict-site-isolation or --site-per-process is enabled, do not 1766 // If --enable-strict-site-isolation or --site-per-process is enabled, do not
1763 // try to reuse renderer processes when over the limit. (We could allow pages 1767 // try to reuse renderer processes when over the limit. (We could allow pages
1764 // from the same site to share, if we knew what the given process was 1768 // from the same site to share, if we knew what the given process was
1765 // dedicated to. Allowing no sharing is simpler for now.) This may cause 1769 // dedicated to. Allowing no sharing is simpler for now.) This may cause
1766 // resource exhaustion issues if too many sites are open at once. 1770 // resource exhaustion issues if too many sites are open at once.
1767 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 1771 const base::CommandLine& command_line =
1772 *base::CommandLine::ForCurrentProcess();
1768 if (command_line.HasSwitch(switches::kEnableStrictSiteIsolation) || 1773 if (command_line.HasSwitch(switches::kEnableStrictSiteIsolation) ||
1769 command_line.HasSwitch(switches::kSitePerProcess)) 1774 command_line.HasSwitch(switches::kSitePerProcess))
1770 return false; 1775 return false;
1771 1776
1772 if (run_renderer_in_process()) 1777 if (run_renderer_in_process())
1773 return true; 1778 return true;
1774 1779
1775 // NOTE: Sometimes it's necessary to create more render processes than 1780 // NOTE: Sometimes it's necessary to create more render processes than
1776 // GetMaxRendererProcessCount(), for instance when we want to create 1781 // GetMaxRendererProcessCount(), for instance when we want to create
1777 // a renderer process for a browser context that has no existing 1782 // a renderer process for a browser context that has no existing
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1814 } 1819 }
1815 1820
1816 // static 1821 // static
1817 bool RenderProcessHost::ShouldUseProcessPerSite( 1822 bool RenderProcessHost::ShouldUseProcessPerSite(
1818 BrowserContext* browser_context, 1823 BrowserContext* browser_context,
1819 const GURL& url) { 1824 const GURL& url) {
1820 // Returns true if we should use the process-per-site model. This will be 1825 // Returns true if we should use the process-per-site model. This will be
1821 // the case if the --process-per-site switch is specified, or in 1826 // the case if the --process-per-site switch is specified, or in
1822 // process-per-site-instance for particular sites (e.g., WebUI). 1827 // process-per-site-instance for particular sites (e.g., WebUI).
1823 // Note that --single-process is handled in ShouldTryToUseExistingProcessHost. 1828 // Note that --single-process is handled in ShouldTryToUseExistingProcessHost.
1824 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 1829 const base::CommandLine& command_line =
1830 *base::CommandLine::ForCurrentProcess();
1825 if (command_line.HasSwitch(switches::kProcessPerSite)) 1831 if (command_line.HasSwitch(switches::kProcessPerSite))
1826 return true; 1832 return true;
1827 1833
1828 // We want to consolidate particular sites like WebUI even when we are using 1834 // We want to consolidate particular sites like WebUI even when we are using
1829 // the process-per-tab or process-per-site-instance models. 1835 // the process-per-tab or process-per-site-instance models.
1830 // Note: DevTools pages have WebUI type but should not reuse the same host. 1836 // Note: DevTools pages have WebUI type but should not reuse the same host.
1831 if (WebUIControllerFactoryRegistry::GetInstance()->UseWebUIForURL( 1837 if (WebUIControllerFactoryRegistry::GetInstance()->UseWebUIForURL(
1832 browser_context, url) && 1838 browser_context, url) &&
1833 !url.SchemeIs(kChromeDevToolsScheme)) { 1839 !url.SchemeIs(kChromeDevToolsScheme)) {
1834 return true; 1840 return true;
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
2345 } 2351 }
2346 2352
2347 void RenderProcessHostImpl::OnDeletedGpuMemoryBuffer( 2353 void RenderProcessHostImpl::OnDeletedGpuMemoryBuffer(
2348 gfx::GpuMemoryBufferType type, 2354 gfx::GpuMemoryBufferType type,
2349 const gfx::GpuMemoryBufferId& id) { 2355 const gfx::GpuMemoryBufferId& id) {
2350 DCHECK_CURRENTLY_ON(BrowserThread::UI); 2356 DCHECK_CURRENTLY_ON(BrowserThread::UI);
2351 GpuMemoryBufferImpl::DeletedByChildProcess(type, id, GetHandle()); 2357 GpuMemoryBufferImpl::DeletedByChildProcess(type, id, GetHandle());
2352 } 2358 }
2353 2359
2354 } // namespace content 2360 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_message_filter.cc ('k') | content/browser/renderer_host/render_view_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698