From 10db2bce4e760ab1eff7440b4023e53085a2d140 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 18 Oct 2018 20:22:42 -0400 Subject: [PATCH] fix: loading of devtools extensions on startup (#13844) * 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 1171a498648..5bd9f81bd28 100644 --- a/lib/browser/chrome-extension.js +++ b/lib/browser/chrome-extension.js @@ -360,20 +360,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) @@ -429,4 +415,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) + } + } })