Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(551)

Side by Side Diff: third_party/WebKit/Source/devtools/scripts/chrome_debug_launcher/launch_chrome.js

Issue 2337713002: DevTools: find and launch chrome in debug mode (Closed)
Patch Set: fix copyright year Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 var childProcess = require("child_process");
6 var fs = require("fs");
7 var path = require("path");
8 var shell = childProcess.execSync;
9
10 var remoteDebuggingPort = parseInt(process.env.REMOTE_DEBUGGING_PORT, 10) || 922 2;
11 var serverPort = parseInt(process.env.PORT, 10) || 8090;
12
13 var chromeArgs = [
14 `--remote-debugging-port=${remoteDebuggingPort}`,
15 `--no-first-run`,
16 `http://localhost:${remoteDebuggingPort}#http://localhost:${serverPort}/fron t_end/inspector.html?experiments=true`,
17 `https://devtools.chrome.com`
18 ].concat(process.argv.slice(2));
19
20 if (process.platform === "win32") {
21 launchChromeWindows();
22 return;
23 }
24 if (process.platform === "darwin") {
25 launchChromeMac();
26 return;
27 }
28 if (process.platform === "linux") {
29 launchChromeLinux();
30 return;
31 }
32
33 throw new Error(`Unrecognized platform detected: ${process.platform}`);
34
35 function launchChromeWindows()
36 {
37 var chromeCanaryPath;
38 var suffix = "\\Google\\Chrome SxS\\Application\\chrome.exe";
39 var prefixes = [process.env.LOCALAPPDATA, process.env.PROGRAMFILES, process. env["PROGRAMFILES(X86)"]];
40 for (var i = 0; i < prefixes.length; i++) {
41 var prefix = prefixes[i];
42 try {
43 chromeCanaryPath = path.join(prefix, suffix);
44 fs.accessSync(chromeCanaryPath);
45 break;
46 } catch (e) {
47 }
48 }
49 launchChrome(chromeCanaryPath, chromeArgs);
50 }
51
52 function launchChromeMac()
53 {
54 var lsregister = "/System/Library/Frameworks/CoreServices.framework/Versions /A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister";
55 var chromeCanaryPath = shellOutput(`${lsregister} -dump | grep -i 'applicati ons/google chrome canary.app$' | awk '{$1=""; print $0}' | head -n 1`);
56 var chromeCanaryExecPath = `${chromeCanaryPath}/Contents/MacOS/Google Chrome Canary`;
57 var tmpProfileDir = shellOutput("mktemp -d -t devtools");
58 chromeArgs.push(`--user-data-dir=${tmpProfileDir}`);
59 launchChrome(chromeCanaryExecPath, chromeArgs, () => shell(`rm -r ${tmpProfi leDir}`));
60 }
61
62 function launchChromeLinux()
63 {
64 var tmpProfileDir = shellOutput("mktemp -d -t devtools.XXXXXXXXXX");
65 chromeArgs.push(`--user-data-dir=${tmpProfileDir}`);
66 launchChrome(process.env.CHROMIUM_PATH, chromeArgs, () => shell(`rm -r ${tmp ProfileDir}`));
67 }
68
69 function launchChrome(filePath, chromeArgs, cleanup)
70 {
71 console.log(`Launching Chrome from ${filePath}`);
72 console.log("Chrome args:", chromeArgs.join(" "), "\n");
73 var child;
74 try {
75 child = childProcess.spawn(filePath, chromeArgs, {
76 stdio: "ignore",
77 });
78 } catch (error) {
79 onLaunchChromeError();
80 }
81 child.on("error", onLaunchChromeError);
82 child.on("exit", onExit);
83 function onExit(code)
84 {
85 if (cleanup)
86 cleanup();
87 console.log("Exited Chrome with code", code);
88 }
89 }
90
91 function onLaunchChromeError()
92 {
93 if (process.platform !== "linux") {
94 console.log("Cannot find Chrome Canary on your computer");
95 console.log("Install Chome Canary at:");
96 console.log("https://www.google.com/chrome/browser/canary.html\n");
97 } else {
98 console.log("The environment variable CHROMIUM_PATH must be set to execu table of a build of Chromium");
99 console.log("If you do not have a recent build of chromium, you can get one from:");
100 console.log("https://download-chromium.appspot.com/\n");
101 }
102 }
103
104 function print(buffer)
105 {
106 var string = buffer.toString();
107 console.log(string);
108 return string;
109 }
110
111 function shellOutput(command)
112 {
113 return shell(command).toString().trim();
114 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698