Skip to content

Commit

Permalink
WebUI: Split TestBrowserProxy from TestMock
Browse files Browse the repository at this point in the history
TestBrowserProxy was intended as a way to stub out BrowserProxy classes,
and to be set up extending an interface, e.g.:

class MyTestBrowserProxy extends TestBrowserProxy implements MyProxy {
}

Later on, the "fromClass()" initializer and related methods were added
in an attempt to transform TestBrowserProxy into a generic mocking
utility. Unfortunately, the need to support the huge number of
existing TestBrowserProxy users of the form above necessitated a few
type hacks, e.g. setting a default type of "any" for the template type
and allowing initialization via a constructor as well as via
fromClass. See
https://bugs.chromium.org/p/chromium/issues/detail?id=1076168#c8
for some initial discussion that came up when the pattern was added.

Moreover, there were several places in the code using TestBrowserProxy
in both ways, generally with a mock-style proxy wrapped inside the
"extends" style proxy. This further demonstrated TestBrowserProxy had
become 2 different classes merged into one (although the two share
some limited functionality, e.g. methodCalled()).

This CL forks TestBrowserProxy into TestBrowserProxy and TestMock,
removes the "fromClass" initializer and related methods from
TestBrowserProxy to make it clear it is intended to be used as above,
and makes the constructor for TestMock private and removes " = any"
to clarify that users wanting the generic mock should initialize it
only with fromClass().

Bug: 1076168
Change-Id: Ic55dd186a5a3835ab9fea2ef8ad96e2b98eeeff5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4232884
Reviewed-by: Demetrios Papadopoulos <dpapad@chromium.org>
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1103346}
  • Loading branch information
Rebekah Potter authored and Chromium LUCI CQ committed Feb 9, 2023
1 parent dc0c910 commit 6a6d224
Show file tree
Hide file tree
Showing 56 changed files with 322 additions and 211 deletions.
1 change: 1 addition & 0 deletions chrome/test/data/webui/BUILD.gn
Expand Up @@ -410,6 +410,7 @@ ts_library("build_ts") {
"mocked_metrics_reporter.ts",
"polymer_test_util.ts",
"test_browser_proxy.ts",
"test_mock.ts",
"test_open_window_proxy.ts",
"test_plural_string_proxy.ts",
"test_store_ts.ts",
Expand Down
Expand Up @@ -4,7 +4,7 @@

import {DialogArgs, DialogPage, DialogTask, PageHandlerRemote} from 'chrome://cloud-upload/cloud_upload.mojom-webui.js';
import {CloudUploadBrowserProxy} from 'chrome://cloud-upload/cloud_upload_browser_proxy.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';

export interface ProxyOptions {
fileName?: string|null;
Expand All @@ -21,10 +21,10 @@ export interface ProxyOptions {
* mojo responses.
*/
export class CloudUploadTestBrowserProxy implements CloudUploadBrowserProxy {
handler: PageHandlerRemote&TestBrowserProxy;
handler: TestMock<PageHandlerRemote>&PageHandlerRemote;

constructor(options: ProxyOptions) {
this.handler = TestBrowserProxy.fromClass(PageHandlerRemote);
this.handler = TestMock.fromClass(PageHandlerRemote);
const args: DialogArgs = {
fileNames: [],
dialogPage: options.dialogPage,
Expand Down Expand Up @@ -52,4 +52,4 @@ export class CloudUploadTestBrowserProxy implements CloudUploadBrowserProxy {
isTest() {
return true;
}
}
}
Expand Up @@ -10,6 +10,7 @@ import {FolderSelector} from 'chrome://manage-mirrorsync/components/folder_selec
import {PageHandlerRemote} from 'chrome://manage-mirrorsync/manage_mirrorsync.mojom-webui.js';
import {assertArrayEquals, assertNotEquals, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';
import {isVisible} from 'chrome://webui-test/test_util.js';

/**
Expand All @@ -18,11 +19,11 @@ import {isVisible} from 'chrome://webui-test/test_util.js';
*/
class ManageMirrorSyncTestBrowserProxy extends TestBrowserProxy implements
BrowserProxy {
handler: PageHandlerRemote&TestBrowserProxy;
handler: TestMock<PageHandlerRemote>&PageHandlerRemote;

constructor() {
super(['getChildFolders']);
this.handler = TestBrowserProxy.fromClass(PageHandlerRemote);
this.handler = TestMock.fromClass(PageHandlerRemote);
}
}

Expand Down
Expand Up @@ -8,19 +8,19 @@ import {DialogChoice, PageHandlerRemote} from 'chrome://office-fallback/office_f
import {OfficeFallbackBrowserProxy} from 'chrome://office-fallback/office_fallback_browser_proxy.js';
import type {OfficeFallbackElement} from 'chrome://office-fallback/office_fallback_dialog.js';
import {assertDeepEquals, assertEquals} from 'chrome://webui-test/chai_assert.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';


/**
* A test OfficeFallbackBrowserProxy implementation that enables to mock various
* mojo responses.
*/
class OfficeFallbackTestBrowserProxy implements OfficeFallbackBrowserProxy {
handler: PageHandlerRemote&TestBrowserProxy;
handler: TestMock<PageHandlerRemote>&PageHandlerRemote;
dialogArgs: string;

constructor() {
this.handler = TestBrowserProxy.fromClass(PageHandlerRemote);
this.handler = TestMock.fromClass(PageHandlerRemote);
// Creating JSON string as in OfficeFallbackDialog::GetDialogArgs().
const args = {
'titleText': 'a title',
Expand Down Expand Up @@ -114,4 +114,4 @@ suite('<office-fallback>', () => {
assertDeepEquals(
[DialogChoice.kCancel], testProxy.handler.getArgs('close'));
});
});
});
Expand Up @@ -9,7 +9,7 @@ import {AmbientObserver, AmbientPreviewLarge, Paths, PersonalizationRouter, Topi
import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {assertDeepEquals, assertEquals, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';

import {baseSetup, initElement, teardownElement} from './personalization_app_test_utils.js';
import {TestAmbientProvider} from './test_ambient_interface_provider.js';
Expand All @@ -21,7 +21,7 @@ suite('AmbientPreviewLargeTest', function() {
let ambientProvider: TestAmbientProvider;
let personalizationStore: TestPersonalizationStore;
const routerOriginal = PersonalizationRouter.instance;
const routerMock = TestBrowserProxy.fromClass(PersonalizationRouter);
const routerMock = TestMock.fromClass(PersonalizationRouter);

setup(() => {
const mocks = baseSetup();
Expand Down
Expand Up @@ -9,7 +9,7 @@ import {AmbientObserver, AmbientPreviewSmall, PersonalizationRouter, TopicSource
import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {assertEquals, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';

import {baseSetup, initElement, teardownElement} from './personalization_app_test_utils.js';
import {TestAmbientProvider} from './test_ambient_interface_provider.js';
Expand All @@ -21,7 +21,7 @@ suite('AmbientPreviewSmallTest', function() {
let ambientProvider: TestAmbientProvider;
let personalizationStore: TestPersonalizationStore;
const routerOriginal = PersonalizationRouter.instance;
const routerMock = TestBrowserProxy.fromClass(PersonalizationRouter);
const routerMock = TestMock.fromClass(PersonalizationRouter);

setup(() => {
loadTimeData.overrideValues({isAmbientModeAllowed: true});
Expand Down
Expand Up @@ -11,7 +11,7 @@ import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {Url} from 'chrome://resources/mojo/url/mojom/url.mojom-webui.js';
import {assertDeepEquals, assertEquals, assertFalse, assertNotEquals, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';

import {baseSetup, initElement, teardownElement} from './personalization_app_test_utils.js';
import {TestAmbientProvider} from './test_ambient_interface_provider.js';
Expand All @@ -29,7 +29,7 @@ suite('AmbientSubpageTest', function() {
let ambientProvider: TestAmbientProvider;
let personalizationStore: TestPersonalizationStore;
const routerOriginal = PersonalizationRouter.instance;
const routerMock = TestBrowserProxy.fromClass(PersonalizationRouter);
const routerMock = TestMock.fromClass(PersonalizationRouter);

setup(() => {
loadTimeData.overrideValues({
Expand Down
Expand Up @@ -8,7 +8,7 @@ import 'chrome://webui-test/mojo_webui_test_support.js';
import {fetchGooglePhotosAlbums, getCountText, GooglePhotosAlbum, GooglePhotosAlbums, initializeGooglePhotosData, PersonalizationActionName, PersonalizationRouter, SetErrorAction, WallpaperGridItem} from 'chrome://personalization/js/personalization_app.js';
import {assertDeepEquals, assertEquals, assertGT, assertNotEquals} from 'chrome://webui-test/chai_assert.js';
import {waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';

import {baseSetup, createSvgDataUrl, initElement, teardownElement} from './personalization_app_test_utils.js';
import {TestPersonalizationStore} from './test_personalization_store.js';
Expand Down Expand Up @@ -209,7 +209,7 @@ suite('GooglePhotosAlbumsTest', function() {
});

// Mock singleton |PersonalizationRouter|.
const router = TestBrowserProxy.fromClass(PersonalizationRouter);
const router = TestMock.fromClass(PersonalizationRouter);
PersonalizationRouter.instance = () => router;

// Mock |PersonalizationRouter.selectGooglePhotosAlbum()|.
Expand Down
Expand Up @@ -6,15 +6,16 @@ import {App, AppType, InstallReason, InstallSource, OptionalBool, PageCallbackRo
import {BrowserProxy} from 'chrome://resources/cr_components/app_management/browser_proxy.js';
import {createTriStatePermission} from 'chrome://resources/cr_components/app_management/permission_util.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';

export class TestAppManagementBrowserProxy extends TestBrowserProxy implements
BrowserProxy {
callbackRouter: PageCallbackRouter;
handler: PageHandlerRemote&TestBrowserProxy;
handler: TestMock<PageHandlerRemote>&PageHandlerRemote;

constructor() {
super(['recordEnumerationValue']);
this.handler = TestBrowserProxy.fromClass(PageHandlerRemote);
this.handler = TestMock.fromClass(PageHandlerRemote);
this.callbackRouter = new PageCallbackRouter();
}

Expand Down
6 changes: 3 additions & 3 deletions chrome/test/data/webui/cr_components/history_clusters_test.ts
Expand Up @@ -10,13 +10,13 @@ import {HistoryClustersElement} from 'chrome://resources/cr_components/history_c
import {Cluster, PageCallbackRouter, PageHandlerRemote, PageRemote, QueryResult, RawVisitData, URLVisit} from 'chrome://resources/cr_components/history_clusters/history_clusters.mojom-webui.js';
import {assertEquals} from 'chrome://webui-test/chai_assert.js';
import {flushTasks} from 'chrome://webui-test/polymer_test_util.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';

let handler: PageHandlerRemote&TestBrowserProxy;
let handler: TestMock<PageHandlerRemote>&PageHandlerRemote;
let callbackRouterRemote: PageRemote;

function createBrowserProxy() {
handler = TestBrowserProxy.fromClass(PageHandlerRemote);
handler = TestMock.fromClass(PageHandlerRemote);
const callbackRouter = new PageCallbackRouter();
BrowserProxyImpl.setInstance(new BrowserProxyImpl(handler, callbackRouter));
callbackRouterRemote = callbackRouter.$.bindNewPipeAndPassRemote();
Expand Down
Expand Up @@ -8,7 +8,7 @@ import {MostVisitedBrowserProxy} from 'chrome://resources/cr_components/most_vis
import {MostVisitedElement} from 'chrome://resources/cr_components/most_visited/most_visited.js';
import {MostVisitedPageCallbackRouter, MostVisitedPageHandlerRemote, MostVisitedPageRemote} from 'chrome://resources/cr_components/most_visited/most_visited.mojom-webui.js';
import {TextDirection} from 'chrome://resources/mojo/mojo/public/mojom/base/text_direction.mojom-webui.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';
import {eventToPromise} from 'chrome://webui-test/test_util.js';

import {assertFocus, keydown} from './most_visited_test_support.js';
Expand Down Expand Up @@ -47,7 +47,7 @@ suite('CrComponentsMostVisitedFocusTest', () => {
setup(() => {
document.body.innerHTML = window.trustedTypes!.emptyHTML;

const handler = TestBrowserProxy.fromClass(MostVisitedPageHandlerRemote);
const handler = TestMock.fromClass(MostVisitedPageHandlerRemote);
const callbackRouter = new MostVisitedPageCallbackRouter();
MostVisitedBrowserProxy.setInstance(
new MostVisitedBrowserProxy(handler, callbackRouter));
Expand Down
13 changes: 7 additions & 6 deletions chrome/test/data/webui/cr_components/most_visited_test.ts
Expand Up @@ -11,19 +11,20 @@ import {MostVisitedWindowProxy} from 'chrome://resources/cr_components/most_visi
import {CrButtonElement} from 'chrome://resources/cr_elements/cr_button/cr_button.js';
import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js';
import {CrInputElement} from 'chrome://resources/cr_elements/cr_input/cr_input.js';
import {isMac} from 'chrome://resources/js/platform.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {isMac} from 'chrome://resources/js/platform.js';
import {TextDirection} from 'chrome://resources/mojo/mojo/public/mojom/base/text_direction.mojom-webui.js';
import {assertDeepEquals, assertEquals, assertFalse, assertNotEquals, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {flushTasks} from 'chrome://webui-test/polymer_test_util.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';
import {eventToPromise} from 'chrome://webui-test/test_util.js';

import {$$, assertNotStyle, assertStyle, keydown} from './most_visited_test_support.js';

let mostVisited: MostVisitedElement;
let windowProxy: MostVisitedWindowProxy&TestBrowserProxy;
let handler: MostVisitedPageHandlerRemote&TestBrowserProxy;
let windowProxy: TestMock<MostVisitedWindowProxy>&MostVisitedWindowProxy;
let handler: TestMock<MostVisitedPageHandlerRemote>&
MostVisitedPageHandlerRemote;
let callbackRouterRemote: MostVisitedPageRemote;
let mediaListenerWideWidth: FakeMediaQueryList;
let mediaListenerMediumWidth: FakeMediaQueryList;
Expand Down Expand Up @@ -82,7 +83,7 @@ function assertAddShortcutShown() {
}

function createBrowserProxy() {
handler = TestBrowserProxy.fromClass(MostVisitedPageHandlerRemote);
handler = TestMock.fromClass(MostVisitedPageHandlerRemote);
const callbackRouter = new MostVisitedPageCallbackRouter();
MostVisitedBrowserProxy.setInstance(
new MostVisitedBrowserProxy(handler, callbackRouter));
Expand Down Expand Up @@ -114,7 +115,7 @@ class FakeMediaQueryList extends EventTarget implements MediaQueryList {
}

function createWindowProxy() {
windowProxy = TestBrowserProxy.fromClass(MostVisitedWindowProxy);
windowProxy = TestMock.fromClass(MostVisitedWindowProxy);
windowProxy.setResultMapperFor('matchMedia', (query: string) => {
const mediaListenerList = new FakeMediaQueryList(query);
if (query === '(min-width: 672px)') {
Expand Down
5 changes: 3 additions & 2 deletions chrome/test/data/webui/history/history_clusters/utils.ts
Expand Up @@ -4,14 +4,15 @@

import {ClusterAction, MetricsProxy, PageCallbackRouter, PageHandlerRemote, RelatedSearchAction, VisitAction, VisitType} from 'chrome://history/history.js';
import {TestBrowserProxy as BaseTestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';

export class TestBrowserProxy extends BaseTestBrowserProxy {
handler: PageHandlerRemote&BaseTestBrowserProxy;
handler: TestMock<PageHandlerRemote>&PageHandlerRemote;
callbackRouter: PageCallbackRouter;

constructor() {
super([]);
this.handler = BaseTestBrowserProxy.fromClass(PageHandlerRemote);
this.handler = TestMock.fromClass(PageHandlerRemote);
this.callbackRouter = new PageCallbackRouter();
}
}
Expand Down
Expand Up @@ -8,14 +8,14 @@ import {PageMetricsCallbackRouter} from 'chrome://resources/js/metrics_reporter.
import {BrowserProxyImpl} from 'chrome://resources/js/metrics_reporter/browser_proxy.js';
import {MetricsReporter, MetricsReporterImpl} from 'chrome://resources/js/metrics_reporter/metrics_reporter.js';
import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';

suite('MetricsReporterTest', function() {
const DELTA_TIME: bigint = 1000n;
let now: bigint;

let callbackRouter: PageMetricsCallbackRouter;
const apiProxy = TestBrowserProxy.fromClass(BrowserProxyImpl);
const apiProxy = TestMock.fromClass(BrowserProxyImpl);
let metricsReporter: MetricsReporter;

function forwardTime() {
Expand Down
10 changes: 5 additions & 5 deletions chrome/test/data/webui/new_tab_page/app_test.ts
Expand Up @@ -14,19 +14,19 @@ import {PromiseResolver} from 'chrome://resources/js/promise_resolver.js';
import {assertDeepEquals, assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {fakeMetricsPrivate, MetricsTracker} from 'chrome://webui-test/metrics_test_support.js';
import {flushTasks} from 'chrome://webui-test/polymer_test_util.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';
import {eventToPromise} from 'chrome://webui-test/test_util.js';

import {assertNotStyle, assertStyle, createBackgroundImage, createTheme, installMock} from './test_support.js';

suite('NewTabPageAppTest', () => {
let app: AppElement;
let windowProxy: TestBrowserProxy<WindowProxy>;
let handler: TestBrowserProxy<PageHandlerRemote>;
let windowProxy: TestMock<WindowProxy>;
let handler: TestMock<PageHandlerRemote>;
let callbackRouterRemote: PageRemote;
let metrics: MetricsTracker;
let moduleRegistry: TestBrowserProxy<ModuleRegistry>;
let backgroundManager: TestBrowserProxy<BackgroundManager>;
let moduleRegistry: TestMock<ModuleRegistry>;
let backgroundManager: TestMock<BackgroundManager>;
let moduleResolver: PromiseResolver<Module[]>;

const url: URL = new URL(location.href);
Expand Down
Expand Up @@ -10,7 +10,7 @@ import {NewTabPageProxy, WindowProxy} from 'chrome://new-tab-page/new_tab_page.j
import {BackgroundCollection, CollectionImage, PageCallbackRouter, PageHandlerRemote} from 'chrome://new-tab-page/new_tab_page.mojom-webui.js';
import {assertDeepEquals, assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {flushTasks} from 'chrome://webui-test/polymer_test_util.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';
import {eventToPromise, isVisible} from 'chrome://webui-test/test_util.js';

import {assertNotStyle, assertStyle, createBackgroundImage, createTheme, installMock} from './test_support.js';
Expand All @@ -22,8 +22,8 @@ function createCollection(
}

suite('NewTabPageCustomizeBackgroundsTest', () => {
let windowProxy: TestBrowserProxy<WindowProxy>;
let handler: TestBrowserProxy<PageHandlerRemote>;
let windowProxy: TestMock<WindowProxy>;
let handler: TestMock<PageHandlerRemote>;

async function createCustomizeBackgrounds():
Promise<CustomizeBackgroundsElement> {
Expand Down
4 changes: 2 additions & 2 deletions chrome/test/data/webui/new_tab_page/customize_dialog_test.ts
Expand Up @@ -10,13 +10,13 @@ import {CustomizeDialogPage, NewTabPageProxy} from 'chrome://new-tab-page/new_ta
import {PageCallbackRouter, PageHandlerRemote} from 'chrome://new-tab-page/new_tab_page.mojom-webui.js';
import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {flushTasks, waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';

import {createBackgroundImage, createTheme, installMock} from './test_support.js';

suite('NewTabPageCustomizeDialogTest', () => {
let customizeDialog: CustomizeDialogElement;
let handler: TestBrowserProxy<PageHandlerRemote>;
let handler: TestMock<PageHandlerRemote>;

setup(() => {
document.body.innerHTML = window.trustedTypes!.emptyHTML;
Expand Down
6 changes: 3 additions & 3 deletions chrome/test/data/webui/new_tab_page/customize_modules_test.ts
Expand Up @@ -12,16 +12,16 @@ import {ModuleIdName, PageCallbackRouter, PageHandlerRemote, PageRemote} from 'c
import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {assertDeepEquals, assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {fakeMetricsPrivate, MetricsTracker} from 'chrome://webui-test/metrics_test_support.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
import {TestMock} from 'chrome://webui-test/test_mock.js';
import {isVisible} from 'chrome://webui-test/test_util.js';

import {assertNotStyle, assertStyle, installMock} from './test_support.js';

suite('NewTabPageCustomizeModulesTest', () => {
let handler: TestBrowserProxy<PageHandlerRemote>;
let handler: TestMock<PageHandlerRemote>;
let callbackRouterRemote: PageRemote;
let metrics: MetricsTracker;
let cartHandler: TestBrowserProxy<CartHandlerRemote>;
let cartHandler: TestMock<CartHandlerRemote>;

async function createCustomizeModules(
allDisabled: boolean,
Expand Down

0 comments on commit 6a6d224

Please sign in to comment.