| Index: third_party/WebKit/Source/devtools/scripts/chrome_debug_launcher/launch_chrome.js
|
| diff --git a/third_party/WebKit/Source/devtools/scripts/chrome_debug_launcher/launch_chrome.js b/third_party/WebKit/Source/devtools/scripts/chrome_debug_launcher/launch_chrome.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ca2a0fddce19a33741bf379c56eb31d5a66d3d5e
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/devtools/scripts/chrome_debug_launcher/launch_chrome.js
|
| @@ -0,0 +1,114 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +var childProcess = require("child_process");
|
| +var fs = require("fs");
|
| +var path = require("path");
|
| +var shell = childProcess.execSync;
|
| +
|
| +var remoteDebuggingPort = parseInt(process.env.REMOTE_DEBUGGING_PORT, 10) || 9222;
|
| +var serverPort = parseInt(process.env.PORT, 10) || 8090;
|
| +
|
| +var chromeArgs = [
|
| + `--remote-debugging-port=${remoteDebuggingPort}`,
|
| + `--no-first-run`,
|
| + `http://localhost:${remoteDebuggingPort}#http://localhost:${serverPort}/front_end/inspector.html?experiments=true`,
|
| + `https://devtools.chrome.com`
|
| +].concat(process.argv.slice(2));
|
| +
|
| +if (process.platform === "win32") {
|
| + launchChromeWindows();
|
| + return;
|
| +}
|
| +if (process.platform === "darwin") {
|
| + launchChromeMac();
|
| + return;
|
| +}
|
| +if (process.platform === "linux") {
|
| + launchChromeLinux();
|
| + return;
|
| +}
|
| +
|
| +throw new Error(`Unrecognized platform detected: ${process.platform}`);
|
| +
|
| +function launchChromeWindows()
|
| +{
|
| + var chromeCanaryPath;
|
| + var suffix = "\\Google\\Chrome SxS\\Application\\chrome.exe";
|
| + var prefixes = [process.env.LOCALAPPDATA, process.env.PROGRAMFILES, process.env["PROGRAMFILES(X86)"]];
|
| + for (var i = 0; i < prefixes.length; i++) {
|
| + var prefix = prefixes[i];
|
| + try {
|
| + chromeCanaryPath = path.join(prefix, suffix);
|
| + fs.accessSync(chromeCanaryPath);
|
| + break;
|
| + } catch (e) {
|
| + }
|
| + }
|
| + launchChrome(chromeCanaryPath, chromeArgs);
|
| +}
|
| +
|
| +function launchChromeMac()
|
| +{
|
| + var lsregister = "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister";
|
| + var chromeCanaryPath = shellOutput(`${lsregister} -dump | grep -i 'applications/google chrome canary.app$' | awk '{$1=""; print $0}' | head -n 1`);
|
| + var chromeCanaryExecPath = `${chromeCanaryPath}/Contents/MacOS/Google Chrome Canary`;
|
| + var tmpProfileDir = shellOutput("mktemp -d -t devtools");
|
| + chromeArgs.push(`--user-data-dir=${tmpProfileDir}`);
|
| + launchChrome(chromeCanaryExecPath, chromeArgs, () => shell(`rm -r ${tmpProfileDir}`));
|
| +}
|
| +
|
| +function launchChromeLinux()
|
| +{
|
| + var tmpProfileDir = shellOutput("mktemp -d -t devtools.XXXXXXXXXX");
|
| + chromeArgs.push(`--user-data-dir=${tmpProfileDir}`);
|
| + launchChrome(process.env.CHROMIUM_PATH, chromeArgs, () => shell(`rm -r ${tmpProfileDir}`));
|
| +}
|
| +
|
| +function launchChrome(filePath, chromeArgs, cleanup)
|
| +{
|
| + console.log(`Launching Chrome from ${filePath}`);
|
| + console.log("Chrome args:", chromeArgs.join(" "), "\n");
|
| + var child;
|
| + try {
|
| + child = childProcess.spawn(filePath, chromeArgs, {
|
| + stdio: "ignore",
|
| + });
|
| + } catch (error) {
|
| + onLaunchChromeError();
|
| + }
|
| + child.on("error", onLaunchChromeError);
|
| + child.on("exit", onExit);
|
| + function onExit(code)
|
| + {
|
| + if (cleanup)
|
| + cleanup();
|
| + console.log("Exited Chrome with code", code);
|
| + }
|
| +}
|
| +
|
| +function onLaunchChromeError()
|
| +{
|
| + if (process.platform !== "linux") {
|
| + console.log("Cannot find Chrome Canary on your computer");
|
| + console.log("Install Chome Canary at:");
|
| + console.log("https://www.google.com/chrome/browser/canary.html\n");
|
| + } else {
|
| + console.log("The environment variable CHROMIUM_PATH must be set to executable of a build of Chromium");
|
| + console.log("If you do not have a recent build of chromium, you can get one from:");
|
| + console.log("https://download-chromium.appspot.com/\n");
|
| + }
|
| +}
|
| +
|
| +function print(buffer)
|
| +{
|
| + var string = buffer.toString();
|
| + console.log(string);
|
| + return string;
|
| +}
|
| +
|
| +function shellOutput(command)
|
| +{
|
| + return shell(command).toString().trim();
|
| +}
|
|
|