| OLD | NEW | 
|---|
| 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/public/common/sandbox_init.h" | 5 #include "content/public/common/sandbox_init.h" | 
| 6 | 6 | 
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" | 
| 8 #include "base/logging.h" | 8 #include "base/logging.h" | 
| 9 #include "content/common/sandbox_win.h" |  | 
| 10 #include "content/public/common/content_switches.h" | 9 #include "content/public/common/content_switches.h" | 
| 11 #include "sandbox/win/src/sandbox.h" |  | 
| 12 #include "sandbox/win/src/sandbox_types.h" |  | 
| 13 | 10 | 
| 14 namespace content { | 11 namespace content { | 
| 15 | 12 | 
| 16 bool InitializeSandbox(sandbox::SandboxInterfaceInfo* sandbox_info) { | 13 bool InitializeSandbox(sandbox::SandboxInterfaceInfo* sandbox_info) {\ | 
| 17   const base::CommandLine& command_line = | 14   // Sandbox is disabled. | 
| 18       *base::CommandLine::ForCurrentProcess(); | 15   return true; | 
| 19   sandbox::BrokerServices* broker_services = sandbox_info->broker_services; |  | 
| 20   if (broker_services) { |  | 
| 21     if (!InitBrokerServices(broker_services)) |  | 
| 22       return false; |  | 
| 23 |  | 
| 24     // IMPORTANT: This piece of code needs to run as early as possible in the |  | 
| 25     // process because it will initialize the sandbox broker, which requires the |  | 
| 26     // process to swap its window station. During this time all the UI will be |  | 
| 27     // broken. This has to run before threads and windows are created. |  | 
| 28     if (!command_line.HasSwitch(switches::kNoSandbox)) { |  | 
| 29       // Precreate the desktop and window station used by the renderers. |  | 
| 30       sandbox::TargetPolicy* policy = broker_services->CreatePolicy(); |  | 
| 31       sandbox::ResultCode result = policy->CreateAlternateDesktop(true); |  | 
| 32       CHECK(sandbox::SBOX_ERROR_FAILED_TO_SWITCH_BACK_WINSTATION != result); |  | 
| 33       policy->Release(); |  | 
| 34     } |  | 
| 35     return true; |  | 
| 36   } |  | 
| 37 |  | 
| 38   if (command_line.HasSwitch(switches::kNoSandbox)) |  | 
| 39     return true; |  | 
| 40 |  | 
| 41   sandbox::TargetServices* target_services = sandbox_info->target_services; |  | 
| 42   return InitTargetServices(target_services); |  | 
| 43 } | 16 } | 
| 44 | 17 | 
| 45 }  // namespace content | 18 }  // namespace content | 
| OLD | NEW | 
|---|