diff options
author | Thomas Huang <tmashuang@users.noreply.github.com> | 2018-11-23 03:06:46 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-23 03:06:46 +0800 |
commit | be3619cd802536894097d81e7f31d38b0c2b3e9f (patch) | |
tree | 2591ff5a9fe64f2dbd9fa089f5c51e8d0141be24 /app/scripts/metamask-controller.js | |
parent | 337a4e1b4ea7a560d773bc262b2adffd1617a39b (diff) | |
parent | 804b273cec61246f0d23efd461ccd2cc5c64bf22 (diff) | |
download | tangerine-wallet-browser-be3619cd802536894097d81e7f31d38b0c2b3e9f.tar tangerine-wallet-browser-be3619cd802536894097d81e7f31d38b0c2b3e9f.tar.gz tangerine-wallet-browser-be3619cd802536894097d81e7f31d38b0c2b3e9f.tar.bz2 tangerine-wallet-browser-be3619cd802536894097d81e7f31d38b0c2b3e9f.tar.lz tangerine-wallet-browser-be3619cd802536894097d81e7f31d38b0c2b3e9f.tar.xz tangerine-wallet-browser-be3619cd802536894097d81e7f31d38b0c2b3e9f.tar.zst tangerine-wallet-browser-be3619cd802536894097d81e7f31d38b0c2b3e9f.zip |
Merge pull request #5793 from MetaMask/develop
Bring master up to date with develop
Diffstat (limited to 'app/scripts/metamask-controller.js')
-rw-r--r-- | app/scripts/metamask-controller.js | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 1f6a8659b..f3cd078b8 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -37,6 +37,7 @@ const TransactionController = require('./controllers/transactions') const BalancesController = require('./controllers/computed-balances') const TokenRatesController = require('./controllers/token-rates') const DetectTokensController = require('./controllers/detect-tokens') +const ProviderApprovalController = require('./controllers/provider-approval') const nodeify = require('./lib/nodeify') const accountImporter = require('./account-import-strategies') const getBuyEthUrl = require('./lib/buy-eth-url') @@ -89,7 +90,7 @@ module.exports = class MetamaskController extends EventEmitter { this.preferencesController = new PreferencesController({ initState: initState.PreferencesController, initLangCode: opts.initLangCode, - showWatchAssetUi: opts.showWatchAssetUi, + openPopup: opts.openPopup, network: this.networkController, }) @@ -116,6 +117,7 @@ module.exports = class MetamaskController extends EventEmitter { // token exchange rate tracker this.tokenRatesController = new TokenRatesController({ + currency: this.currencyController.store, preferences: this.preferencesController.store, }) @@ -198,7 +200,7 @@ module.exports = class MetamaskController extends EventEmitter { this.networkController.on('networkDidChange', () => { this.balancesController.updateAllBalances() var currentCurrency = this.currencyController.getCurrentCurrency() - this.setCurrentCurrency(currentCurrency, function() {}) + this.setCurrentCurrency(currentCurrency, function () {}) }) this.balancesController.updateAllBalances() @@ -219,6 +221,15 @@ module.exports = class MetamaskController extends EventEmitter { this.typedMessageManager = new TypedMessageManager({ networkController: this.networkController }) this.publicConfigStore = this.initPublicConfigStore() + this.providerApprovalController = new ProviderApprovalController({ + closePopup: opts.closePopup, + keyringController: this.keyringController, + openPopup: opts.openPopup, + platform: opts.platform, + preferencesController: this.preferencesController, + publicConfigStore: this.publicConfigStore, + }) + this.store.updateStructure({ TransactionController: this.txController.store, KeyringController: this.keyringController.store, @@ -248,6 +259,7 @@ module.exports = class MetamaskController extends EventEmitter { NoticeController: this.noticeController.memStore, ShapeshiftController: this.shapeshiftController.store, InfuraController: this.infuraController.store, + ProviderApprovalController: this.providerApprovalController.store, }) this.memStore.subscribe(this.sendUpdate.bind(this)) } @@ -263,7 +275,11 @@ module.exports = class MetamaskController extends EventEmitter { }, version, // account mgmt - getAccounts: async () => { + getAccounts: async ({ origin }) => { + // Expose no accounts if this origin has not been approved, preventing + // account-requring RPC methods from completing successfully + const exposeAccounts = this.providerApprovalController.shouldExposeAccounts(origin) + if (origin !== 'MetaMask' && !exposeAccounts) { return [] } const isUnlocked = this.keyringController.memStore.getState().isUnlocked const selectedAddress = this.preferencesController.getSelectedAddress() // only show address if account is unlocked @@ -349,6 +365,7 @@ module.exports = class MetamaskController extends EventEmitter { const noticeController = this.noticeController const addressBookController = this.addressBookController const networkController = this.networkController + const providerApprovalController = this.providerApprovalController return { // etc @@ -406,7 +423,7 @@ module.exports = class MetamaskController extends EventEmitter { setAddressBook: nodeify(addressBookController.setAddressBook, addressBookController), // KeyringController - setLocked: nodeify(keyringController.setLocked, keyringController), + setLocked: nodeify(this.setLocked, this), createNewVaultAndKeychain: nodeify(this.createNewVaultAndKeychain, this), createNewVaultAndRestore: nodeify(this.createNewVaultAndRestore, this), addNewKeyring: nodeify(keyringController.addNewKeyring, keyringController), @@ -437,6 +454,10 @@ module.exports = class MetamaskController extends EventEmitter { // notices checkNotices: noticeController.updateNoticesList.bind(noticeController), markNoticeRead: noticeController.markNoticeRead.bind(noticeController), + + approveProviderRequest: providerApprovalController.approveProviderRequest.bind(providerApprovalController), + clearApprovedOrigins: providerApprovalController.clearApprovedOrigins.bind(providerApprovalController), + rejectProviderRequest: providerApprovalController.rejectProviderRequest.bind(providerApprovalController), } } @@ -1556,4 +1577,12 @@ module.exports = class MetamaskController extends EventEmitter { whitelistPhishingDomain (hostname) { return this.blacklistController.whitelistDomain(hostname) } + + /** + * Locks MetaMask + */ + setLocked () { + this.providerApprovalController.setLocked() + return this.keyringController.setLocked() + } } |