aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkumavis <kumavis@users.noreply.github.com>2016-06-25 02:25:03 +0800
committerGitHub <noreply@github.com>2016-06-25 02:25:03 +0800
commitbec7bde88376d14bcd15087e8b3dea4b2876315e (patch)
treebfaeb25f7088f5f7716dbf24360a767ec2e7eb01
parentac2269b16ebc97a75e06347d5a042caad3cfed54 (diff)
parentfce748c11813d9bdf1a73f704893319bb40b4597 (diff)
downloadtangerine-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.js80
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