From 906436f31b91e3db6acb6e9a98233d61650942c9 Mon Sep 17 00:00:00 2001 From: "trop[bot]" Date: Thu, 18 Oct 2018 19:13:01 -0700 Subject: [PATCH] fix: loading of devtools extensions on startup (backport: 3-0-x) (#15264) * Fix loading of devtools extensions on startup The persisted DevTools Extensions were not being loaded correctly at startup. The `addDevToolsExtension` function was not defined when it was being called. An error was being thrown and ignored, so the whole thing would fail silently. I moved the code to load the extensions to the end of the event handler, so now it works. * fixup: remove trailing spaces to unblock CI * fixup: add logging when the Electron Enable Logging env var is set * Fix linter error on undefined srcDirectory * fixup: catch exception when loading extension * Revert "fixup: catch exception when loading extension" This reverts commit 42c2cf95bcaab8abfc5fbecbe4365d3adfe36d5b. --- lib/browser/chrome-extension.js | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/lib/browser/chrome-extension.js b/lib/browser/chrome-extension.js index 4132aedadd75..efb99b8c972b 100644 --- a/lib/browser/chrome-extension.js +++ b/lib/browser/chrome-extension.js @@ -357,20 +357,6 @@ app.on('will-quit', function () { // We can not use protocol or BrowserWindow until app is ready. app.once('ready', function () { - // Load persisted extensions. - loadedDevToolsExtensionsPath = path.join(app.getPath('userData'), 'DevTools Extensions') - try { - const loadedDevToolsExtensions = JSON.parse(fs.readFileSync(loadedDevToolsExtensionsPath)) - if (Array.isArray(loadedDevToolsExtensions)) { - for (const srcDirectory of loadedDevToolsExtensions) { - // Start background pages and set content scripts. - BrowserWindow.addDevToolsExtension(srcDirectory) - } - } - } catch (error) { - // Ignore error - } - // The public API to add/remove extensions. BrowserWindow.addExtension = function (srcDirectory) { const manifest = getManifestFromPath(srcDirectory) @@ -426,4 +412,21 @@ app.once('ready', function () { }) return devExtensions } + + // Load persisted extensions. + loadedDevToolsExtensionsPath = path.join(app.getPath('userData'), 'DevTools Extensions') + try { + const loadedDevToolsExtensions = JSON.parse(fs.readFileSync(loadedDevToolsExtensionsPath)) + if (Array.isArray(loadedDevToolsExtensions)) { + for (const srcDirectory of loadedDevToolsExtensions) { + // Start background pages and set content scripts. + BrowserWindow.addDevToolsExtension(srcDirectory) + } + } + } catch (error) { + if (process.env.ELECTRON_ENABLE_LOGGING) { + console.error('Failed to load browser extensions from directory:', loadedDevToolsExtensionsPath) + console.error(error) + } + } })