mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Merge branch 'develop' into e2e-test
This commit is contained in:
commit
54ccf5e930
@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
## Current Master
|
## Current Master
|
||||||
|
|
||||||
|
## 4.6.1 Mon Apr 30 2018
|
||||||
|
|
||||||
|
- Fix bug where sending a transaction resulted in an infinite spinner
|
||||||
|
- Allow transactions with a 0 gwei gas price
|
||||||
|
- Handle encoding errors in ERC20 symbol + digits
|
||||||
|
- Fix ShapeShift forms (new + old ui)
|
||||||
|
- Fix sourcemaps
|
||||||
|
|
||||||
## 4.6.0 Thu Apr 26 2018
|
## 4.6.0 Thu Apr 26 2018
|
||||||
|
|
||||||
- Correctly format currency conversion for locally selected preferred currency.
|
- Correctly format currency conversion for locally selected preferred currency.
|
||||||
|
@ -679,6 +679,9 @@
|
|||||||
"ropsten": {
|
"ropsten": {
|
||||||
"message": "Ropsten Test Network"
|
"message": "Ropsten Test Network"
|
||||||
},
|
},
|
||||||
|
"rpc": {
|
||||||
|
"message": "Custom RPC"
|
||||||
|
},
|
||||||
"currentRpc": {
|
"currentRpc": {
|
||||||
"message": "Current RPC"
|
"message": "Current RPC"
|
||||||
},
|
},
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "__MSG_appName__",
|
"name": "__MSG_appName__",
|
||||||
"short_name": "__MSG_appName__",
|
"short_name": "__MSG_appName__",
|
||||||
"version": "4.6.0",
|
"version": "4.6.1",
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"author": "https://metamask.io",
|
"author": "https://metamask.io",
|
||||||
"description": "__MSG_appDescription__",
|
"description": "__MSG_appDescription__",
|
||||||
@ -67,6 +67,7 @@
|
|||||||
"externally_connectable": {
|
"externally_connectable": {
|
||||||
"matches": [
|
"matches": [
|
||||||
"https://metamask.io/*"
|
"https://metamask.io/*"
|
||||||
]
|
],
|
||||||
|
"ids": ["*"]
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -309,6 +309,7 @@ function setupController (initState, initLangCode) {
|
|||||||
// connect to other contexts
|
// connect to other contexts
|
||||||
//
|
//
|
||||||
extension.runtime.onConnect.addListener(connectRemote)
|
extension.runtime.onConnect.addListener(connectRemote)
|
||||||
|
extension.runtime.onConnectExternal.addListener(connectExternal)
|
||||||
|
|
||||||
const metamaskInternalProcessHash = {
|
const metamaskInternalProcessHash = {
|
||||||
[ENVIRONMENT_TYPE_POPUP]: true,
|
[ENVIRONMENT_TYPE_POPUP]: true,
|
||||||
@ -335,9 +336,9 @@ function setupController (initState, initLangCode) {
|
|||||||
function connectRemote (remotePort) {
|
function connectRemote (remotePort) {
|
||||||
const processName = remotePort.name
|
const processName = remotePort.name
|
||||||
const isMetaMaskInternalProcess = metamaskInternalProcessHash[processName]
|
const isMetaMaskInternalProcess = metamaskInternalProcessHash[processName]
|
||||||
const portStream = new PortStream(remotePort)
|
|
||||||
|
|
||||||
if (isMetaMaskInternalProcess) {
|
if (isMetaMaskInternalProcess) {
|
||||||
|
const portStream = new PortStream(remotePort)
|
||||||
// communication with popup
|
// communication with popup
|
||||||
controller.isClientOpen = true
|
controller.isClientOpen = true
|
||||||
controller.setupTrustedCommunication(portStream, 'MetaMask')
|
controller.setupTrustedCommunication(portStream, 'MetaMask')
|
||||||
@ -370,12 +371,17 @@ function setupController (initState, initLangCode) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// communication with page
|
connectExternal(remotePort)
|
||||||
const originDomain = urlUtil.parse(remotePort.sender.url).hostname
|
|
||||||
controller.setupUntrustedCommunication(portStream, originDomain)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// communication with page or other extension
|
||||||
|
function connectExternal(remotePort) {
|
||||||
|
const originDomain = urlUtil.parse(remotePort.sender.url).hostname
|
||||||
|
const portStream = new PortStream(remotePort)
|
||||||
|
controller.setupUntrustedCommunication(portStream, originDomain)
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// User Interface setup
|
// User Interface setup
|
||||||
//
|
//
|
||||||
|
@ -8,6 +8,7 @@ const TxGasUtil = require('./tx-gas-utils')
|
|||||||
const PendingTransactionTracker = require('./pending-tx-tracker')
|
const PendingTransactionTracker = require('./pending-tx-tracker')
|
||||||
const NonceTracker = require('./nonce-tracker')
|
const NonceTracker = require('./nonce-tracker')
|
||||||
const txUtils = require('./lib/util')
|
const txUtils = require('./lib/util')
|
||||||
|
const cleanErrorStack = require('../../lib/cleanErrorStack')
|
||||||
const log = require('loglevel')
|
const log = require('loglevel')
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -118,6 +119,7 @@ class TransactionController extends EventEmitter {
|
|||||||
@param txParams {object} - txParams for the transaction
|
@param txParams {object} - txParams for the transaction
|
||||||
@param opts {object} - with the key origin to put the origin on the txMeta
|
@param opts {object} - with the key origin to put the origin on the txMeta
|
||||||
*/
|
*/
|
||||||
|
|
||||||
async newUnapprovedTransaction (txParams, opts = {}) {
|
async newUnapprovedTransaction (txParams, opts = {}) {
|
||||||
log.debug(`MetaMaskController newUnapprovedTransaction ${JSON.stringify(txParams)}`)
|
log.debug(`MetaMaskController newUnapprovedTransaction ${JSON.stringify(txParams)}`)
|
||||||
const initialTxMeta = await this.addUnapprovedTransaction(txParams)
|
const initialTxMeta = await this.addUnapprovedTransaction(txParams)
|
||||||
@ -130,11 +132,11 @@ class TransactionController extends EventEmitter {
|
|||||||
case 'submitted':
|
case 'submitted':
|
||||||
return resolve(finishedTxMeta.hash)
|
return resolve(finishedTxMeta.hash)
|
||||||
case 'rejected':
|
case 'rejected':
|
||||||
return reject(new Error('MetaMask Tx Signature: User denied transaction signature.'))
|
return reject(cleanErrorStack(new Error('MetaMask Tx Signature: User denied transaction signature.')))
|
||||||
case 'failed':
|
case 'failed':
|
||||||
return reject(new Error(finishedTxMeta.err.message))
|
return reject(cleanErrorStack(new Error(finishedTxMeta.err.message)))
|
||||||
default:
|
default:
|
||||||
return reject(new Error(`MetaMask Tx Signature: Unknown problem: ${JSON.stringify(finishedTxMeta.txParams)}`))
|
return reject(cleanErrorStack(new Error(`MetaMask Tx Signature: Unknown problem: ${JSON.stringify(finishedTxMeta.txParams)}`)))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -2,6 +2,7 @@ const extend = require('xtend')
|
|||||||
const EventEmitter = require('events')
|
const EventEmitter = require('events')
|
||||||
const ObservableStore = require('obs-store')
|
const ObservableStore = require('obs-store')
|
||||||
const ethUtil = require('ethereumjs-util')
|
const ethUtil = require('ethereumjs-util')
|
||||||
|
const log = require('loglevel')
|
||||||
const txStateHistoryHelper = require('./lib/tx-state-history-helper')
|
const txStateHistoryHelper = require('./lib/tx-state-history-helper')
|
||||||
const createId = require('../../lib/random-id')
|
const createId = require('../../lib/random-id')
|
||||||
const { getFinalStates } = require('./lib/util')
|
const { getFinalStates } = require('./lib/util')
|
||||||
@ -398,13 +399,19 @@ class TransactionStateManager extends EventEmitter {
|
|||||||
_setTxStatus (txId, status) {
|
_setTxStatus (txId, status) {
|
||||||
const txMeta = this.getTx(txId)
|
const txMeta = this.getTx(txId)
|
||||||
txMeta.status = status
|
txMeta.status = status
|
||||||
|
setTimeout(() => {
|
||||||
|
try {
|
||||||
|
this.updateTx(txMeta, `txStateManager: setting status to ${status}`)
|
||||||
this.emit(`${txMeta.id}:${status}`, txId)
|
this.emit(`${txMeta.id}:${status}`, txId)
|
||||||
this.emit(`tx:status-update`, txId, status)
|
this.emit(`tx:status-update`, txId, status)
|
||||||
if (['submitted', 'rejected', 'failed'].includes(status)) {
|
if (['submitted', 'rejected', 'failed'].includes(status)) {
|
||||||
this.emit(`${txMeta.id}:finished`, txMeta)
|
this.emit(`${txMeta.id}:finished`, txMeta)
|
||||||
}
|
}
|
||||||
this.updateTx(txMeta, `txStateManager: setting status to ${status}`)
|
|
||||||
this.emit('update:badge')
|
this.emit('update:badge')
|
||||||
|
} catch (error) {
|
||||||
|
log.error(error)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
24
app/scripts/lib/cleanErrorStack.js
Normal file
24
app/scripts/lib/cleanErrorStack.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/**
|
||||||
|
* Returns error without stack trace for better UI display
|
||||||
|
* @param {Error} err - error
|
||||||
|
* @returns {Error} Error with clean stack trace.
|
||||||
|
*/
|
||||||
|
function cleanErrorStack(err){
|
||||||
|
var name = err.name
|
||||||
|
name = (name === undefined) ? 'Error' : String(name)
|
||||||
|
|
||||||
|
var msg = err.message
|
||||||
|
msg = (msg === undefined) ? '' : String(msg)
|
||||||
|
|
||||||
|
if (name === '') {
|
||||||
|
err.stack = err.message
|
||||||
|
} else if (msg === '') {
|
||||||
|
err.stack = err.name
|
||||||
|
} else {
|
||||||
|
err.stack = err.name + ': ' + err.message
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = cleanErrorStack
|
@ -45,6 +45,7 @@ const BN = require('ethereumjs-util').BN
|
|||||||
const GWEI_BN = new BN('1000000000')
|
const GWEI_BN = new BN('1000000000')
|
||||||
const percentile = require('percentile')
|
const percentile = require('percentile')
|
||||||
const seedPhraseVerifier = require('./lib/seed-phrase-verifier')
|
const seedPhraseVerifier = require('./lib/seed-phrase-verifier')
|
||||||
|
const cleanErrorStack = require('./lib/cleanErrorStack')
|
||||||
const log = require('loglevel')
|
const log = require('loglevel')
|
||||||
|
|
||||||
module.exports = class MetamaskController extends EventEmitter {
|
module.exports = class MetamaskController extends EventEmitter {
|
||||||
@ -642,9 +643,9 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
case 'signed':
|
case 'signed':
|
||||||
return cb(null, data.rawSig)
|
return cb(null, data.rawSig)
|
||||||
case 'rejected':
|
case 'rejected':
|
||||||
return cb(new Error('MetaMask Message Signature: User denied message signature.'))
|
return cb(cleanErrorStack(new Error('MetaMask Message Signature: User denied message signature.')))
|
||||||
default:
|
default:
|
||||||
return cb(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(msgParams)}`))
|
return cb(cleanErrorStack(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(msgParams)}`)))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -702,7 +703,7 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
*/
|
*/
|
||||||
newUnsignedPersonalMessage (msgParams, cb) {
|
newUnsignedPersonalMessage (msgParams, cb) {
|
||||||
if (!msgParams.from) {
|
if (!msgParams.from) {
|
||||||
return cb(new Error('MetaMask Message Signature: from field is required.'))
|
return cb(cleanErrorStack(new Error('MetaMask Message Signature: from field is required.')))
|
||||||
}
|
}
|
||||||
|
|
||||||
const msgId = this.personalMessageManager.addUnapprovedMessage(msgParams)
|
const msgId = this.personalMessageManager.addUnapprovedMessage(msgParams)
|
||||||
@ -713,9 +714,9 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
case 'signed':
|
case 'signed':
|
||||||
return cb(null, data.rawSig)
|
return cb(null, data.rawSig)
|
||||||
case 'rejected':
|
case 'rejected':
|
||||||
return cb(new Error('MetaMask Message Signature: User denied message signature.'))
|
return cb(cleanErrorStack(new Error('MetaMask Message Signature: User denied message signature.')))
|
||||||
default:
|
default:
|
||||||
return cb(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(msgParams)}`))
|
return cb(cleanErrorStack(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(msgParams)}`)))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -781,9 +782,9 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
case 'signed':
|
case 'signed':
|
||||||
return cb(null, data.rawSig)
|
return cb(null, data.rawSig)
|
||||||
case 'rejected':
|
case 'rejected':
|
||||||
return cb(new Error('MetaMask Message Signature: User denied message signature.'))
|
return cb(cleanErrorStack(new Error('MetaMask Message Signature: User denied message signature.')))
|
||||||
default:
|
default:
|
||||||
return cb(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(msgParams)}`))
|
return cb(cleanErrorStack(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(msgParams)}`)))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
107
package-lock.json
generated
107
package-lock.json
generated
@ -309,7 +309,7 @@
|
|||||||
},
|
},
|
||||||
"@sinonjs/formatio": {
|
"@sinonjs/formatio": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz",
|
||||||
"integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==",
|
"integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -1500,7 +1500,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bignumber.js": {
|
"bignumber.js": {
|
||||||
"version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2"
|
"version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2",
|
||||||
|
"from": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2"
|
||||||
},
|
},
|
||||||
"chai": {
|
"chai": {
|
||||||
"version": "3.5.0",
|
"version": "3.5.0",
|
||||||
@ -7173,6 +7174,12 @@
|
|||||||
"domelementtype": "1.3.0"
|
"domelementtype": "1.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"dot-only-hunter": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/dot-only-hunter/-/dot-only-hunter-1.0.3.tgz",
|
||||||
|
"integrity": "sha1-9k0h7b5v8xFJlfEGGmGpNcMAIEs=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"dotenv": {
|
"dotenv": {
|
||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz",
|
||||||
@ -8007,6 +8014,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"async-eventemitter": {
|
"async-eventemitter": {
|
||||||
"version": "github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c",
|
"version": "github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c",
|
||||||
|
"from": "async-eventemitter@github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c",
|
||||||
"requires": {
|
"requires": {
|
||||||
"async": "2.6.0"
|
"async": "2.6.0"
|
||||||
}
|
}
|
||||||
@ -8161,20 +8169,20 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"eth-keyring-controller": {
|
"eth-keyring-controller": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/eth-keyring-controller/-/eth-keyring-controller-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/eth-keyring-controller/-/eth-keyring-controller-3.1.3.tgz",
|
||||||
"integrity": "sha512-Z9HTzrop/V4Ld8Wq7uwetKecfWIyx25/uL8aFoZxV3kegZGoXaWoRmNy+4oW0WNLp4BcJ1lk6QfsGEdlymGjmA==",
|
"integrity": "sha512-5xzUeT2mq+S2GvTRnvhdZjrasZg+TqeSTH5sZRbDSXgXC9TYobFvEcK6g2wP/RkOQ3dt0xo/6/TWgwiXFfNZjw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"bip39": "2.4.0",
|
"bip39": "^2.4.0",
|
||||||
"bluebird": "3.5.1",
|
"bluebird": "^3.5.0",
|
||||||
"browser-passworder": "2.0.3",
|
"browser-passworder": "^2.0.3",
|
||||||
"eth-hd-keyring": "1.2.2",
|
"eth-hd-keyring": "^1.2.2",
|
||||||
"eth-sig-util": "1.4.2",
|
"eth-sig-util": "^1.4.0",
|
||||||
"eth-simple-keyring": "1.2.1",
|
"eth-simple-keyring": "^1.2.1",
|
||||||
"ethereumjs-util": "5.2.0",
|
"ethereumjs-util": "^5.1.2",
|
||||||
"loglevel": "1.6.0",
|
"loglevel": "^1.5.0",
|
||||||
"obs-store": "2.4.1",
|
"obs-store": "^2.4.1",
|
||||||
"promise-filter": "1.1.0"
|
"promise-filter": "^1.1.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"babelify": {
|
"babelify": {
|
||||||
@ -8182,8 +8190,8 @@
|
|||||||
"resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz",
|
||||||
"integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=",
|
"integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"babel-core": "6.26.0",
|
"babel-core": "^6.0.14",
|
||||||
"object-assign": "4.1.1"
|
"object-assign": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ethereumjs-util": {
|
"ethereumjs-util": {
|
||||||
@ -8191,13 +8199,13 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz",
|
||||||
"integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==",
|
"integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"bn.js": "4.11.8",
|
"bn.js": "^4.11.0",
|
||||||
"create-hash": "1.1.3",
|
"create-hash": "^1.1.2",
|
||||||
"ethjs-util": "0.1.4",
|
"ethjs-util": "^0.1.3",
|
||||||
"keccak": "1.4.0",
|
"keccak": "^1.0.2",
|
||||||
"rlp": "2.0.0",
|
"rlp": "^2.0.0",
|
||||||
"safe-buffer": "5.1.1",
|
"safe-buffer": "^5.1.1",
|
||||||
"secp256k1": "3.4.0"
|
"secp256k1": "^3.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"obs-store": {
|
"obs-store": {
|
||||||
@ -8205,11 +8213,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/obs-store/-/obs-store-2.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/obs-store/-/obs-store-2.4.1.tgz",
|
||||||
"integrity": "sha512-wpA8G4uSn8cnCKZ0pFTvqsamvy0Sm1hR2ot0Qonbfj5yBMwdAp/eD4vDI+U/ZCbV1hb2V5GapL8YKUdGCvahgg==",
|
"integrity": "sha512-wpA8G4uSn8cnCKZ0pFTvqsamvy0Sm1hR2ot0Qonbfj5yBMwdAp/eD4vDI+U/ZCbV1hb2V5GapL8YKUdGCvahgg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"babel-preset-es2015": "6.24.1",
|
"babel-preset-es2015": "^6.22.0",
|
||||||
"babelify": "7.3.0",
|
"babelify": "^7.3.0",
|
||||||
"readable-stream": "2.3.3",
|
"readable-stream": "^2.2.2",
|
||||||
"through2": "2.0.3",
|
"through2": "^2.0.3",
|
||||||
"xtend": "4.0.1"
|
"xtend": "^4.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -8256,6 +8264,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ethereumjs-abi": {
|
"ethereumjs-abi": {
|
||||||
"version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#4ea2fdfed09e8f99117d9362d17c6b01b64a2bcf",
|
"version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#4ea2fdfed09e8f99117d9362d17c6b01b64a2bcf",
|
||||||
|
"from": "git+https://github.com/ethereumjs/ethereumjs-abi.git",
|
||||||
"requires": {
|
"requires": {
|
||||||
"bn.js": "4.11.8",
|
"bn.js": "4.11.8",
|
||||||
"ethereumjs-util": "5.1.3"
|
"ethereumjs-util": "5.1.3"
|
||||||
@ -8282,11 +8291,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/eth-simple-keyring/-/eth-simple-keyring-1.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/eth-simple-keyring/-/eth-simple-keyring-1.2.1.tgz",
|
||||||
"integrity": "sha1-bXs1LcWppQINYfafryHvsvY2P0U=",
|
"integrity": "sha1-bXs1LcWppQINYfafryHvsvY2P0U=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"eth-sig-util": "1.4.2",
|
"eth-sig-util": "^1.4.2",
|
||||||
"ethereumjs-util": "5.2.0",
|
"ethereumjs-util": "^5.1.1",
|
||||||
"ethereumjs-wallet": "0.6.0",
|
"ethereumjs-wallet": "^0.6.0",
|
||||||
"events": "1.1.1",
|
"events": "^1.1.1",
|
||||||
"xtend": "4.0.1"
|
"xtend": "^4.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ethereumjs-util": {
|
"ethereumjs-util": {
|
||||||
@ -8294,13 +8303,13 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz",
|
||||||
"integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==",
|
"integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"bn.js": "4.11.8",
|
"bn.js": "^4.11.0",
|
||||||
"create-hash": "1.1.3",
|
"create-hash": "^1.1.2",
|
||||||
"ethjs-util": "0.1.4",
|
"ethjs-util": "^0.1.3",
|
||||||
"keccak": "1.4.0",
|
"keccak": "^1.0.2",
|
||||||
"rlp": "2.0.0",
|
"rlp": "^2.0.0",
|
||||||
"safe-buffer": "5.1.1",
|
"safe-buffer": "^5.1.1",
|
||||||
"secp256k1": "3.4.0"
|
"secp256k1": "^3.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -8487,7 +8496,7 @@
|
|||||||
"eth-query": "2.1.2",
|
"eth-query": "2.1.2",
|
||||||
"ethereumjs-block": "1.7.0",
|
"ethereumjs-block": "1.7.0",
|
||||||
"ethereumjs-tx": "1.3.3",
|
"ethereumjs-tx": "1.3.3",
|
||||||
"ethereumjs-util": "github:ethereumjs/ethereumjs-util#ac5d0908536b447083ea422b435da27f26615de9",
|
"ethereumjs-util": "^5.0.1",
|
||||||
"ethereumjs-vm": "2.3.5",
|
"ethereumjs-vm": "2.3.5",
|
||||||
"through2": "2.0.3",
|
"through2": "2.0.3",
|
||||||
"treeify": "1.1.0",
|
"treeify": "1.1.0",
|
||||||
@ -8636,7 +8645,7 @@
|
|||||||
"async": "2.6.0",
|
"async": "2.6.0",
|
||||||
"ethereum-common": "0.2.0",
|
"ethereum-common": "0.2.0",
|
||||||
"ethereumjs-tx": "1.3.3",
|
"ethereumjs-tx": "1.3.3",
|
||||||
"ethereumjs-util": "github:ethereumjs/ethereumjs-util#ac5d0908536b447083ea422b435da27f26615de9",
|
"ethereumjs-util": "^5.0.0",
|
||||||
"merkle-patricia-tree": "2.3.0"
|
"merkle-patricia-tree": "2.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -8646,7 +8655,7 @@
|
|||||||
"integrity": "sha1-7OBR0+/b53GtKlGNYWMsoqt17Ls=",
|
"integrity": "sha1-7OBR0+/b53GtKlGNYWMsoqt17Ls=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ethereum-common": "0.0.18",
|
"ethereum-common": "0.0.18",
|
||||||
"ethereumjs-util": "github:ethereumjs/ethereumjs-util#ac5d0908536b447083ea422b435da27f26615de9"
|
"ethereumjs-util": "^5.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ethereum-common": {
|
"ethereum-common": {
|
||||||
@ -8658,6 +8667,7 @@
|
|||||||
},
|
},
|
||||||
"ethereumjs-util": {
|
"ethereumjs-util": {
|
||||||
"version": "github:ethereumjs/ethereumjs-util#ac5d0908536b447083ea422b435da27f26615de9",
|
"version": "github:ethereumjs/ethereumjs-util#ac5d0908536b447083ea422b435da27f26615de9",
|
||||||
|
"from": "github:ethereumjs/ethereumjs-util#ac5d0908536b447083ea422b435da27f26615de9",
|
||||||
"requires": {
|
"requires": {
|
||||||
"bn.js": "4.11.8",
|
"bn.js": "4.11.8",
|
||||||
"create-hash": "1.1.3",
|
"create-hash": "1.1.3",
|
||||||
@ -9095,7 +9105,7 @@
|
|||||||
},
|
},
|
||||||
"event-stream": {
|
"event-stream": {
|
||||||
"version": "3.3.4",
|
"version": "3.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
|
"resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
|
||||||
"integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
|
"integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -11811,6 +11821,7 @@
|
|||||||
},
|
},
|
||||||
"gulp": {
|
"gulp": {
|
||||||
"version": "github:gulpjs/gulp#71c094a51c7972d26f557899ddecab0210ef3776",
|
"version": "github:gulpjs/gulp#71c094a51c7972d26f557899ddecab0210ef3776",
|
||||||
|
"from": "github:gulpjs/gulp#4.0",
|
||||||
"requires": {
|
"requires": {
|
||||||
"glob-watcher": "4.0.0",
|
"glob-watcher": "4.0.0",
|
||||||
"gulp-cli": "2.0.1",
|
"gulp-cli": "2.0.1",
|
||||||
@ -18193,7 +18204,7 @@
|
|||||||
"integrity": "sha512-LKd2OoIT9Re/OG38zXbd5pyHIk2IfcOUczCwkYXl5iJIbufg9nqpweh66VfPwMkUlrEvc7YVvtQdmSrB9V9TkQ==",
|
"integrity": "sha512-LKd2OoIT9Re/OG38zXbd5pyHIk2IfcOUczCwkYXl5iJIbufg9nqpweh66VfPwMkUlrEvc7YVvtQdmSrB9V9TkQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"async": "1.5.2",
|
"async": "1.5.2",
|
||||||
"ethereumjs-util": "github:ethereumjs/ethereumjs-util#ac5d0908536b447083ea422b435da27f26615de9",
|
"ethereumjs-util": "^5.0.0",
|
||||||
"level-ws": "0.0.0",
|
"level-ws": "0.0.0",
|
||||||
"levelup": "1.3.9",
|
"levelup": "1.3.9",
|
||||||
"memdown": "1.4.1",
|
"memdown": "1.4.1",
|
||||||
@ -31215,7 +31226,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bignumber.js": {
|
"bignumber.js": {
|
||||||
"version": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934"
|
"version": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934",
|
||||||
|
"from": "git+https://github.com/frozeman/bignumber.js-nolookahead.git"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -31696,6 +31708,7 @@
|
|||||||
},
|
},
|
||||||
"websocket": {
|
"websocket": {
|
||||||
"version": "git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c",
|
"version": "git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c",
|
||||||
|
"from": "websocket@git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c",
|
||||||
"requires": {
|
"requires": {
|
||||||
"debug": "2.6.9",
|
"debug": "2.6.9",
|
||||||
"nan": "2.8.0",
|
"nan": "2.8.0",
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
"dist": "gulp dist",
|
"dist": "gulp dist",
|
||||||
"doc": "jsdoc -c development/tools/.jsdoc.json",
|
"doc": "jsdoc -c development/tools/.jsdoc.json",
|
||||||
"test": "npm run test:unit && npm run test:integration && npm run lint",
|
"test": "npm run test:unit && npm run test:integration && npm run lint",
|
||||||
"test:unit": "cross-env METAMASK_ENV=test mocha --exit --require test/setup.js --recursive \"test/unit/**/*.js\"",
|
"test:unit": "cross-env METAMASK_ENV=test mocha --exit --require test/setup.js --recursive \"test/unit/**/*.js\" && dot-only-hunter",
|
||||||
"test:single": "cross-env METAMASK_ENV=test mocha --require test/helper.js",
|
"test:single": "cross-env METAMASK_ENV=test mocha --require test/helper.js",
|
||||||
"test:integration": "npm run test:integration:build && npm run test:flat && npm run test:mascara",
|
"test:integration": "npm run test:integration:build && npm run test:flat && npm run test:mascara",
|
||||||
"test:integration:build": "gulp build:scss",
|
"test:integration:build": "gulp build:scss",
|
||||||
@ -98,7 +98,7 @@
|
|||||||
"eth-hd-keyring": "^1.2.1",
|
"eth-hd-keyring": "^1.2.1",
|
||||||
"eth-json-rpc-filters": "^1.2.6",
|
"eth-json-rpc-filters": "^1.2.6",
|
||||||
"eth-json-rpc-infura": "^3.0.0",
|
"eth-json-rpc-infura": "^3.0.0",
|
||||||
"eth-keyring-controller": "^3.1.1",
|
"eth-keyring-controller": "^3.1.3",
|
||||||
"eth-phishing-detect": "^1.1.4",
|
"eth-phishing-detect": "^1.1.4",
|
||||||
"eth-query": "^2.1.2",
|
"eth-query": "^2.1.2",
|
||||||
"eth-sig-util": "^1.4.2",
|
"eth-sig-util": "^1.4.2",
|
||||||
@ -221,6 +221,7 @@
|
|||||||
"css-loader": "^0.28.11",
|
"css-loader": "^0.28.11",
|
||||||
"deep-freeze-strict": "^1.1.1",
|
"deep-freeze-strict": "^1.1.1",
|
||||||
"del": "^3.0.0",
|
"del": "^3.0.0",
|
||||||
|
"dot-only-hunter": "^1.0.3",
|
||||||
"envify": "^4.0.0",
|
"envify": "^4.0.0",
|
||||||
"enzyme": "^3.3.0",
|
"enzyme": "^3.3.0",
|
||||||
"enzyme-adapter-react-15": "^1.0.5",
|
"enzyme-adapter-react-15": "^1.0.5",
|
||||||
|
@ -11,9 +11,8 @@ const GIFEncoder = require('gifencoder')
|
|||||||
const pngFileStream = require('png-file-stream')
|
const pngFileStream = require('png-file-stream')
|
||||||
const sizeOfPng = require('image-size/lib/types/png')
|
const sizeOfPng = require('image-size/lib/types/png')
|
||||||
const By = webdriver.By
|
const By = webdriver.By
|
||||||
const { delay, buildWebDriver } = require('./func')
|
|
||||||
const localesIndex = require('../../app/_locales/index.json')
|
const localesIndex = require('../../app/_locales/index.json')
|
||||||
// const localesIndex = []
|
const { delay, buildChromeWebDriver, buildFirefoxWebdriver, installWebExt, getExtensionIdChrome, getExtensionIdFirefox } = require('../e2e/func')
|
||||||
|
|
||||||
const eth = new Ethjs(new Ethjs.HttpProvider('http://localhost:8545'))
|
const eth = new Ethjs(new Ethjs.HttpProvider('http://localhost:8545'))
|
||||||
|
|
||||||
@ -50,11 +49,10 @@ async function captureAllScreens() {
|
|||||||
|
|
||||||
await cleanScreenShotDir()
|
await cleanScreenShotDir()
|
||||||
|
|
||||||
// setup selenium and install extension
|
|
||||||
const extPath = path.resolve('dist/chrome')
|
const extPath = path.resolve('dist/chrome')
|
||||||
driver = buildWebDriver(extPath)
|
driver = buildChromeWebDriver(extPath)
|
||||||
await driver.get('chrome://extensions-frame')
|
const extensionId = await getExtensionIdChrome(driver)
|
||||||
const extensionId = await driver.executeScript('return document.querySelector("extensions-manager").shadowRoot.querySelector("extensions-view-manager extensions-item-list").shadowRoot.querySelector("#container > div.items-container > extensions-item:nth-child(2)").getAttribute("id")')
|
|
||||||
await driver.get(`chrome-extension://${extensionId}/home.html`)
|
await driver.get(`chrome-extension://${extensionId}/home.html`)
|
||||||
await delay(500)
|
await delay(500)
|
||||||
tabs = await driver.getAllWindowHandles()
|
tabs = await driver.getAllWindowHandles()
|
||||||
|
Loading…
Reference in New Issue
Block a user