Skip to content

Commit

Permalink
feat: Bump queued-request-controller to ^1.0.0 (#25310)
Browse files Browse the repository at this point in the history
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

Bumps `@metamask/queued-request-controller` to `^1.0.0` in order to
handle the case where `eth_requestAccounts` requests that would not
cause a confirmation to be presented to the user (because they have
permitted some accounts for that dapp) would be stuck behind the request
queue when they could just be passed through.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/25310?quickstart=1)

## **Related issues**

See: MetaMask/core#4423
Fixes: #25407

## **Manual testing steps**

1. Open https://metamask.github.io/test-dapp/ and https://app.odos.xyz/,
connect to both
1. On the Test Dapp, send an EIP 1559 txn, but do not confirm/reject the
confirmation nor close the popup
1. Reload ODOS
1. ODOS should show that is connected to MetaMask in the top right of
the webpage
1. Open console on the ODOS page
1. run `await window.ethereum.request({method: 'eth_requestAccounts'})`,
it should return immediately with the permitted accounts


## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**



### **After**


https://github.com/MetaMask/metamask-extension/assets/918701/b76607ef-b0a3-4943-b1d5-85f8cd766343




## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

---------

Co-authored-by: MetaMask Bot <[email protected]>
  • Loading branch information
jiexi and metamaskbot authored Jun 20, 2024
1 parent 03741c9 commit ba8d84e
Show file tree
Hide file tree
Showing 9 changed files with 228 additions and 144 deletions.
16 changes: 14 additions & 2 deletions app/scripts/metamask-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,8 @@ export default class MetamaskController extends EventEmitter {
],
allowedEvents: ['SelectedNetworkController:stateChange'],
}),
methodsRequiringNetworkSwitch,
shouldRequestSwitchNetwork: ({ method }) =>
methodsRequiringNetworkSwitch.includes(method),
clearPendingConfirmations,
});

Expand Down Expand Up @@ -5132,7 +5133,18 @@ export default class MetamaskController extends EventEmitter {
useRequestQueue: this.preferencesController.getUseRequestQueue.bind(
this.preferencesController,
),
methodsWithConfirmation,
shouldEnqueueRequest: (request) => {
if (
request.method === 'eth_requestAccounts' &&
this.permissionController.hasPermission(
request.origin,
PermissionNames.eth_accounts,
)
) {
return false;
}
return methodsWithConfirmation.includes(request.method);
},
});
engine.push(requestQueueMiddleware);

Expand Down
39 changes: 13 additions & 26 deletions lavamoat/browserify/beta/policy.json
Original file line number Diff line number Diff line change
Expand Up @@ -1795,9 +1795,9 @@
"@metamask/network-controller>@metamask/controller-utils": true,
"@metamask/network-controller>@metamask/eth-json-rpc-infura": true,
"@metamask/network-controller>@metamask/eth-json-rpc-provider": true,
"@metamask/network-controller>@metamask/json-rpc-engine": true,
"@metamask/network-controller>@metamask/swappable-obj-proxy": true,
"@metamask/rpc-errors": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true,
"browserify>assert": true,
"uuid": true
Expand Down Expand Up @@ -1850,15 +1850,8 @@
},
"@metamask/network-controller>@metamask/eth-json-rpc-provider": {
"packages": {
"@metamask/network-controller>@metamask/json-rpc-engine": true,
"@metamask/safe-event-emitter": true
}
},
"@metamask/network-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true
}
},
"@metamask/notification-controller": {
Expand Down Expand Up @@ -1920,9 +1913,9 @@
"packages": {
"@metamask/permission-controller>@metamask/base-controller": true,
"@metamask/permission-controller>@metamask/controller-utils": true,
"@metamask/permission-controller>@metamask/json-rpc-engine": true,
"@metamask/permission-controller>nanoid": true,
"@metamask/rpc-errors": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true,
"deep-freeze-strict": true,
"immer": true
Expand Down Expand Up @@ -1954,13 +1947,6 @@
"eth-ens-namehash": true
}
},
"@metamask/permission-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
}
},
"@metamask/permission-controller>nanoid": {
"globals": {
"crypto.getRandomValues": true
Expand All @@ -1972,13 +1958,6 @@
"@metamask/utils": true
}
},
"@metamask/permission-log-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
}
},
"@metamask/phishing-controller": {
"globals": {
"fetch": true
Expand Down Expand Up @@ -2092,13 +2071,21 @@
},
"@metamask/queued-request-controller": {
"packages": {
"@metamask/base-controller": true,
"@metamask/permission-log-controller>@metamask/json-rpc-engine": true,
"@metamask/queued-request-controller>@metamask/base-controller": true,
"@metamask/rpc-errors": true,
"@metamask/selected-network-controller": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true
}
},
"@metamask/queued-request-controller>@metamask/base-controller": {
"globals": {
"setTimeout": true
},
"packages": {
"immer": true
}
},
"@metamask/rate-limit-controller": {
"globals": {
"setTimeout": true
Expand Down
39 changes: 13 additions & 26 deletions lavamoat/browserify/flask/policy.json
Original file line number Diff line number Diff line change
Expand Up @@ -1795,9 +1795,9 @@
"@metamask/network-controller>@metamask/controller-utils": true,
"@metamask/network-controller>@metamask/eth-json-rpc-infura": true,
"@metamask/network-controller>@metamask/eth-json-rpc-provider": true,
"@metamask/network-controller>@metamask/json-rpc-engine": true,
"@metamask/network-controller>@metamask/swappable-obj-proxy": true,
"@metamask/rpc-errors": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true,
"browserify>assert": true,
"uuid": true
Expand Down Expand Up @@ -1850,15 +1850,8 @@
},
"@metamask/network-controller>@metamask/eth-json-rpc-provider": {
"packages": {
"@metamask/network-controller>@metamask/json-rpc-engine": true,
"@metamask/safe-event-emitter": true
}
},
"@metamask/network-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true
}
},
"@metamask/notification-controller": {
Expand Down Expand Up @@ -1920,9 +1913,9 @@
"packages": {
"@metamask/permission-controller>@metamask/base-controller": true,
"@metamask/permission-controller>@metamask/controller-utils": true,
"@metamask/permission-controller>@metamask/json-rpc-engine": true,
"@metamask/permission-controller>nanoid": true,
"@metamask/rpc-errors": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true,
"deep-freeze-strict": true,
"immer": true
Expand Down Expand Up @@ -1954,13 +1947,6 @@
"eth-ens-namehash": true
}
},
"@metamask/permission-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
}
},
"@metamask/permission-controller>nanoid": {
"globals": {
"crypto.getRandomValues": true
Expand All @@ -1972,13 +1958,6 @@
"@metamask/utils": true
}
},
"@metamask/permission-log-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
}
},
"@metamask/phishing-controller": {
"globals": {
"fetch": true
Expand Down Expand Up @@ -2092,13 +2071,21 @@
},
"@metamask/queued-request-controller": {
"packages": {
"@metamask/base-controller": true,
"@metamask/permission-log-controller>@metamask/json-rpc-engine": true,
"@metamask/queued-request-controller>@metamask/base-controller": true,
"@metamask/rpc-errors": true,
"@metamask/selected-network-controller": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true
}
},
"@metamask/queued-request-controller>@metamask/base-controller": {
"globals": {
"setTimeout": true
},
"packages": {
"immer": true
}
},
"@metamask/rate-limit-controller": {
"globals": {
"setTimeout": true
Expand Down
39 changes: 13 additions & 26 deletions lavamoat/browserify/main/policy.json
Original file line number Diff line number Diff line change
Expand Up @@ -1795,9 +1795,9 @@
"@metamask/network-controller>@metamask/controller-utils": true,
"@metamask/network-controller>@metamask/eth-json-rpc-infura": true,
"@metamask/network-controller>@metamask/eth-json-rpc-provider": true,
"@metamask/network-controller>@metamask/json-rpc-engine": true,
"@metamask/network-controller>@metamask/swappable-obj-proxy": true,
"@metamask/rpc-errors": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true,
"browserify>assert": true,
"uuid": true
Expand Down Expand Up @@ -1850,15 +1850,8 @@
},
"@metamask/network-controller>@metamask/eth-json-rpc-provider": {
"packages": {
"@metamask/network-controller>@metamask/json-rpc-engine": true,
"@metamask/safe-event-emitter": true
}
},
"@metamask/network-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true
}
},
"@metamask/notification-controller": {
Expand Down Expand Up @@ -1920,9 +1913,9 @@
"packages": {
"@metamask/permission-controller>@metamask/base-controller": true,
"@metamask/permission-controller>@metamask/controller-utils": true,
"@metamask/permission-controller>@metamask/json-rpc-engine": true,
"@metamask/permission-controller>nanoid": true,
"@metamask/rpc-errors": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true,
"deep-freeze-strict": true,
"immer": true
Expand Down Expand Up @@ -1954,13 +1947,6 @@
"eth-ens-namehash": true
}
},
"@metamask/permission-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
}
},
"@metamask/permission-controller>nanoid": {
"globals": {
"crypto.getRandomValues": true
Expand All @@ -1972,13 +1958,6 @@
"@metamask/utils": true
}
},
"@metamask/permission-log-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
}
},
"@metamask/phishing-controller": {
"globals": {
"fetch": true
Expand Down Expand Up @@ -2092,13 +2071,21 @@
},
"@metamask/queued-request-controller": {
"packages": {
"@metamask/base-controller": true,
"@metamask/permission-log-controller>@metamask/json-rpc-engine": true,
"@metamask/queued-request-controller>@metamask/base-controller": true,
"@metamask/rpc-errors": true,
"@metamask/selected-network-controller": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true
}
},
"@metamask/queued-request-controller>@metamask/base-controller": {
"globals": {
"setTimeout": true
},
"packages": {
"immer": true
}
},
"@metamask/rate-limit-controller": {
"globals": {
"setTimeout": true
Expand Down
39 changes: 13 additions & 26 deletions lavamoat/browserify/mmi/policy.json
Original file line number Diff line number Diff line change
Expand Up @@ -2080,9 +2080,9 @@
"@metamask/network-controller>@metamask/controller-utils": true,
"@metamask/network-controller>@metamask/eth-json-rpc-infura": true,
"@metamask/network-controller>@metamask/eth-json-rpc-provider": true,
"@metamask/network-controller>@metamask/json-rpc-engine": true,
"@metamask/network-controller>@metamask/swappable-obj-proxy": true,
"@metamask/rpc-errors": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true,
"browserify>assert": true,
"uuid": true
Expand Down Expand Up @@ -2135,15 +2135,8 @@
},
"@metamask/network-controller>@metamask/eth-json-rpc-provider": {
"packages": {
"@metamask/network-controller>@metamask/json-rpc-engine": true,
"@metamask/safe-event-emitter": true
}
},
"@metamask/network-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true
}
},
"@metamask/notification-controller": {
Expand Down Expand Up @@ -2205,9 +2198,9 @@
"packages": {
"@metamask/permission-controller>@metamask/base-controller": true,
"@metamask/permission-controller>@metamask/controller-utils": true,
"@metamask/permission-controller>@metamask/json-rpc-engine": true,
"@metamask/permission-controller>nanoid": true,
"@metamask/rpc-errors": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true,
"deep-freeze-strict": true,
"immer": true
Expand Down Expand Up @@ -2239,13 +2232,6 @@
"eth-ens-namehash": true
}
},
"@metamask/permission-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
}
},
"@metamask/permission-controller>nanoid": {
"globals": {
"crypto.getRandomValues": true
Expand All @@ -2257,13 +2243,6 @@
"@metamask/utils": true
}
},
"@metamask/permission-log-controller>@metamask/json-rpc-engine": {
"packages": {
"@metamask/rpc-errors": true,
"@metamask/safe-event-emitter": true,
"@metamask/utils": true
}
},
"@metamask/phishing-controller": {
"globals": {
"fetch": true
Expand Down Expand Up @@ -2377,13 +2356,21 @@
},
"@metamask/queued-request-controller": {
"packages": {
"@metamask/base-controller": true,
"@metamask/permission-log-controller>@metamask/json-rpc-engine": true,
"@metamask/queued-request-controller>@metamask/base-controller": true,
"@metamask/rpc-errors": true,
"@metamask/selected-network-controller": true,
"@metamask/snaps-controllers>@metamask/json-rpc-engine": true,
"@metamask/utils": true
}
},
"@metamask/queued-request-controller>@metamask/base-controller": {
"globals": {
"setTimeout": true
},
"packages": {
"immer": true
}
},
"@metamask/rate-limit-controller": {
"globals": {
"setTimeout": true
Expand Down
Loading

0 comments on commit ba8d84e

Please sign in to comment.