Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1080 commits
Select commit Hold shift + click to select a range
6865dc5
Update LavaMoat policies
metamaskbot Jan 16, 2025
0412864
dedupe
adonesky1 Jan 16, 2025
792306f
fix wallet locked behavior
adonesky1 Jan 16, 2025
dea12c0
Update LavaMoat policies
metamaskbot Jan 16, 2025
ba9efbb
revert unecessary change to fixtures
jiexi Jan 16, 2025
7797d67
Merge branch 'main' into caip25-permission-migration
jiexi Jan 16, 2025
608ac95
revert unecessary change to fixtures 2
jiexi Jan 16, 2025
03624be
restore styling changes fixture
jiexi Jan 16, 2025
bd1e230
undo fixture changes that aren't needed
jiexi Jan 16, 2025
76f77b0
Merge branch 'main' into caip25-permission-migration
jiexi Jan 16, 2025
962c343
lint
jiexi Jan 16, 2025
3d0cfdd
lint
jiexi Jan 16, 2025
aba2d8a
Merge branch 'main' into caip25-permission-migration
jiexi Jan 17, 2025
1fb0f29
Update ui/components/multichain/edit-accounts-modal/edit-accounts-mod…
adonesky1 Jan 17, 2025
1bf080d
Multichain API E2E Test: handling when MetaMask is password locked (#…
ffmcgee725 Jan 17, 2025
5f96f94
Fix wallet_revokePermission spec
jiexi Jan 17, 2025
4762e5c
Merge branch 'main' into caip25-permission-migration
jiexi Jan 17, 2025
18440d6
Merge remote-tracking branch 'origin/caip25-permission-migration' int…
jiexi Jan 17, 2025
15fa319
Merge branch 'main' into caip25-permission-migration
jiexi Jan 17, 2025
c1b4b29
Merge branch 'caip25-permission-migration' into jl/caip-multichain-mi…
jiexi Jan 17, 2025
540899a
Merge remote-tracking branch 'origin/jl/caip-multichain-migrate-core'…
jiexi Jan 17, 2025
ad7169d
Update LavaMoat policies
metamaskbot Jan 17, 2025
d52827e
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 21, 2025
9b74e4c
Merge remote-tracking branch 'origin/jl/caip-multichain-migrate-core'…
jiexi Jan 21, 2025
a15a668
use preview build 2ba45577
jiexi Jan 21, 2025
a91d9b4
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 21, 2025
f85ad62
Update LavaMoat policies
metamaskbot Jan 21, 2025
6e0dbeb
remove caipPermissionAdapterMiddleware
jiexi Jan 21, 2025
721c85b
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 22, 2025
58be906
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 23, 2025
66d0308
yarn dedupe
jiexi Jan 23, 2025
d4410f2
Update LavaMoat policies
metamaskbot Jan 23, 2025
b8ae6c3
lint?
jiexi Jan 23, 2025
7f32e4d
Merge remote-tracking branch 'origin/jl/caip-multichain-migrate-core'…
jiexi Jan 23, 2025
0c2a696
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 23, 2025
a69d816
remove unneeded hooks
jiexi Jan 23, 2025
cfe4339
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 23, 2025
67dae48
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 24, 2025
d65cabf
fix remove network
jiexi Jan 24, 2025
fc286d9
lint
jiexi Jan 24, 2025
ea676b4
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 24, 2025
1ff78c6
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 28, 2025
51ad9d9
yarn
jiexi Jan 28, 2025
7199240
Restore wallet locked behavior
jiexi Jan 28, 2025
96c77a2
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 28, 2025
ef209cd
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 28, 2025
0c27eb1
move missing caveat check
jiexi Jan 29, 2025
6bcd229
lint
jiexi Jan 29, 2025
464e972
remove connect.spec
jiexi Jan 29, 2025
2d08956
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 29, 2025
5bd7d64
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 29, 2025
16f9f38
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 30, 2025
d5ab747
Merge remote-tracking branch 'origin/jl/caip-multichain-migrate-core'…
jiexi Jan 30, 2025
acdac1f
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 30, 2025
970ad3b
lint
jiexi Jan 30, 2025
94c8dd9
WIP: adapt to new CAIP-25 approval UI
jiexi Jan 30, 2025
08c32f0
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 30, 2025
ec9ddca
update approval UI to modify only evm portion of returned CAIP-25 per…
jiexi Jan 30, 2025
e0c548e
update wallet_createSession to pass in a validated CAIP-25 permission…
jiexi Jan 30, 2025
95e1275
lint
jiexi Jan 30, 2025
c18440b
Fix connect page supported request chain id check
jiexi Jan 30, 2025
ffbf346
WIP: fix snaps request accounts
jiexi Jan 30, 2025
a265050
Fix snaps account grant
jiexi Jan 30, 2025
9b6cf67
lint
jiexi Jan 30, 2025
16c0b5d
lint
jiexi Jan 31, 2025
80c0fd8
Update app/scripts/lib/rpc-method-middleware/handlers/wallet-createSe…
jiexi Jan 31, 2025
4feca47
delete password-locked spec
jiexi Jan 31, 2025
c40afc6
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 31, 2025
c5cfbde
Merge remote-tracking branch 'origin/jl/caip-multichain-migrate-core'…
jiexi Jan 31, 2025
cf15677
remove console.log
jiexi Jan 31, 2025
22e6e6b
loosen wallet_revokeSession fixture assert
jiexi Jan 31, 2025
6d511af
remove secp256k1 v5 force resolution
adonesky1 Jan 31, 2025
a139124
yarn.lock reset
adonesky1 Jan 31, 2025
7cce39d
Update LavaMoat policies
metamaskbot Jan 31, 2025
6867030
lint
adonesky1 Jan 31, 2025
3e7c8ae
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Jan 31, 2025
66a4c65
Merge remote-tracking branch 'origin/jl/caip-multichain-migrate-core'…
jiexi Jan 31, 2025
6311273
Update app/scripts/lib/rpc-method-middleware/handlers/request-account…
adonesky1 Feb 3, 2025
b07aac2
remove comment
adonesky1 Feb 3, 2025
ccb8644
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 3, 2025
164d189
Merge remote-tracking branch 'origin/jl/caip-multichain-migrate-core'…
jiexi Feb 3, 2025
22957ef
Update LavaMoat policies
FrederikBolding Feb 4, 2025
3613394
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 5, 2025
f054b45
Merge remote-tracking branch 'origin/jl/caip-multichain-migrate-core'…
jiexi Feb 5, 2025
97a5097
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 5, 2025
3da5f33
Merge branch 'jl/caip-multichain-migrate-core' into jl/mmp-3725/caip-…
jiexi Feb 5, 2025
e22b7bc
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 5, 2025
f665043
yarn dedupe
jiexi Feb 5, 2025
ecdb0b8
Update app/scripts/metamask-controller.js
jiexi Feb 5, 2025
e1d3631
DRY multichain eth subscription add and removal
jiexi Feb 5, 2025
fd30905
Merge remote-tracking branch 'origin/jl/caip-multichain-migrate-core'…
jiexi Feb 5, 2025
f90be7c
update getRemovedAuthorizations to include removed scopes as well as …
jiexi Feb 5, 2025
8a5f2cf
switch to createDeepEqualSelector
jiexi Feb 6, 2025
551b56c
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 6, 2025
75db2f7
add default value to createUnsupportedMethodMiddleware
jiexi Feb 6, 2025
1e20517
Bump api-specs to 0.10.14
jiexi Feb 6, 2025
84cc007
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 6, 2025
d5445f1
yarn dedupe
jiexi Feb 6, 2025
eed6a10
Lint
jiexi Feb 6, 2025
1d43a4a
codefence UNSUPPORTED_RPC_METHODS in MMC
jiexi Feb 6, 2025
03a40aa
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 6, 2025
5152d05
bump @metamask/api-specs to 0.10.15
jiexi Feb 7, 2025
7103714
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 7, 2025
57c5874
Fix sessionChanged not firing
jiexi Feb 7, 2025
c960844
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 7, 2025
701820c
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 8, 2025
68f4c35
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 12, 2025
f4b58b4
Add permission differs
jiexi Feb 12, 2025
de7ebf7
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 12, 2025
259e36a
Make createUnsupportedMethodMiddleware accept a Set again
jiexi Feb 12, 2025
1230a38
Add back BARAD_DUR flag. Replaces Multichain API flask code fences. S…
jiexi Feb 12, 2025
e381705
rename BARAD_DUR to MULTICHAIN_API
jiexi Feb 12, 2025
a219b31
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 12, 2025
1cf91a7
Fix flipped connectExternalCaip condition
jiexi Feb 12, 2025
1b8d61b
Fix MMC test
jiexi Feb 12, 2025
4446500
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 13, 2025
b2be74f
fix bad merge
jiexi Feb 13, 2025
986adf9
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 13, 2025
9b81f88
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 13, 2025
9ae93dc
Merge remote-tracking branch 'origin/jl/caip-multichain-migrate-core'…
jiexi Feb 13, 2025
db2d7b3
WIP update e2e tests
jiexi Feb 13, 2025
454ffdc
Finish update e2e tests -ish
jiexi Feb 13, 2025
7f6ad99
Merge branch 'main' into jl/caip-multichain-migrate-core
jiexi Feb 13, 2025
2a454ef
Fix ganacheOptions renamed to localNodeOptions
jiexi Feb 13, 2025
d9c024c
Merge branch 'main', remote-tracking branch 'origin' into jl/caip-mul…
adonesky1 Feb 14, 2025
3cf5850
bump api-specs version
adonesky1 Feb 18, 2025
55f1101
Merge branch 'main' into jl/caip-multichain-migrate-core
adonesky1 Feb 18, 2025
1a59473
Merge branch 'main' into jl/caip-multichain-migrate-core
adonesky1 Feb 18, 2025
3130fa9
dedupe
adonesky1 Feb 18, 2025
f86d829
Update LavaMoat policies
metamaskbot Feb 18, 2025
60c3e89
Update LavaMoat policies
metamaskbot Feb 18, 2025
157a555
chore: update @metamask/multichain (#30495)
ffmcgee725 Feb 25, 2025
52304af
Rename supportedRequiredScopesObjects/supportedOptionalScopesObjects
mcmire Feb 27, 2025
808cf97
Roll back change to ui/ducks/bridge/selectors.ts
mcmire Feb 27, 2025
3b8eaf6
Merge branch 'main' into jl/caip-multichain-migrate-core
mcmire Feb 27, 2025
166a8cb
Revert maskType: 'alpha' changes
mcmire Feb 27, 2025
9a3599e
Add link to planning ticket
mcmire Feb 27, 2025
5a48fbc
Update LavaMoat policies
metamaskbot Feb 27, 2025
c279367
Remove duplicate key
mcmire Feb 28, 2025
30e82ba
Revert this file, we can update it later
mcmire Feb 28, 2025
fdf1cd0
Use provider.request and not provider.sendAsync
mcmire Feb 28, 2025
825188e
Use createSelector instead of createDeepEqualSelector
mcmire Mar 3, 2025
44d34d9
Merge branch 'main' into jl/caip-multichain-migrate-core
mcmire Mar 3, 2025
ee43107
Bump api-specs to make e2e test pass
mcmire Mar 3, 2025
8d7d22d
Update LavaMoat policies
metamaskbot Mar 3, 2025
ec39686
Add missing MethodNames
mcmire Mar 3, 2025
5074638
Perhaps fix api-specs-multichain
mcmire Mar 4, 2025
e50c7a2
Get more tests passing
mcmire Mar 4, 2025
a3f2b02
Fix lint issues
mcmire Mar 4, 2025
7b0b747
Fix more tests
mcmire Mar 4, 2025
8a8fb7f
Merge branch 'main' into jl/caip-multichain-migrate-core
mcmire Mar 4, 2025
5d9aa06
Maybe get more tests to pass
mcmire Mar 4, 2025
9c02711
Address nit in createSession handler
mcmire Mar 5, 2025
deb1b0f
Ohhhhh, I forgot the end()
mcmire Mar 5, 2025
0079d5e
Fix wallet_invokeMethod tests
mcmire Mar 5, 2025
0b26c90
Merge branch 'main' into jl/caip-multichain-migrate-core
mcmire Mar 5, 2025
3917dd3
WIP
jiexi Jan 15, 2025
2a173b5
fix
adonesky1 Mar 6, 2025
d5effdc
remove flask build flags
adonesky1 Mar 6, 2025
501c13d
Merge branch 'main' into jl/caip-multichain-migrate-core
mcmire Mar 7, 2025
cf5e8e3
Maybe mock the foo.io HTTP request in the multichain API tests?
mcmire Mar 7, 2025
303b4e2
Add rejectApprovalRequestsForOrigin as a hook for multichain method m…
mcmire Mar 7, 2025
9714b30
Mock foo.io in multichain API specs
mcmire Mar 7, 2025
b6102ed
Fix multichain-api test helpers
mcmire Mar 7, 2025
6b690a1
Group new wallet_ constants with others
mcmire Mar 7, 2025
ea57e9a
Invert this condition
mcmire Mar 7, 2025
63f0ba4
Fix lint error
mcmire Mar 7, 2025
c700391
Merge branch 'main' into jl/caip-multichain-migrate-core
adonesky1 Mar 7, 2025
eb59152
Merge branch 'jl/caip-multichain-migrate-core' into jl/mmp-3725/caip-…
jiexi Mar 11, 2025
d5ba871
Merge branch 'jl/mmp-3725/caip-multichain-add-postMessage-stream-non-…
jiexi Mar 11, 2025
452cb80
Add METAMASK_CAIP_PROVIDER constant. Rename METAMASK_PROVIDER to META…
jiexi Mar 11, 2025
cc90dde
Rename extensionChannel to extensionEip1193Channel.
jiexi Mar 11, 2025
203ae0e
Destroy extensionCaipChannel when mux is destroyed
jiexi Mar 11, 2025
68508bc
add ignore streams for caip provider to cookie and phishing
jiexi Mar 11, 2025
011ccd5
ignore caip provider stream in provider-stream
jiexi Mar 11, 2025
c51ccf3
restore inpage
jiexi Mar 11, 2025
65bc1d2
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 11, 2025
0d4ff35
restore import order background.js
jiexi Mar 11, 2025
801efd0
cleanup mmc logs
jiexi Mar 11, 2025
5e879d2
add non-chromium check-ish
jiexi Mar 11, 2025
80e66b7
add "start:flask:mv2"
jiexi Mar 11, 2025
d3ff1fa
lint
jiexi Mar 12, 2025
420346e
add isExternallyConnectableWildcardEnabled and use in background.js
jiexi Mar 12, 2025
255d2da
move flask externally_connectable into chrome config
jiexi Mar 12, 2025
47a5241
Fix isExternallyConnectableWildcardEnabled
jiexi Mar 12, 2025
bf06ceb
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 12, 2025
2f20d57
lint
jiexi Mar 12, 2025
99ca4fe
restore flask manifest changes
jiexi Mar 12, 2025
9d4e166
remove isExternallyConnectableWildcardEnabled. use isFirefox
jiexi Mar 12, 2025
56e6b33
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 12, 2025
ae4d091
lint
jiexi Mar 12, 2025
9d9f69d
add missing ignore in MMC
jiexi Mar 12, 2025
51d0b4b
guard multichain connect behind origin checks
jiexi Mar 12, 2025
d533d6a
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 12, 2025
9a6e1ef
Rename METAMASK_CAIP_PROVIDER to METAMASK_CAIP_MULTICHAIN_PROVIDER an…
jiexi Mar 19, 2025
e32e8cf
Rename connect fn names to be more clear
jiexi Mar 19, 2025
b6f6bbb
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 19, 2025
936c0fd
Rename connectEip1193WindowPostMessage to connectWindowPostMessage, c…
jiexi Mar 19, 2025
a4ab9a9
refactor connect helpers again
jiexi Mar 19, 2025
6372150
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 19, 2025
670a24e
fix missing sender context
jiexi Mar 19, 2025
5e67959
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 20, 2025
699b1cb
fix wrong remotePort.sender param position
jiexi Mar 24, 2025
5a8c5bf
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 24, 2025
68aacdd
Replace jsdoc Port with chrome.runtime.Port
jiexi Mar 24, 2025
e10fa39
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 24, 2025
d907c7e
remove guard on connectExternallyConnectable trackDappView
jiexi Mar 24, 2025
19ba0e7
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 24, 2025
4a70d06
remove describeBrowserOnly. add sendMultichainApiRequest. fix connect…
jiexi Mar 25, 2025
605dfc8
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 25, 2025
02de12c
lint
jiexi Mar 25, 2025
fd3a416
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 25, 2025
4e3a3b3
temp run test-e2e-firefox-flask on feature branch
jiexi Mar 25, 2025
36453f0
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 25, 2025
4645b19
replace method button clicks with id selectors
jiexi Mar 25, 2025
a332928
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 25, 2025
99d59d9
Add revokeSession to page object class
jiexi Mar 25, 2025
4e1c5e1
add MessageSender typing
jiexi Mar 25, 2025
f29ea4d
add jsdoc types
jiexi Mar 25, 2025
caf3bfa
fix revoke button spec
jiexi Mar 25, 2025
70c5c4f
restore circleci config
jiexi Mar 25, 2025
9f3d3ff
lint
jiexi Mar 26, 2025
623b99b
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 26, 2025
5128a8c
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 27, 2025
929963a
Update test/e2e/flask/multichain-api/wallet_revokeSession.spec.ts
jiexi Mar 28, 2025
a63e413
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Mar 28, 2025
ec58a4e
Merge remote-tracking branch 'origin/jl/mmp-3725/caip-multichain-add-…
jiexi Mar 28, 2025
0de9acb
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
adonesky1 Mar 31, 2025
1c53f7d
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Apr 2, 2025
b061bd9
Merge remote-tracking branch 'origin/jl/mmp-3725/caip-multichain-add-…
jiexi Apr 2, 2025
334aa0c
jsdoc
jiexi Apr 4, 2025
367965c
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Apr 4, 2025
4ae7b89
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
adonesky1 Apr 8, 2025
569d8e0
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
adonesky1 Apr 8, 2025
57090f3
await button click
jiexi Apr 8, 2025
f2a6438
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Apr 8, 2025
ca74228
Merge remote-tracking branch 'origin/jl/mmp-3725/caip-multichain-add-…
jiexi Apr 8, 2025
9697f0d
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Apr 9, 2025
911bcc3
move caipStream instantiation into background.js, externally_connecta…
jiexi Apr 15, 2025
4469a70
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Apr 15, 2025
2563c64
bump @metamask/test-dapp-multichain to 0.9.0
jiexi Apr 15, 2025
7f73b1d
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Apr 15, 2025
314b6d8
fix sendMultichainApiRequest helper
jiexi Apr 16, 2025
64dd96c
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Apr 16, 2025
c980eda
Merge remote-tracking branch 'origin/jl/mmp-3725/caip-multichain-add-…
jiexi Apr 16, 2025
cfd65a2
fix account address id selector
jiexi Apr 16, 2025
5dc4318
fix MMC spec
jiexi Apr 16, 2025
1d5c64c
Merge branch 'main' into jl/mmp-3725/caip-multichain-add-postMessage-…
jiexi Apr 16, 2025
fb09cd9
lint
jiexi Apr 16, 2025
f0c8812
fix custom address selector
jiexi Apr 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 93 additions & 49 deletions app/scripts/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ import {
FakeTrezorBridge,
} from '../../test/stub/keyring-bridge';
import { getCurrentChainId } from '../../shared/modules/selectors/networks';
import { createCaipStream } from '../../shared/modules/caip-stream';
import getFetchWithTimeout from '../../shared/modules/fetch-with-timeout';
import { PersistenceManager } from './lib/stores/persistence-manager';
import ExtensionStore from './lib/stores/extension-store';
Expand All @@ -72,12 +73,17 @@ import {
shouldEmitDappViewedEvent,
} from './lib/util';
import { createOffscreen } from './offscreen';
import { setupMultiplex } from './lib/stream-utils';
import { generateWalletState } from './fixtures/generate-wallet-state';
import rawFirstTimeState from './first-time-state';

/* eslint-enable import/first */

import { COOKIE_ID_MARKETING_WHITELIST_ORIGINS } from './constants/marketing-site-whitelist';
import {
METAMASK_CAIP_MULTICHAIN_PROVIDER,
METAMASK_EIP_1193_PROVIDER,
} from './constants/stream';
import { PREINSTALLED_SNAPS_URLS } from './constants/snaps';

// eslint-disable-next-line @metamask/design-tokens/color-no-hex
Expand Down Expand Up @@ -371,29 +377,60 @@ function maybeDetectPhishing(theController) {
}

// These are set after initialization
let connectRemote;
let connectExternalExtension;
let connectExternalCaip;
/**
* Connects a WindowPostMessage Port to the MetaMask controller.
* This method identifies trusted (MetaMask) interfaces, and connects them differently from untrusted (web pages).
*
* @callback ConnectWindowPostMessage
* @param {chrome.runtime.Port} remotePort - The port provided by a new context.
* @returns {void}
*/
/** @type {ConnectWindowPostMessage} */
let connectWindowPostMessage;

/**
* Connects a externally_connecatable Port to the MetaMask controller.
* This method identifies dapp clients and connects them differently from extension clients.
*
* @callback ConnectExternallyConnectable
* @param {chrome.runtime.Port} remotePort - The port provided by a new context.
*/
/** @type {ConnectExternallyConnectable} */
let connectExternallyConnectable;

/**
* Connects a Duplexstream to the MetaMask controller EIP-1193 API (via a multiplexed duplex stream).
*
* @callback ConnectEip1193
* @param {DuplexStream} connectionStream - The duplex stream.
* @param {chrome.runtime.MessageSender} sender - The remote port sender.
*/
/** @type {ConnectEip1193} */
let connectEip1193;

/**
* Connects a DuplexStream to the MetaMask controller Caip Multichain API.
*
* @callback ConnectCaipMultichain
* @param {DuplexStream} connectionStream - The duplex stream.
* @param {chrome.runtime.MessageSender} sender - The remote port sender.
*/
/** @type {ConnectCaipMultichain} */
let connectCaipMultichain;

browser.runtime.onConnect.addListener(async (...args) => {
// Queue up connection attempts here, waiting until after initialization
await isInitialized;

// This is set in `setupController`, which is called as part of initialization
connectRemote(...args);
connectWindowPostMessage(...args);
});
browser.runtime.onConnectExternal.addListener(async (...args) => {
// Queue up connection attempts here, waiting until after initialization
await isInitialized;
// This is set in `setupController`, which is called as part of initialization

const port = args[0];
const isDappConnecting = port.sender.tab?.id;
if (isDappConnecting && process.env.MULTICHAIN_API) {
connectExternalCaip(...args);
} else {
connectExternalExtension(...args);
}
// This is set in `setupController`, which is called as part of initialization
connectExternallyConnectable(...args);
});

function saveTimestamp() {
Expand Down Expand Up @@ -711,7 +748,7 @@ function emitDappViewedMetricEvent(origin) {
/**
* Track dapp connection when loaded and permissioned
*
* @param {Port} remotePort - The port provided by a new context.
* @param {chrome.runtime.Port} remotePort - The port provided by a new context.
*/
function trackDappView(remotePort) {
if (!remotePort.sender || !remotePort.sender.tab || !remotePort.sender.url) {
Expand Down Expand Up @@ -890,21 +927,7 @@ export function setupController(
}
};

/**
* A runtime.Port object, as provided by the browser:
*
* @see https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/Port
* @typedef Port
* @type Object
*/

/**
* Connects a Port to the MetaMask controller via a multiplexed duplex stream.
* This method identifies trusted (MetaMask) interfaces, and connects them differently from untrusted (web pages).
*
* @param {Port} remotePort - The port provided by a new context.
*/
connectRemote = async (remotePort) => {
connectWindowPostMessage = (remotePort) => {
const processName = remotePort.name;

if (metamaskBlockedPorts.includes(remotePort.name)) {
Expand Down Expand Up @@ -1011,45 +1034,66 @@ export function setupController(
connectionStream: portStreamForCookieHandlerPage,
});
}
connectExternalExtension(remotePort);

const portStream =
overrides?.getPortStream?.(remotePort) || new PortStream(remotePort);

connectEip1193(portStream, remotePort.sender);

if (process.env.MULTICHAIN_API && isFirefox) {
const mux = setupMultiplex(portStream);
mux.ignoreStream(METAMASK_EIP_1193_PROVIDER);

connectCaipMultichain(
mux.createStream(METAMASK_CAIP_MULTICHAIN_PROVIDER),
remotePort.sender,
);
}
}
};

// communication with page or other extension
connectExternalExtension = (remotePort) => {
connectExternallyConnectable = (remotePort) => {
const portStream =
overrides?.getPortStream?.(remotePort) || new PortStream(remotePort);

const isDappConnecting = remotePort.sender.tab?.id;
if (isDappConnecting && process.env.MULTICHAIN_API) {
if (metamaskBlockedPorts.includes(remotePort.name)) {
return;
}

// this is triggered when a new tab is opened, or origin(url) is changed
trackDappView(remotePort);

connectCaipMultichain(createCaipStream(portStream), remotePort.sender);
} else {
connectEip1193(portStream, remotePort.sender);
}
};

connectEip1193 = (connectionStream, sender) => {
controller.setupUntrustedCommunicationEip1193({
connectionStream: portStream,
sender: remotePort.sender,
connectionStream,
sender,
});
};

connectExternalCaip = async (remotePort) => {
connectCaipMultichain = (connectionStream, sender) => {
if (!process.env.MULTICHAIN_API) {
return;
}

if (metamaskBlockedPorts.includes(remotePort.name)) {
return;
}

// this is triggered when a new tab is opened, or origin(url) is changed
if (remotePort.sender && remotePort.sender.tab && remotePort.sender.url) {
trackDappView(remotePort);
}

const portStream =
overrides?.getPortStream?.(remotePort) || new PortStream(remotePort);

controller.setupUntrustedCommunicationCaip({
connectionStream: portStream,
sender: remotePort.sender,
connectionStream,
sender,
});
};

if (overrides?.registerConnectListeners) {
overrides.registerConnectListeners(connectRemote, connectExternalExtension);
overrides.registerConnectListeners(
connectWindowPostMessage,
connectEip1193,
);
}

//
Expand Down
3 changes: 2 additions & 1 deletion app/scripts/constants/stream.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ export const PHISHING_WARNING_PAGE = 'metamask-phishing-warning-page';

// stream channels
export const METAMASK_COOKIE_HANDLER = 'metamask-cookie-handler';
export const METAMASK_PROVIDER = 'metamask-provider';
export const METAMASK_EIP_1193_PROVIDER = 'metamask-provider';
export const METAMASK_CAIP_MULTICHAIN_PROVIDER = 'metamask-multichain-provider';
export const PHISHING_SAFELIST = 'metamask-phishing-safelist';
export const PHISHING_STREAM = 'phishing';

Expand Down
18 changes: 12 additions & 6 deletions app/scripts/metamask-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,6 @@ import {
getIsSmartTransaction,
getFeatureFlagsByChainId,
} from '../../shared/modules/selectors';
import { createCaipStream } from '../../shared/modules/caip-stream';
import { BaseUrl } from '../../shared/constants/urls';
import {
TOKEN_TRANSFER_LOG_TOPIC_HASH,
Expand Down Expand Up @@ -348,7 +347,11 @@ import { addTypedMessage, addPersonalMessage } from './lib/signature/util';
///: END:ONLY_INCLUDE_IF
import { LatticeKeyringOffscreen } from './lib/offscreen-bridge/lattice-offscreen-keyring';
import { WeakRefObjectMap } from './lib/WeakRefObjectMap';
import { METAMASK_COOKIE_HANDLER } from './constants/stream';
import {
METAMASK_CAIP_MULTICHAIN_PROVIDER,
METAMASK_COOKIE_HANDLER,
METAMASK_EIP_1193_PROVIDER,
} from './constants/stream';

// Notification controllers
import { createTxVerificationMiddleware } from './lib/tx-verification/tx-verification-middleware';
Expand Down Expand Up @@ -6146,10 +6149,11 @@ export default class MetamaskController extends EventEmitter {

// setup multiplexing
const mux = setupMultiplex(connectionStream);
mux.ignoreStream(METAMASK_CAIP_MULTICHAIN_PROVIDER);

// messages between inpage and background
this.setupProviderConnectionEip1193(
mux.createStream('metamask-provider'),
mux.createStream(METAMASK_EIP_1193_PROVIDER),
sender,
inputSubjectType,
);
Expand Down Expand Up @@ -6183,10 +6187,12 @@ export default class MetamaskController extends EventEmitter {
inputSubjectType = SubjectType.Website;
}

const caipStream = createCaipStream(connectionStream);

// messages between subject and background
this.setupProviderConnectionCaip(caipStream, sender, inputSubjectType);
this.setupProviderConnectionCaip(
connectionStream,
sender,
inputSubjectType,
);
}

/**
Expand Down
Loading
Loading