Browse Source

Merge pull request #9983 from electron/devtools-mixed-sandbox

Fix devtools open in mixed sandbox
Kevin Sawicki 7 years ago
parent
commit
48f5a66f87

+ 3 - 1
atom/app/atom_main_delegate.cc

@@ -154,7 +154,9 @@ content::ContentBrowserClient* AtomMainDelegate::CreateContentBrowserClient() {
 content::ContentRendererClient*
     AtomMainDelegate::CreateContentRendererClient() {
   if (base::CommandLine::ForCurrentProcess()->HasSwitch(
-        switches::kEnableSandbox)) {
+        switches::kEnableSandbox) ||
+      !base::CommandLine::ForCurrentProcess()->HasSwitch(
+        ::switches::kNoSandbox)) {
     renderer_client_.reset(new AtomSandboxedRendererClient);
   } else {
     renderer_client_.reset(new AtomRendererClient);

+ 0 - 3
docs/api/app.md

@@ -927,9 +927,6 @@ Enables mixed sandbox mode on the app.
 
 This method can only be called before app is ready.
 
-**Note:** The devtools will no longer open after mixed sandbox mode has been
-enabled (i.e `openDevTools` becomes a no-op).
-
 ### `app.dock.bounce([type])` _macOS_
 
 * `type` String (optional) - Can be `critical` or `informational`. The default is

+ 3 - 0
spec/api-app-spec.js

@@ -641,6 +641,9 @@ describe('app module', function () {
             assert.equal(argv.noSandbox.includes('--enable-sandbox'), false)
             assert.equal(argv.noSandbox.includes('--no-sandbox'), true)
 
+            assert.equal(argv.noSandboxDevtools, true)
+            assert.equal(argv.sandboxDevtools, true)
+
             done()
           })
         })

+ 17 - 2
spec/fixtures/api/mixed-sandbox-app/main.js

@@ -34,13 +34,16 @@ app.once('ready', () => {
 
   const argv = {
     sandbox: null,
-    noSandbox: null
+    noSandbox: null,
+    sandboxDevtools: null,
+    noSandboxDevtools: null
   }
 
   let connected = false
 
   function finish () {
-    if (connected && argv.sandbox != null && argv.noSandbox != null) {
+    if (connected && argv.sandbox != null && argv.noSandbox != null &&
+        argv.noSandboxDevtools != null && argv.sandboxDevtools != null) {
       client.once('end', () => {
         app.exit(0)
       })
@@ -54,6 +57,18 @@ app.once('ready', () => {
     finish()
   })
 
+  noSandboxWindow.webContents.once('devtools-opened', () => {
+    argv.noSandboxDevtools = true
+    finish()
+  })
+  noSandboxWindow.webContents.openDevTools()
+
+  sandboxWindow.webContents.once('devtools-opened', () => {
+    argv.sandboxDevtools = true
+    finish()
+  })
+  sandboxWindow.webContents.openDevTools()
+
   ipcMain.on('argv', (event, value) => {
     if (event.sender === sandboxWindow.webContents) {
       argv.sandbox = value