mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Merge pull request #596 from MetaMask/EdgeCompatibility
Edge compatibility
This commit is contained in:
commit
791e80988d
@ -3,6 +3,7 @@
|
|||||||
"short_name": "Metamask",
|
"short_name": "Metamask",
|
||||||
"version": "2.10.0",
|
"version": "2.10.0",
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
|
"author": "https://metamask.io",
|
||||||
"description": "Ethereum Browser Extension",
|
"description": "Ethereum Browser Extension",
|
||||||
"commands": {
|
"commands": {
|
||||||
"_execute_browser_action": {
|
"_execute_browser_action": {
|
||||||
@ -28,7 +29,8 @@
|
|||||||
"scripts": [
|
"scripts": [
|
||||||
"scripts/chromereload.js",
|
"scripts/chromereload.js",
|
||||||
"scripts/background.js"
|
"scripts/background.js"
|
||||||
]
|
],
|
||||||
|
"persistent": true
|
||||||
},
|
},
|
||||||
"browser_action": {
|
"browser_action": {
|
||||||
"default_icon": {
|
"default_icon": {
|
||||||
|
@ -324,13 +324,13 @@ window.LiveReloadOptions = { host: 'localhost' };
|
|||||||
this.pluginIdentifiers = {}
|
this.pluginIdentifiers = {}
|
||||||
this.console = this.window.console && this.window.console.log && this.window.console.error ? this.window.location.href.match(/LR-verbose/) ? this.window.console : {
|
this.console = this.window.console && this.window.console.log && this.window.console.error ? this.window.location.href.match(/LR-verbose/) ? this.window.console : {
|
||||||
log: function () {},
|
log: function () {},
|
||||||
error: this.window.console.error.bind(this.window.console),
|
error: console.error,
|
||||||
} : {
|
} : {
|
||||||
log: function () {},
|
log: function () {},
|
||||||
error: function () {},
|
error: function () {},
|
||||||
}
|
}
|
||||||
if (!(this.WebSocket = this.window.WebSocket || this.window.MozWebSocket)) {
|
if (!(this.WebSocket = this.window.WebSocket || this.window.MozWebSocket)) {
|
||||||
this.console.error('LiveReload disabled because the browser does not seem to support web sockets')
|
console.error('LiveReload disabled because the browser does not seem to support web sockets')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if ('LiveReloadOptions' in window) {
|
if ('LiveReloadOptions' in window) {
|
||||||
@ -344,7 +344,7 @@ window.LiveReloadOptions = { host: 'localhost' };
|
|||||||
} else {
|
} else {
|
||||||
this.options = Options.extract(this.window.document)
|
this.options = Options.extract(this.window.document)
|
||||||
if (!this.options) {
|
if (!this.options) {
|
||||||
this.console.error('LiveReload disabled because it could not find its own <SCRIPT> tag')
|
console.error('LiveReload disabled because it could not find its own <SCRIPT> tag')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,20 +43,20 @@ function setupStreams(){
|
|||||||
name: 'contentscript',
|
name: 'contentscript',
|
||||||
target: 'inpage',
|
target: 'inpage',
|
||||||
})
|
})
|
||||||
pageStream.on('error', console.error.bind(console))
|
pageStream.on('error', console.error)
|
||||||
var pluginPort = extension.runtime.connect({name: 'contentscript'})
|
var pluginPort = extension.runtime.connect({name: 'contentscript'})
|
||||||
var pluginStream = new PortStream(pluginPort)
|
var pluginStream = new PortStream(pluginPort)
|
||||||
pluginStream.on('error', console.error.bind(console))
|
pluginStream.on('error', console.error)
|
||||||
|
|
||||||
// forward communication plugin->inpage
|
// forward communication plugin->inpage
|
||||||
pageStream.pipe(pluginStream).pipe(pageStream)
|
pageStream.pipe(pluginStream).pipe(pageStream)
|
||||||
|
|
||||||
// connect contentscript->inpage reload stream
|
// connect contentscript->inpage reload stream
|
||||||
var mx = ObjectMultiplex()
|
var mx = ObjectMultiplex()
|
||||||
mx.on('error', console.error.bind(console))
|
mx.on('error', console.error)
|
||||||
mx.pipe(pageStream)
|
mx.pipe(pageStream)
|
||||||
var reloadStream = mx.createStream('reload')
|
var reloadStream = mx.createStream('reload')
|
||||||
reloadStream.on('error', console.error.bind(console))
|
reloadStream.on('error', console.error)
|
||||||
|
|
||||||
// if we lose connection with the plugin, trigger tab refresh
|
// if we lose connection with the plugin, trigger tab refresh
|
||||||
pluginStream.on('close', function () {
|
pluginStream.on('close', function () {
|
||||||
|
@ -46,12 +46,23 @@ function Extension () {
|
|||||||
_this[api] = browser[api]
|
_this[api] = browser[api]
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
_this.api = browser.extension[api]
|
_this.api = browser.extension[api]
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (browser && browser.runtime) {
|
||||||
|
this.runtime = browser.runtime
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (browser && browser.browserAction) {
|
||||||
|
this.browserAction = browser.browserAction
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Extension
|
module.exports = Extension
|
||||||
|
@ -14,9 +14,10 @@ function show () {
|
|||||||
return extension.windows.update(popup.id, { focused: true })
|
return extension.windows.update(popup.id, { focused: true })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extension.windows.create({
|
extension.windows.create({
|
||||||
url: 'notification.html',
|
url: 'notification.html',
|
||||||
type: 'detached_panel',
|
type: 'popup',
|
||||||
focused: true,
|
focused: true,
|
||||||
width: 360,
|
width: 360,
|
||||||
height: 500,
|
height: 500,
|
||||||
|
@ -74,22 +74,12 @@ function getCurrentDomain (cb) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearNotifications(){
|
|
||||||
extension.notifications.getAll(function (object) {
|
|
||||||
for (let notification in object){
|
|
||||||
extension.notifications.clear(notification)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function setupApp (err, opts) {
|
function setupApp (err, opts) {
|
||||||
if (err) {
|
if (err) {
|
||||||
alert(err.stack)
|
alert(err.stack)
|
||||||
throw err
|
throw err
|
||||||
}
|
}
|
||||||
|
|
||||||
clearNotifications()
|
|
||||||
|
|
||||||
var container = document.getElementById('app-content')
|
var container = document.getElementById('app-content')
|
||||||
|
|
||||||
MetaMaskUi({
|
MetaMaskUi({
|
||||||
|
17
gulpfile.js
17
gulpfile.js
@ -34,6 +34,7 @@ gulp.task('copy:locales', copyTask({
|
|||||||
destinations: [
|
destinations: [
|
||||||
'./dist/firefox/_locales',
|
'./dist/firefox/_locales',
|
||||||
'./dist/chrome/_locales',
|
'./dist/chrome/_locales',
|
||||||
|
'./dist/edge/_locales',
|
||||||
]
|
]
|
||||||
}))
|
}))
|
||||||
gulp.task('copy:images', copyTask({
|
gulp.task('copy:images', copyTask({
|
||||||
@ -41,6 +42,7 @@ gulp.task('copy:images', copyTask({
|
|||||||
destinations: [
|
destinations: [
|
||||||
'./dist/firefox/images',
|
'./dist/firefox/images',
|
||||||
'./dist/chrome/images',
|
'./dist/chrome/images',
|
||||||
|
'./dist/edge/images',
|
||||||
],
|
],
|
||||||
}))
|
}))
|
||||||
gulp.task('copy:fonts', copyTask({
|
gulp.task('copy:fonts', copyTask({
|
||||||
@ -48,6 +50,7 @@ gulp.task('copy:fonts', copyTask({
|
|||||||
destinations: [
|
destinations: [
|
||||||
'./dist/firefox/fonts',
|
'./dist/firefox/fonts',
|
||||||
'./dist/chrome/fonts',
|
'./dist/chrome/fonts',
|
||||||
|
'./dist/edge/fonts',
|
||||||
],
|
],
|
||||||
}))
|
}))
|
||||||
gulp.task('copy:reload', copyTask({
|
gulp.task('copy:reload', copyTask({
|
||||||
@ -55,6 +58,7 @@ gulp.task('copy:reload', copyTask({
|
|||||||
destinations: [
|
destinations: [
|
||||||
'./dist/firefox/scripts',
|
'./dist/firefox/scripts',
|
||||||
'./dist/chrome/scripts',
|
'./dist/chrome/scripts',
|
||||||
|
'./dist/edge/scripts',
|
||||||
],
|
],
|
||||||
pattern: '/chromereload.js',
|
pattern: '/chromereload.js',
|
||||||
}))
|
}))
|
||||||
@ -63,6 +67,7 @@ gulp.task('copy:root', copyTask({
|
|||||||
destinations: [
|
destinations: [
|
||||||
'./dist/firefox',
|
'./dist/firefox',
|
||||||
'./dist/chrome',
|
'./dist/chrome',
|
||||||
|
'./dist/edge',
|
||||||
],
|
],
|
||||||
pattern: '/*',
|
pattern: '/*',
|
||||||
}))
|
}))
|
||||||
@ -131,13 +136,18 @@ gulp.task('zip:chrome', () => {
|
|||||||
return gulp.src('dist/chrome/**')
|
return gulp.src('dist/chrome/**')
|
||||||
.pipe(zip(`metamask-chrome-${manifest.version}.zip`))
|
.pipe(zip(`metamask-chrome-${manifest.version}.zip`))
|
||||||
.pipe(gulp.dest('builds'));
|
.pipe(gulp.dest('builds'));
|
||||||
});
|
})
|
||||||
gulp.task('zip:firefox', () => {
|
gulp.task('zip:firefox', () => {
|
||||||
return gulp.src('dist/firefox/**')
|
return gulp.src('dist/firefox/**')
|
||||||
.pipe(zip(`metamask-firefox-${manifest.version}.zip`))
|
.pipe(zip(`metamask-firefox-${manifest.version}.zip`))
|
||||||
.pipe(gulp.dest('builds'));
|
.pipe(gulp.dest('builds'));
|
||||||
});
|
})
|
||||||
gulp.task('zip', gulp.parallel('zip:chrome', 'zip:firefox'))
|
gulp.task('zip:edge', () => {
|
||||||
|
return gulp.src('dist/edge/**')
|
||||||
|
.pipe(zip(`metamask-edge-${manifest.version}.zip`))
|
||||||
|
.pipe(gulp.dest('builds'));
|
||||||
|
})
|
||||||
|
gulp.task('zip', gulp.parallel('zip:chrome', 'zip:firefox', 'zip:edge'))
|
||||||
|
|
||||||
// high level tasks
|
// high level tasks
|
||||||
|
|
||||||
@ -200,6 +210,7 @@ function bundleTask(opts) {
|
|||||||
.pipe(sourcemaps.write('./')) // writes .map file
|
.pipe(sourcemaps.write('./')) // writes .map file
|
||||||
.pipe(gulp.dest('./dist/firefox/scripts'))
|
.pipe(gulp.dest('./dist/firefox/scripts'))
|
||||||
.pipe(gulp.dest('./dist/chrome/scripts'))
|
.pipe(gulp.dest('./dist/chrome/scripts'))
|
||||||
|
.pipe(gulp.dest('./dist/edge/scripts'))
|
||||||
.pipe(livereload())
|
.pipe(livereload())
|
||||||
|
|
||||||
)
|
)
|
||||||
|
@ -9,6 +9,34 @@ var Extension = require(path.join(__dirname, '..', '..', 'app', 'scripts', 'lib'
|
|||||||
|
|
||||||
describe('extension', function() {
|
describe('extension', function() {
|
||||||
|
|
||||||
|
describe('extension.getURL', function() {
|
||||||
|
const desiredResult = 'http://the-desired-result.io'
|
||||||
|
|
||||||
|
describe('in Chrome or Firefox', function() {
|
||||||
|
GLOBAL.chrome.extension = {
|
||||||
|
getURL: () => desiredResult
|
||||||
|
}
|
||||||
|
|
||||||
|
it('returns the desired result', function() {
|
||||||
|
const extension = new Extension()
|
||||||
|
const result = extension.extension.getURL()
|
||||||
|
assert.equal(result, desiredResult)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('in Microsoft Edge', function() {
|
||||||
|
GLOBAL.browser.extension = {
|
||||||
|
getURL: () => desiredResult
|
||||||
|
}
|
||||||
|
|
||||||
|
it('returns the desired result', function() {
|
||||||
|
const extension = new Extension()
|
||||||
|
const result = extension.extension.getURL()
|
||||||
|
assert.equal(result, desiredResult)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('with chrome global', function() {
|
describe('with chrome global', function() {
|
||||||
let extension
|
let extension
|
||||||
|
|
||||||
@ -45,4 +73,5 @@ describe('extension', function() {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
@ -14,7 +14,9 @@ inherits(PersistentForm, Component)
|
|||||||
PersistentForm.prototype.componentDidMount = function () {
|
PersistentForm.prototype.componentDidMount = function () {
|
||||||
const fields = document.querySelectorAll('[data-persistent-formid]')
|
const fields = document.querySelectorAll('[data-persistent-formid]')
|
||||||
const store = this.getPersistentStore()
|
const store = this.getPersistentStore()
|
||||||
fields.forEach((field) => {
|
|
||||||
|
for (var i = 0; i < fields.length; i++) {
|
||||||
|
const field = fields[i]
|
||||||
const key = field.getAttribute('data-persistent-formid')
|
const key = field.getAttribute('data-persistent-formid')
|
||||||
const cached = store[key]
|
const cached = store[key]
|
||||||
if (cached !== undefined) {
|
if (cached !== undefined) {
|
||||||
@ -22,7 +24,7 @@ PersistentForm.prototype.componentDidMount = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
field.addEventListener(eventName, this.persistentFieldDidUpdate.bind(this))
|
field.addEventListener(eventName, this.persistentFieldDidUpdate.bind(this))
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PersistentForm.prototype.getPersistentStore = function () {
|
PersistentForm.prototype.getPersistentStore = function () {
|
||||||
@ -50,8 +52,10 @@ PersistentForm.prototype.persistentFieldDidUpdate = function (event) {
|
|||||||
|
|
||||||
PersistentForm.prototype.componentWillUnmount = function () {
|
PersistentForm.prototype.componentWillUnmount = function () {
|
||||||
const fields = document.querySelectorAll('[data-persistent-formid]')
|
const fields = document.querySelectorAll('[data-persistent-formid]')
|
||||||
fields.forEach((field) => {
|
for (var i = 0; i < fields.length; i++) {
|
||||||
|
const field = fields[i]
|
||||||
field.removeEventListener(eventName, this.persistentFieldDidUpdate.bind(this))
|
field.removeEventListener(eventName, this.persistentFieldDidUpdate.bind(this))
|
||||||
})
|
}
|
||||||
this.setPersistentStore({})
|
this.setPersistentStore({})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user