Skip to content

Commit 2718cc4

Browse files
committed
Merge branch 'develop' into jongsun/perf/trace/241009-account-watcher
2 parents 3790fc4 + 68ba635 commit 2718cc4

31 files changed

+2860
-2224
lines changed

app/scripts/controllers/metametrics-controller.test.ts

Lines changed: 1968 additions & 0 deletions
Large diffs are not rendered by default.

app/scripts/controllers/metametrics.ts renamed to app/scripts/controllers/metametrics-controller.ts

Lines changed: 286 additions & 146 deletions
Large diffs are not rendered by default.

app/scripts/controllers/metametrics-data-deletion/metametrics-data-deletion.test.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ControllerMessenger } from '@metamask/base-controller';
22
import {
3+
AllowedActions,
34
MetaMetricsDataDeletionController,
45
type MetaMetricsDataDeletionControllerMessengerActions,
56
} from './metametrics-data-deletion';
@@ -10,8 +11,8 @@ describe('MetaMetricsDataDeletionController', () => {
1011
const mockMetaMetricsId = 'mockId';
1112
const mockTaskId = 'mockTaskId';
1213
const { controller, dataDeletionService } = setupController({
14+
metaMetricsId: mockMetaMetricsId,
1315
options: {
14-
getMetaMetricsId: jest.fn().mockReturnValue(mockMetaMetricsId),
1516
dataDeletionService: {
1617
createDataDeletionRegulationTask: jest
1718
.fn()
@@ -43,8 +44,8 @@ describe('MetaMetricsDataDeletionController', () => {
4344
const mockMetaMetricsId = 'mockId';
4445
const mockTaskId = 'mockTaskId';
4546
const { controller, dataDeletionService } = setupController({
47+
metaMetricsId: mockMetaMetricsId,
4648
options: {
47-
getMetaMetricsId: jest.fn().mockReturnValue(mockMetaMetricsId),
4849
dataDeletionService: {
4950
createDataDeletionRegulationTask: jest
5051
.fn()
@@ -76,9 +77,7 @@ describe('MetaMetricsDataDeletionController', () => {
7677

7778
it('fails to creates a data deletion task when user has never participating in metrics tracking', async () => {
7879
const { controller } = setupController({
79-
options: {
80-
getMetaMetricsId: jest.fn().mockReturnValue(null),
81-
},
80+
metaMetricsId: null,
8281
});
8382
await expect(
8483
controller.createMetaMetricsDataDeletionTask(),
@@ -94,8 +93,8 @@ describe('MetaMetricsDataDeletionController', () => {
9493
const mockMetaMetricsId = 'mockId';
9594
const mockTaskId = 'mockTaskId';
9695
const { controller, dataDeletionService } = setupController({
96+
metaMetricsId: mockMetaMetricsId,
9797
options: {
98-
getMetaMetricsId: jest.fn().mockReturnValue(mockMetaMetricsId),
9998
dataDeletionService: {
10099
createDataDeletionRegulationTask: jest
101100
.fn()
@@ -128,28 +127,35 @@ describe('MetaMetricsDataDeletionController', () => {
128127
*
129128
* @param options - Setup options.
130129
* @param options.options - Controller constructor options.
130+
* @param options.metaMetricsId - The MetaMetrics ID to use.
131131
* @returns The test controller, a messenger instance, and related mocks.
132132
*/
133133
function setupController({
134134
options,
135+
metaMetricsId,
135136
}: {
136137
options?: Partial<
137138
ConstructorParameters<typeof MetaMetricsDataDeletionController>[0]
138139
>;
140+
metaMetricsId?: string | null;
139141
} = {}): {
140142
controller: MetaMetricsDataDeletionController;
141143
dataDeletionService: ConstructorParameters<
142144
typeof MetaMetricsDataDeletionController
143145
>[0]['dataDeletionService'];
144146
messenger: ControllerMessenger<
145-
MetaMetricsDataDeletionControllerMessengerActions,
147+
MetaMetricsDataDeletionControllerMessengerActions | AllowedActions,
146148
never
147149
>;
148150
} {
149-
const messenger = new ControllerMessenger<
150-
MetaMetricsDataDeletionControllerMessengerActions,
151+
const controllerMessenger = new ControllerMessenger<
152+
MetaMetricsDataDeletionControllerMessengerActions | AllowedActions,
151153
never
152154
>();
155+
controllerMessenger.registerActionHandler(
156+
'MetaMetricsController:getState',
157+
jest.fn().mockReturnValue({ metaMetricsId }),
158+
);
153159
const mockCreateDataDeletionRegulationTaskResponse = 'mockRegulateId';
154160
const mockFetchDeletionRegulationStatusResponse = 'UNKNOWN';
155161
const mockDataDeletionService = {
@@ -164,9 +170,9 @@ function setupController({
164170
const constructorOptions = {
165171
dataDeletionService: mockDataDeletionService,
166172
getMetaMetricsId: jest.fn().mockReturnValue('mockMetaMetricsId'),
167-
messenger: messenger.getRestricted({
173+
messenger: controllerMessenger.getRestricted({
168174
name: 'MetaMetricsDataDeletionController',
169-
allowedActions: [],
175+
allowedActions: ['MetaMetricsController:getState'],
170176
allowedEvents: [],
171177
}),
172178
...options,
@@ -176,6 +182,6 @@ function setupController({
176182
return {
177183
controller,
178184
dataDeletionService: constructorOptions.dataDeletionService,
179-
messenger,
185+
messenger: controllerMessenger,
180186
};
181187
}

app/scripts/controllers/metametrics-data-deletion/metametrics-data-deletion.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
import { PublicInterface } from '@metamask/utils';
66
import type { DataDeletionService } from '../../services/data-deletion-service';
77
import { DeleteRegulationStatus } from '../../../../shared/constants/metametrics';
8+
import { MetaMetricsControllerGetStateAction } from '../metametrics-controller';
89

910
// Unique name for the controller
1011
const controllerName = 'MetaMetricsDataDeletionController';
@@ -70,14 +71,24 @@ export type MetaMetricsDataDeletionControllerMessengerActions =
7071
| CreateMetaMetricsDataDeletionTaskAction
7172
| UpdateDataDeletionTaskStatusAction;
7273

74+
/**
75+
* Actions that this controller is allowed to call.
76+
*/
77+
export type AllowedActions = MetaMetricsControllerGetStateAction;
78+
79+
/**
80+
* Events that this controller is allowed to subscribe.
81+
*/
82+
export type AllowedEvents = never;
83+
7384
// Type for the messenger of MetaMetricsDataDeletionController
7485
export type MetaMetricsDataDeletionControllerMessenger =
7586
RestrictedControllerMessenger<
7687
typeof controllerName,
77-
MetaMetricsDataDeletionControllerMessengerActions,
78-
never,
79-
never,
80-
never
88+
MetaMetricsDataDeletionControllerMessengerActions | AllowedActions,
89+
AllowedEvents,
90+
AllowedActions['type'],
91+
AllowedEvents['type']
8192
>;
8293

8394
/**
@@ -91,27 +102,22 @@ export class MetaMetricsDataDeletionController extends BaseController<
91102
> {
92103
#dataDeletionService: PublicInterface<DataDeletionService>;
93104

94-
#getMetaMetricsId: () => string | null;
95-
96105
/**
97106
* Creates a MetaMetricsDataDeletionController instance.
98107
*
99108
* @param args - The arguments to this function.
100109
* @param args.dataDeletionService - The service used for deleting data.
101110
* @param args.messenger - Messenger used to communicate with BaseV2 controller.
102111
* @param args.state - Initial state to set on this controller.
103-
* @param args.getMetaMetricsId - A function that returns the current MetaMetrics ID.
104112
*/
105113
constructor({
106114
dataDeletionService,
107115
messenger,
108116
state,
109-
getMetaMetricsId,
110117
}: {
111118
dataDeletionService: PublicInterface<DataDeletionService>;
112119
messenger: MetaMetricsDataDeletionControllerMessenger;
113120
state?: Partial<MetaMetricsDataDeletionState>;
114-
getMetaMetricsId: () => string | null;
115121
}) {
116122
// Call the constructor of BaseControllerV2
117123
super({
@@ -120,7 +126,6 @@ export class MetaMetricsDataDeletionController extends BaseController<
120126
name: controllerName,
121127
state: { ...getDefaultState(), ...state },
122128
});
123-
this.#getMetaMetricsId = getMetaMetricsId;
124129
this.#dataDeletionService = dataDeletionService;
125130
this.#registerMessageHandlers();
126131
}
@@ -146,7 +151,9 @@ export class MetaMetricsDataDeletionController extends BaseController<
146151
*
147152
*/
148153
async createMetaMetricsDataDeletionTask(): Promise<void> {
149-
const metaMetricsId = this.#getMetaMetricsId();
154+
const { metaMetricsId } = this.messagingSystem.call(
155+
'MetaMetricsController:getState',
156+
);
150157
if (!metaMetricsId) {
151158
throw new Error('MetaMetrics ID not found');
152159
}

0 commit comments

Comments
 (0)