Index: headless/app/headless_shell.cc |
diff --git a/headless/app/headless_shell.cc b/headless/app/headless_shell.cc |
index d6d6adeb758a5ef06ce2821d3973911297b22c74..f36b7a8c3c0404d9c965542124add07cdeb1dfca 100644 |
--- a/headless/app/headless_shell.cc |
+++ b/headless/app/headless_shell.cc |
@@ -5,6 +5,7 @@ |
#include <memory> |
#include <sstream> |
#include <string> |
+#include <utility> |
#include "base/base64.h" |
#include "base/base_switches.h" |
@@ -17,6 +18,7 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/numerics/safe_conversions.h" |
#include "base/strings/string_number_conversions.h" |
+#include "content/public/app/content_main.h" |
#include "headless/app/headless_shell.h" |
#include "headless/app/headless_shell_switches.h" |
#include "headless/public/headless_devtools_target.h" |
@@ -26,6 +28,10 @@ |
#include "net/base/net_errors.h" |
#include "ui/gfx/geometry/size.h" |
+#if defined(OS_WIN) |
+#include "sandbox/win/src/sandbox_types.h" |
+#endif |
+ |
namespace headless { |
namespace { |
// Address where to listen to incoming DevTools connections. |
@@ -430,11 +436,20 @@ bool ValidateCommandLine(const base::CommandLine& command_line) { |
return true; |
} |
+#if defined(OS_WIN) |
+int HeadlessShellMain(HINSTANCE instance, |
+ sandbox::SandboxInterfaceInfo* sandbox_info) { |
+ base::CommandLine::Init(0, nullptr); |
+ HeadlessBrowser::Options::Builder builder(0, nullptr); |
+ builder.SetInstance(instance); |
+ builder.SetSandboxInfo(std::move(sandbox_info)); |
+#else |
int HeadlessShellMain(int argc, const char** argv) { |
base::CommandLine::Init(argc, argv); |
RunChildProcessIfNeeded(argc, argv); |
- HeadlessShell shell; |
HeadlessBrowser::Options::Builder builder(argc, argv); |
+#endif // defined(OS_WIN) |
+ HeadlessShell shell; |
// Enable devtools if requested. |
const base::CommandLine& command_line( |
@@ -442,7 +457,7 @@ int HeadlessShellMain(int argc, const char** argv) { |
if (!ValidateCommandLine(command_line)) |
return EXIT_FAILURE; |
- if (command_line.HasSwitch(::switches::kEnableCrashReporter)) |
+ if (command_line.HasSwitch(switches::kEnableCrashReporter)) |
builder.SetCrashReporterEnabled(true); |
if (command_line.HasSwitch(switches::kCrashDumpsDir)) { |
builder.SetCrashDumpsDir( |
@@ -524,4 +539,12 @@ int HeadlessShellMain(int argc, const char** argv) { |
base::Bind(&HeadlessShell::OnStart, base::Unretained(&shell))); |
} |
+int HeadlessShellMain(const content::ContentMainParams& params) { |
+#if defined(OS_WIN) |
+ return HeadlessShellMain(params.instance, params.sandbox_info); |
+#else |
+ return HeadlessShellMain(params.argc, params.argv); |
+#endif |
+} |
+ |
} // namespace headless |