1
- import type {
2
- AcceptRequest as AcceptApprovalRequest ,
3
- AddApprovalRequest ,
4
- HasApprovalRequest ,
5
- RejectRequest as RejectApprovalRequest ,
6
- } from '@metamask/approval-controller' ;
7
- import { Messenger } from '@metamask/base-controller' ;
8
1
import { isPlainObject } from '@metamask/controller-utils' ;
9
2
import { JsonRpcEngine } from '@metamask/json-rpc-engine' ;
3
+ import {
4
+ Messenger ,
5
+ MOCK_ANY_NAMESPACE ,
6
+ type MessengerActions ,
7
+ type MessengerEvents ,
8
+ type MockAnyNamespace ,
9
+ } from '@metamask/messenger' ;
10
10
import type { Json , JsonRpcRequest } from '@metamask/utils' ;
11
11
import {
12
12
assertIsJsonRpcFailure ,
@@ -22,8 +22,7 @@ import type {
22
22
CaveatMutator ,
23
23
ExtractSpecifications ,
24
24
PermissionConstraint ,
25
- PermissionControllerActions ,
26
- PermissionControllerEvents ,
25
+ PermissionControllerMessenger ,
27
26
PermissionOptions ,
28
27
PermissionsRequest ,
29
28
RestrictedMethodOptions ,
@@ -40,7 +39,6 @@ import {
40
39
import * as errors from './errors' ;
41
40
import type { EndowmentGetterParams } from './Permission' ;
42
41
import { SubjectType } from './SubjectMetadataController' ;
43
- import type { GetSubjectMetadata } from './SubjectMetadataController' ;
44
42
45
43
// Caveat types and specifications
46
44
@@ -546,13 +544,6 @@ type DefaultPermissionSpecifications = ExtractSpecifications<
546
544
547
545
const controllerName = 'PermissionController' as const ;
548
546
549
- type AllowedActions =
550
- | HasApprovalRequest
551
- | AddApprovalRequest
552
- | AcceptApprovalRequest
553
- | RejectApprovalRequest
554
- | GetSubjectMetadata ;
555
-
556
547
/**
557
548
* Params for `ApprovalController:addRequest` of type `wallet_requestPermissions`.
558
549
*/
@@ -565,41 +556,59 @@ type AddPermissionRequestParams = {
565
556
566
557
type AddPermissionRequestArgs = [ string , AddPermissionRequestParams ] ;
567
558
559
+ type AllPermissionControllerActions =
560
+ MessengerActions < PermissionControllerMessenger > ;
561
+
562
+ type AllPermissionControllerEvents =
563
+ MessengerEvents < PermissionControllerMessenger > ;
564
+
565
+ type RootMessenger = Messenger <
566
+ MockAnyNamespace ,
567
+ AllPermissionControllerActions ,
568
+ AllPermissionControllerEvents
569
+ > ;
570
+
568
571
/**
569
- * Gets an unrestricted messenger. Used for tests.
572
+ * Creates and returns a root messenger for testing
570
573
*
571
- * @returns The unrestricted messenger.
574
+ * @returns A messenger instance
572
575
*/
573
- function getUnrestrictedMessenger ( ) {
574
- return new Messenger <
575
- PermissionControllerActions | AllowedActions ,
576
- PermissionControllerEvents
577
- > ( ) ;
576
+ function getRootMessenger ( ) : RootMessenger {
577
+ return new Messenger ( {
578
+ namespace : MOCK_ANY_NAMESPACE ,
579
+ } ) ;
578
580
}
579
581
580
582
/**
581
- * Gets a restricted messenger.
583
+ * Gets a messenger for the permission controller .
582
584
* Used as a default in {@link getPermissionControllerOptions}.
583
585
*
584
- * @param messenger - Optional parameter to pass in a messenger
585
- * @returns The restricted messenger.
586
+ * @param rootMessenger - Optional parameter to pass in a root messenger
587
+ * @returns The messenger for the permission controller .
586
588
*/
587
589
function getPermissionControllerMessenger (
588
- messenger = getUnrestrictedMessenger ( ) ,
589
- ) {
590
- return messenger . getRestricted < typeof controllerName , AllowedActions [ 'type' ] > (
591
- {
592
- name : controllerName ,
593
- allowedActions : [
594
- 'ApprovalController:hasRequest' ,
595
- 'ApprovalController:addRequest' ,
596
- 'ApprovalController:acceptRequest' ,
597
- 'ApprovalController:rejectRequest' ,
598
- 'SubjectMetadataController:getSubjectMetadata' ,
599
- ] ,
600
- allowedEvents : [ ] ,
601
- } ,
602
- ) ;
590
+ rootMessenger = getRootMessenger ( ) ,
591
+ ) : PermissionControllerMessenger {
592
+ const messenger = new Messenger <
593
+ typeof controllerName ,
594
+ AllPermissionControllerActions ,
595
+ AllPermissionControllerEvents ,
596
+ RootMessenger
597
+ > ( {
598
+ namespace : controllerName ,
599
+ parent : rootMessenger ,
600
+ } ) ;
601
+ rootMessenger . delegate ( {
602
+ actions : [
603
+ 'ApprovalController:hasRequest' ,
604
+ 'ApprovalController:addRequest' ,
605
+ 'ApprovalController:acceptRequest' ,
606
+ 'ApprovalController:rejectRequest' ,
607
+ 'SubjectMetadataController:getSubjectMetadata' ,
608
+ ] ,
609
+ messenger,
610
+ } ) ;
611
+ return messenger ;
603
612
}
604
613
605
614
/**
@@ -5572,7 +5581,7 @@ describe('PermissionController', () => {
5572
5581
5573
5582
describe ( 'controller actions' , ( ) => {
5574
5583
it ( 'action: PermissionController:clearPermissions' , ( ) => {
5575
- const messenger = getUnrestrictedMessenger ( ) ;
5584
+ const messenger = getRootMessenger ( ) ;
5576
5585
const options = getPermissionControllerOptions ( {
5577
5586
messenger : getPermissionControllerMessenger ( messenger ) ,
5578
5587
} ) ;
@@ -5597,7 +5606,7 @@ describe('PermissionController', () => {
5597
5606
} ) ;
5598
5607
5599
5608
it ( 'action: PermissionController:getEndowments' , async ( ) => {
5600
- const messenger = getUnrestrictedMessenger ( ) ;
5609
+ const messenger = getRootMessenger ( ) ;
5601
5610
const options = getPermissionControllerOptions ( {
5602
5611
messenger : getPermissionControllerMessenger ( messenger ) ,
5603
5612
} ) ;
@@ -5670,7 +5679,7 @@ describe('PermissionController', () => {
5670
5679
} ) ;
5671
5680
5672
5681
it ( 'action: PermissionController:getSubjectNames' , ( ) => {
5673
- const messenger = getUnrestrictedMessenger ( ) ;
5682
+ const messenger = getRootMessenger ( ) ;
5674
5683
const options = getPermissionControllerOptions ( {
5675
5684
messenger : getPermissionControllerMessenger ( messenger ) ,
5676
5685
} ) ;
@@ -5698,7 +5707,7 @@ describe('PermissionController', () => {
5698
5707
} ) ;
5699
5708
5700
5709
it ( 'action: PermissionController:hasPermission' , ( ) => {
5701
- const messenger = getUnrestrictedMessenger ( ) ;
5710
+ const messenger = getRootMessenger ( ) ;
5702
5711
const options = getPermissionControllerOptions ( {
5703
5712
messenger : getPermissionControllerMessenger ( messenger ) ,
5704
5713
} ) ;
@@ -5760,7 +5769,7 @@ describe('PermissionController', () => {
5760
5769
} ) ;
5761
5770
5762
5771
it ( 'action: PermissionController:hasPermissions' , ( ) => {
5763
- const messenger = getUnrestrictedMessenger ( ) ;
5772
+ const messenger = getRootMessenger ( ) ;
5764
5773
const options = getPermissionControllerOptions ( {
5765
5774
messenger : getPermissionControllerMessenger ( messenger ) ,
5766
5775
} ) ;
@@ -5790,7 +5799,7 @@ describe('PermissionController', () => {
5790
5799
} ) ;
5791
5800
5792
5801
it ( 'action: PermissionController:getPermissions' , ( ) => {
5793
- const messenger = getUnrestrictedMessenger ( ) ;
5802
+ const messenger = getRootMessenger ( ) ;
5794
5803
const options = getPermissionControllerOptions ( {
5795
5804
messenger : getPermissionControllerMessenger ( messenger ) ,
5796
5805
} ) ;
@@ -5824,7 +5833,7 @@ describe('PermissionController', () => {
5824
5833
} ) ;
5825
5834
5826
5835
it ( 'action: PermissionController:revokeAllPermissions' , ( ) => {
5827
- const messenger = getUnrestrictedMessenger ( ) ;
5836
+ const messenger = getRootMessenger ( ) ;
5828
5837
const options = getPermissionControllerOptions ( {
5829
5838
messenger : getPermissionControllerMessenger ( messenger ) ,
5830
5839
} ) ;
@@ -5858,7 +5867,7 @@ describe('PermissionController', () => {
5858
5867
} ) ;
5859
5868
5860
5869
it ( 'action: PermissionController:revokePermissionForAllSubjects' , ( ) => {
5861
- const messenger = getUnrestrictedMessenger ( ) ;
5870
+ const messenger = getRootMessenger ( ) ;
5862
5871
const options = getPermissionControllerOptions ( {
5863
5872
messenger : getPermissionControllerMessenger ( messenger ) ,
5864
5873
} ) ;
@@ -5898,7 +5907,7 @@ describe('PermissionController', () => {
5898
5907
} ) ;
5899
5908
5900
5909
it ( 'action: PermissionController:grantPermissions' , async ( ) => {
5901
- const messenger = getUnrestrictedMessenger ( ) ;
5910
+ const messenger = getRootMessenger ( ) ;
5902
5911
const options = getPermissionControllerOptions ( {
5903
5912
messenger : getPermissionControllerMessenger ( messenger ) ,
5904
5913
} ) ;
@@ -5919,7 +5928,7 @@ describe('PermissionController', () => {
5919
5928
} ) ;
5920
5929
5921
5930
it ( 'action: PermissionController:grantPermissionsIncremental' , async ( ) => {
5922
- const messenger = getUnrestrictedMessenger ( ) ;
5931
+ const messenger = getRootMessenger ( ) ;
5923
5932
const options = getPermissionControllerOptions ( {
5924
5933
messenger : getPermissionControllerMessenger ( messenger ) ,
5925
5934
} ) ;
@@ -5943,7 +5952,7 @@ describe('PermissionController', () => {
5943
5952
} ) ;
5944
5953
5945
5954
it ( 'action: PermissionController:requestPermissions' , async ( ) => {
5946
- const messenger = getUnrestrictedMessenger ( ) ;
5955
+ const messenger = getRootMessenger ( ) ;
5947
5956
const options = getPermissionControllerOptions ( {
5948
5957
messenger : getPermissionControllerMessenger ( messenger ) ,
5949
5958
} ) ;
@@ -5970,7 +5979,7 @@ describe('PermissionController', () => {
5970
5979
} ) ;
5971
5980
5972
5981
it ( 'action: PermissionController:requestPermissionsIncremental' , async ( ) => {
5973
- const messenger = getUnrestrictedMessenger ( ) ;
5982
+ const messenger = getRootMessenger ( ) ;
5974
5983
const options = getPermissionControllerOptions ( {
5975
5984
messenger : getPermissionControllerMessenger ( messenger ) ,
5976
5985
} ) ;
@@ -5997,7 +6006,7 @@ describe('PermissionController', () => {
5997
6006
} ) ;
5998
6007
5999
6008
it ( 'action: PermissionController:updateCaveat' , async ( ) => {
6000
- const messenger = getUnrestrictedMessenger ( ) ;
6009
+ const messenger = getRootMessenger ( ) ;
6001
6010
const state = {
6002
6011
subjects : {
6003
6012
'metamask.io' : {
0 commit comments