| OLD | NEW | 
|---|
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "chrome/browser/renderer_host/browser_render_process_host.h" | 8 #include "chrome/browser/renderer_host/browser_render_process_host.h" | 
| 9 | 9 | 
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" | 
| (...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 448   const std::string locale = g_browser_process->GetApplicationLocale(); | 448   const std::string locale = g_browser_process->GetApplicationLocale(); | 
| 449   command_line->AppendSwitchWithValue(switches::kLang, ASCIIToWide(locale)); | 449   command_line->AppendSwitchWithValue(switches::kLang, ASCIIToWide(locale)); | 
| 450 | 450 | 
| 451   // If we run FieldTrials, we want to pass to their state to the renderer so | 451   // If we run FieldTrials, we want to pass to their state to the renderer so | 
| 452   // that it can act in accordance with each state, or record histograms | 452   // that it can act in accordance with each state, or record histograms | 
| 453   // relating to the FieldTrial states. | 453   // relating to the FieldTrial states. | 
| 454   std::string field_trial_states; | 454   std::string field_trial_states; | 
| 455   FieldTrialList::StatesToString(&field_trial_states); | 455   FieldTrialList::StatesToString(&field_trial_states); | 
| 456   if (!field_trial_states.empty()) { | 456   if (!field_trial_states.empty()) { | 
| 457     command_line->AppendSwitchWithValue(switches::kForceFieldTestNameAndValue, | 457     command_line->AppendSwitchWithValue(switches::kForceFieldTestNameAndValue, | 
| 458         ASCIIToWide(field_trial_states)); | 458         field_trial_states); | 
| 459   } | 459   } | 
| 460 | 460 | 
| 461   // A command prefix is something prepended to the command line of the spawned | 461   // A command prefix is something prepended to the command line of the spawned | 
| 462   // process. It is supported only on POSIX systems. | 462   // process. It is supported only on POSIX systems. | 
| 463 #if defined(OS_POSIX) | 463 #if defined(OS_POSIX) | 
| 464   *has_cmd_prefix = | 464   *has_cmd_prefix = | 
| 465       browser_command_line.HasSwitch(switches::kRendererCmdPrefix); | 465       browser_command_line.HasSwitch(switches::kRendererCmdPrefix); | 
| 466   if (*has_cmd_prefix) { | 466   if (*has_cmd_prefix) { | 
| 467     // launch the renderer child with some prefix (usually "gdb --args") | 467     // launch the renderer child with some prefix (usually "gdb --args") | 
| 468     const std::wstring prefix = | 468     const std::wstring prefix = | 
| 469         browser_command_line.GetSwitchValue(switches::kRendererCmdPrefix); | 469         browser_command_line.GetSwitchValue(switches::kRendererCmdPrefix); | 
| 470     command_line->PrependWrapper(prefix); | 470     command_line->PrependWrapper(prefix); | 
| 471   } | 471   } | 
| 472 #else | 472 #else | 
| 473   *has_cmd_prefix = false; | 473   *has_cmd_prefix = false; | 
| 474 #endif  // defined(OS_POSIX) | 474 #endif  // defined(OS_POSIX) | 
| 475 | 475 | 
| 476   ChildProcessHost::SetCrashReporterCommandLine(command_line); | 476   ChildProcessHost::SetCrashReporterCommandLine(command_line); | 
| 477 | 477 | 
| 478   const std::wstring& profile_path = | 478   const std::string& profile_path = | 
| 479       browser_command_line.GetSwitchValue(switches::kUserDataDir); | 479       browser_command_line.GetSwitchValueASCII(switches::kUserDataDir); | 
| 480   if (!profile_path.empty()) | 480   if (!profile_path.empty()) | 
| 481     command_line->AppendSwitchWithValue(switches::kUserDataDir, profile_path); | 481     command_line->AppendSwitchWithValue(switches::kUserDataDir, profile_path); | 
| 482 } | 482 } | 
| 483 | 483 | 
| 484 void BrowserRenderProcessHost::PropogateBrowserCommandLineToRenderer( | 484 void BrowserRenderProcessHost::PropogateBrowserCommandLineToRenderer( | 
| 485     const CommandLine& browser_cmd, | 485     const CommandLine& browser_cmd, | 
| 486     CommandLine* renderer_cmd) const { | 486     CommandLine* renderer_cmd) const { | 
| 487   // Propagate the following switches to the renderer command line (along | 487   // Propagate the following switches to the renderer command line (along | 
| 488   // with any associated values) if present in the browser command line. | 488   // with any associated values) if present in the browser command line. | 
| 489   static const char* const switch_names[] = { | 489   static const char* const switch_names[] = { | 
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 534     switches::kChromeFrame, | 534     switches::kChromeFrame, | 
| 535 #if defined(OS_MACOSX) | 535 #if defined(OS_MACOSX) | 
| 536     // Allow this to be set when invoking the browser and relayed along. | 536     // Allow this to be set when invoking the browser and relayed along. | 
| 537     switches::kEnableSandboxLogging, | 537     switches::kEnableSandboxLogging, | 
| 538 #endif | 538 #endif | 
| 539   }; | 539   }; | 
| 540 | 540 | 
| 541   for (size_t i = 0; i < arraysize(switch_names); ++i) { | 541   for (size_t i = 0; i < arraysize(switch_names); ++i) { | 
| 542     if (browser_cmd.HasSwitch(switch_names[i])) { | 542     if (browser_cmd.HasSwitch(switch_names[i])) { | 
| 543       renderer_cmd->AppendSwitchWithValue(switch_names[i], | 543       renderer_cmd->AppendSwitchWithValue(switch_names[i], | 
| 544           browser_cmd.GetSwitchValue(switch_names[i])); | 544           browser_cmd.GetSwitchValueASCII(switch_names[i])); | 
| 545     } | 545     } | 
| 546   } | 546   } | 
| 547 } | 547 } | 
| 548 | 548 | 
| 549 #if defined(OS_WIN) | 549 #if defined(OS_WIN) | 
| 550 | 550 | 
| 551 base::ProcessHandle BrowserRenderProcessHost::ExecuteRenderer( | 551 base::ProcessHandle BrowserRenderProcessHost::ExecuteRenderer( | 
| 552     CommandLine* cmd_line, | 552     CommandLine* cmd_line, | 
| 553     bool has_cmd_prefix) { | 553     bool has_cmd_prefix) { | 
| 554   return sandbox::StartProcess(cmd_line); | 554   return sandbox::StartProcess(cmd_line); | 
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1040     profile()->GetExtensionMessageService()->RemoveEventListener( | 1040     profile()->GetExtensionMessageService()->RemoveEventListener( | 
| 1041         event_name, id()); | 1041         event_name, id()); | 
| 1042   } | 1042   } | 
| 1043 } | 1043 } | 
| 1044 | 1044 | 
| 1045 void BrowserRenderProcessHost::OnExtensionCloseChannel(int port_id) { | 1045 void BrowserRenderProcessHost::OnExtensionCloseChannel(int port_id) { | 
| 1046   if (profile()->GetExtensionMessageService()) { | 1046   if (profile()->GetExtensionMessageService()) { | 
| 1047     profile()->GetExtensionMessageService()->CloseChannel(port_id); | 1047     profile()->GetExtensionMessageService()->CloseChannel(port_id); | 
| 1048   } | 1048   } | 
| 1049 } | 1049 } | 
| OLD | NEW | 
|---|