Index: content/test/content_test_launcher.cc |
=================================================================== |
--- content/test/content_test_launcher.cc (revision 103728) |
+++ content/test/content_test_launcher.cc (working copy) |
@@ -4,11 +4,25 @@ |
#include "content/test/test_launcher.h" |
+#include "base/base_paths.h" |
#include "base/command_line.h" |
#include "base/logging.h" |
+#include "base/path_service.h" |
#include "base/scoped_temp_dir.h" |
-#include "content/test/content_test_suite.h" |
+#include "base/test/test_suite.h" |
+#include "content/app/content_main.h" |
+#include "content/common/content_switches.h" |
+#include "content/shell/shell_main_delegate.h" |
+#if defined(OS_WIN) |
+#include "base/base_switches.h" |
+#include "content/app/startup_helper_win.h" |
+#include "content/common/sandbox_policy.h" |
+#include "sandbox/src/dep.h" |
+#include "sandbox/src/sandbox_factory.h" |
+#include "sandbox/src/sandbox_types.h" |
+#endif // defined(OS_WIN) |
+ |
class ContentTestLauncherDelegate : public test_launcher::TestLauncherDelegate { |
public: |
ContentTestLauncherDelegate() { |
@@ -32,15 +46,44 @@ |
test_launcher::kSingleProcessTestsAndChromeFlag) || |
command_line->HasSwitch(test_launcher::kGTestListTestsFlag) || |
command_line->HasSwitch(test_launcher::kGTestHelpFlag)) { |
- *return_code = ContentTestSuite(argc, argv).Run(); |
+#if defined(OS_WIN) |
jam
2011/10/04 22:21:13
we shouldn't copy all this code from chrome_test_l
Paweł Hajdan Jr.
2011/10/04 23:19:48
Done.
|
+ if (command_line->HasSwitch(test_launcher::kSingleProcessTestsFlag)) { |
+ // This is the browser process, so setup the sandbox broker. |
+ sandbox::BrokerServices* broker_services = |
+ sandbox::SandboxFactory::GetBrokerServices(); |
+ if (broker_services) { |
+ sandbox::InitBrokerServices(broker_services); |
+ // Precreate the desktop and window station used by the renderers. |
+ sandbox::TargetPolicy* policy = broker_services->CreatePolicy(); |
+ sandbox::ResultCode result = policy->CreateAlternateDesktop(true); |
+ CHECK(sandbox::SBOX_ERROR_FAILED_TO_SWITCH_BACK_WINSTATION != result); |
+ policy->Release(); |
+ } |
+ } |
+#endif |
+ *return_code = base::TestSuite(argc, argv).Run(); |
return true; |
} |
+#if defined(OS_WIN) |
+ if (command_line->HasSwitch(switches::kProcessType)) { |
+ sandbox::SandboxInterfaceInfo sandbox_info = {0}; |
+ content::InitializeSandboxInfo(&sandbox_info); |
+ ShellMainDelegate delegate; |
+ *return_code = content::ContentMain(GetModuleHandle(NULL), &sandbox_info, &delegate); |
+ return true; |
+ } |
+#endif // defined(OS_WIN) |
+ |
return false; |
} |
virtual bool AdjustChildProcessCommandLine( |
CommandLine* command_line) OVERRIDE { |
+ FilePath file_exe; |
+ if (!PathService::Get(base::FILE_EXE, &file_exe)) |
+ return false; |
+ command_line->AppendSwitchPath(switches::kBrowserSubprocessPath, file_exe); |
return true; |
} |