From 69df19f1957dda85457b3c32aaf2544b086e0de4 Mon Sep 17 00:00:00 2001 From: Etienne Dusseault Date: Tue, 15 Dec 2020 03:17:13 +0800 Subject: [PATCH] Disable console in contentscript (#10040) * Maintain console logging in dev mode Co-authored-by: kumavis Co-authored-by: Erik Marks Co-authored-by: Mark Stacey --- app/manifest/_base.json | 1 + app/scripts/contentscript.js | 10 +++++----- app/scripts/disable-console.js | 9 +++++++++ development/build/scripts.js | 18 ++++++++++++++++++ 4 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 app/scripts/disable-console.js diff --git a/app/manifest/_base.json b/app/manifest/_base.json index 5274261b8..416e6918a 100644 --- a/app/manifest/_base.json +++ b/app/manifest/_base.json @@ -38,6 +38,7 @@ { "matches": ["file://*/*", "http://*/*", "https://*/*"], "js": [ + "disable-console.js", "globalthis.js", "lockdown.js", "runLockdown.js", diff --git a/app/scripts/contentscript.js b/app/scripts/contentscript.js index 5f5f25f9d..7e55faec4 100644 --- a/app/scripts/contentscript.js +++ b/app/scripts/contentscript.js @@ -38,8 +38,8 @@ function injectScript(content) { scriptTag.textContent = content container.insertBefore(scriptTag, container.children[0]) container.removeChild(scriptTag) - } catch (e) { - console.error('MetaMask provider injection failed.', e) + } catch (error) { + console.error('MetaMask: Provider injection failed.', error) } } @@ -85,7 +85,7 @@ function forwardTrafficBetweenMuxes(channelName, muxA, muxB) { const channelB = muxB.createStream(channelName) pump(channelA, channelB, channelA, (error) => console.debug( - `MetaMask muxed traffic for channel "${channelName}" failed.`, + `MetaMask: Muxed traffic for channel "${channelName}" failed.`, error, ), ) @@ -99,7 +99,7 @@ function forwardTrafficBetweenMuxes(channelName, muxA, muxB) { */ function logStreamDisconnectWarning(remoteLabel, error) { console.debug( - `MetaMask Contentscript: Lost connection to "${remoteLabel}".`, + `MetaMask: Content script lost connection to "${remoteLabel}".`, error, ) } @@ -223,7 +223,7 @@ function blockedDomainCheck() { * Redirects the current page to a phishing information page */ function redirectToPhishingWarning() { - console.log('MetaMask - routing to Phishing Warning component') + console.debug('MetaMask: Routing to Phishing Warning component.') const extensionURL = extension.runtime.getURL('phishing.html') window.location.href = `${extensionURL}#${querystring.stringify({ hostname: window.location.hostname, diff --git a/app/scripts/disable-console.js b/app/scripts/disable-console.js new file mode 100644 index 000000000..bb7ce8e24 --- /dev/null +++ b/app/scripts/disable-console.js @@ -0,0 +1,9 @@ +// Disable console.log in contentscript to prevent SES/lockdown logging to external page +// eslint-disable-next-line import/unambiguous +if ( + !(typeof process !== 'undefined' && process.env.METAMASK_DEBUG) && + typeof console !== undefined +) { + console.log = () => undefined + console.info = () => undefined +} diff --git a/development/build/scripts.js b/development/build/scripts.js index 2f6b577e4..9236dbb7e 100644 --- a/development/build/scripts.js +++ b/development/build/scripts.js @@ -115,6 +115,7 @@ function createScriptTasks({ browserPlatforms, livereload }) { }), ) }) + // inpage must be built before contentscript // because inpage bundle result is included inside contentscript const contentscriptSubtask = createTask( @@ -122,6 +123,12 @@ function createScriptTasks({ browserPlatforms, livereload }) { createTaskForBuildJsExtensionContentscript({ devMode, testing }), ) + // this can run whenever + const disableConsoleSubtask = createTask( + `${taskPrefix}:disable-console`, + createTaskForBuildJsExtensionDisableConsole({ devMode }), + ) + // task for initiating livereload const initiateLiveReload = async () => { if (devMode) { @@ -142,6 +149,7 @@ function createScriptTasks({ browserPlatforms, livereload }) { const allSubtasks = [ ...standardSubtasks, contentscriptSubtask, + disableConsoleSubtask, ].map((subtask) => runInChildProcess(subtask)) // const allSubtasks = [...standardSubtasks, contentscriptSubtask].map(subtask => (subtask)) // make a parent task that runs each task in a child thread @@ -165,6 +173,16 @@ function createScriptTasks({ browserPlatforms, livereload }) { }) } + function createTaskForBuildJsExtensionDisableConsole({ devMode }) { + const filename = 'disable-console' + return bundleTask({ + label: filename, + filename: `${filename}.js`, + filepath: `./app/scripts/${filename}.js`, + devMode, + }) + } + function createTaskForBuildJsExtensionContentscript({ devMode, testing }) { const inpage = 'inpage' const contentscript = 'contentscript'