diff options
author | kumavis <kumavis@users.noreply.github.com> | 2016-06-25 02:25:03 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-25 02:25:03 +0800 |
commit | bec7bde88376d14bcd15087e8b3dea4b2876315e (patch) | |
tree | bfaeb25f7088f5f7716dbf24360a767ec2e7eb01 | |
parent | ac2269b16ebc97a75e06347d5a042caad3cfed54 (diff) | |
parent | fce748c11813d9bdf1a73f704893319bb40b4597 (diff) | |
download | tangerine-wallet-browser-bec7bde88376d14bcd15087e8b3dea4b2876315e.tar.gz tangerine-wallet-browser-bec7bde88376d14bcd15087e8b3dea4b2876315e.tar.zst tangerine-wallet-browser-bec7bde88376d14bcd15087e8b3dea4b2876315e.zip |
Merge pull request #319 from MetaMask/pdf
contentscript - skip web3 injection if domain appears to be a pdf
-rw-r--r-- | app/scripts/contentscript.js | 80 |
1 files changed, 48 insertions, 32 deletions
diff --git a/app/scripts/contentscript.js b/app/scripts/contentscript.js index ad90059b7..5d31e3c38 100644 --- a/app/scripts/contentscript.js +++ b/app/scripts/contentscript.js @@ -1,36 +1,52 @@ const LocalMessageDuplexStream = require('./lib/local-message-stream.js') const PortStream = require('./lib/port-stream.js') const ObjectMultiplex = require('./lib/obj-multiplex') +const urlUtil = require('url') -// inject in-page script -var scriptTag = document.createElement('script') -scriptTag.src = chrome.extension.getURL('scripts/inpage.js') -scriptTag.onload = function () { this.parentNode.removeChild(this) } -var container = document.head || document.documentElement -// append as first child -container.insertBefore(scriptTag, container.children[0]) - -// setup communication to page and plugin -var pageStream = new LocalMessageDuplexStream({ - name: 'contentscript', - target: 'inpage', -}) -pageStream.on('error', console.error.bind(console)) -var pluginPort = chrome.runtime.connect({name: 'contentscript'}) -var pluginStream = new PortStream(pluginPort) -pluginStream.on('error', console.error.bind(console)) - -// forward communication plugin->inpage -pageStream.pipe(pluginStream).pipe(pageStream) - -// connect contentscript->inpage reload stream -var mx = ObjectMultiplex() -mx.on('error', console.error.bind(console)) -mx.pipe(pageStream) -var reloadStream = mx.createStream('reload') -reloadStream.on('error', console.error.bind(console)) - -// if we lose connection with the plugin, trigger tab refresh -pluginStream.on('close', function () { - reloadStream.write({ method: 'reset' }) -}) +if (shouldInjectWeb3()) { + setupInjection() +} + +function setupInjection(){ + + // inject in-page script + var scriptTag = document.createElement('script') + scriptTag.src = chrome.extension.getURL('scripts/inpage.js') + scriptTag.onload = function () { this.parentNode.removeChild(this) } + var container = document.head || document.documentElement + // append as first child + container.insertBefore(scriptTag, container.children[0]) + + // setup communication to page and plugin + var pageStream = new LocalMessageDuplexStream({ + name: 'contentscript', + target: 'inpage', + }) + pageStream.on('error', console.error.bind(console)) + var pluginPort = chrome.runtime.connect({name: 'contentscript'}) + var pluginStream = new PortStream(pluginPort) + pluginStream.on('error', console.error.bind(console)) + + // forward communication plugin->inpage + pageStream.pipe(pluginStream).pipe(pageStream) + + // connect contentscript->inpage reload stream + var mx = ObjectMultiplex() + mx.on('error', console.error.bind(console)) + mx.pipe(pageStream) + var reloadStream = mx.createStream('reload') + reloadStream.on('error', console.error.bind(console)) + + // if we lose connection with the plugin, trigger tab refresh + pluginStream.on('close', function () { + reloadStream.write({ method: 'reset' }) + }) + +} + +function shouldInjectWeb3(){ + var urlData = urlUtil.parse(window.location.href) + var extension = urlData.pathname.split('.').slice(-1)[0] + var shouldInject = (extension !== 'pdf') + return shouldInject +}
\ No newline at end of file |