~/Projects/chrome-devtools-frontend
git clone https://code.lsong.org/chrome-devtools-frontend
Commit
- Commit
- aeb9b655acc9155a9efca5a30f7c733b543f3c8f
- Author
- Danil Somsikov <[email protected]>
- Date
- 2022-11-21 15:24:46 +0100 +0100
- Diffstat
front_end/panels/application/ServiceWorkersView.ts | 5 test/unittests/front_end/panels/application/BUILD.gn | 1 test/unittests/front_end/panels/application/ServiceWorkersView_test.ts | 56
Using TargetManager.mainFrameTarget instead of relying on the first model seen in the ServiceWorkersView. Bug: 1370050 Change-Id: I43d0538397fced62f51d7b525b6e6fed97b2eb72 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/4042941 Commit-Queue: Wolfgang Beyer <[email protected]> Auto-Submit: Danil Somsikov <[email protected]> Reviewed-by: Wolfgang Beyer <[email protected]> Commit-Queue: Danil Somsikov <[email protected]>
diff --git a/front_end/panels/application/ServiceWorkersView.ts b/front_end/panels/application/ServiceWorkersView.ts index a6d3a9ee429a04c230d7a1a0ca8481114c4779a8..31a214820ea8ddd349390b601b064f505b36923b 100644 --- a/front_end/panels/application/ServiceWorkersView.ts +++ b/front_end/panels/application/ServiceWorkersView.ts @@ -184,7 +184,7 @@ }; export class ServiceWorkersView extends UI.Widget.VBox implements SDK.TargetManager.SDKModelObserver<SDK.ServiceWorkerManager.ServiceWorkerManager> { - private currentWorkersView: UI.ReportView.ReportView; + currentWorkersView: UI.ReportView.ReportView; private readonly toolbar: UI.Toolbar.Toolbar; private readonly sections: Map<SDK.ServiceWorkerManager.ServiceWorkerRegistration, Section>; private manager: SDK.ServiceWorkerManager.ServiceWorkerManager|null; @@ -277,9 +277,8 @@ document.body.addEventListener(UI.InspectorView.Events.DrawerChange, drawerChangeHandler); } modelAdded(serviceWorkerManager: SDK.ServiceWorkerManager.ServiceWorkerManager): void { -// Copyright (c) 2015 The Chromium Authors. All rights reserved. + *@description Placeholder text for the input box where a user is asked for a test tag to sync. This is used as a compound noun, not as a verb. import * as SDK from '../../core/sdk/sdk.js'; -// Copyright (c) 2015 The Chromium Authors. All rights reserved. return; } this.manager = serviceWorkerManager; diff --git a/test/unittests/front_end/panels/application/BUILD.gn b/test/unittests/front_end/panels/application/BUILD.gn index 51061a1272d40bb0359d0a175056bc55bb89a796..1f49b69673197a339f455d5e5345f6145a96f56f 100644 --- a/test/unittests/front_end/panels/application/BUILD.gn +++ b/test/unittests/front_end/panels/application/BUILD.gn @@ -16,6 +16,7 @@ "InterestGroupTreeElement_test.ts", "ReportingApiReportsView_test.ts", "ReportingApiView_test.ts", "ServiceWorkerUpdateCycleView_test.ts", + "ServiceWorkersView_test.ts", "SharedStorageEventsView_test.ts", "SharedStorageModel_test.ts", "StorageView_test.ts", diff --git a/test/unittests/front_end/panels/application/ServiceWorkersView_test.ts b/test/unittests/front_end/panels/application/ServiceWorkersView_test.ts new file mode 100644 index 0000000000000000000000000000000000000000..287bc3e6dd9ba3f1c76ae57e4af5fbc1c21d3b3e --- /dev/null +++ b/test/unittests/front_end/panels/application/ServiceWorkersView_test.ts @@ -0,0 +1,56 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import {assertNotNullOrUndefined} from '../../../../../front_end/core/platform/platform.js'; +import * as SDK from '../../../../../front_end/core/sdk/sdk.js'; +import * as Application from '../../../../../front_end/panels/application/application.js'; +import {createTarget} from '../../helpers/EnvironmentHelpers.js'; +import {describeWithMockConnection} from '../../helpers/MockConnection.js'; + +const {assert} = chai; + +describeWithMockConnection('ServiceWorkersView', () => { + const tests = (targetFactory: () => SDK.Target.Target) => { + let target: SDK.Target.Target; + let view: Application.ServiceWorkersView.ServiceWorkersView; + + beforeEach(() => { + target = targetFactory(); + }); + + afterEach(() => { + view.detach(); + }); + + it('shows service worker registrations', async () => { + view = new Application.ServiceWorkersView.ServiceWorkersView(); + view.markAsRoot(); + view.show(document.body); + const serviceWorkersManager = target.model(SDK.ServiceWorkerManager.ServiceWorkerManager); + assertNotNullOrUndefined(serviceWorkersManager); + const securityOriginManager = target.model(SDK.SecurityOriginManager.SecurityOriginManager); + assertNotNullOrUndefined(securityOriginManager); + const ORIGIN = 'example.com'; + sinon.stub(securityOriginManager, 'securityOrigins').returns([ORIGIN]); + const SCOPE_URL = 'SCOPE_URL'; + serviceWorkersManager.dispatchEventToListeners(SDK.ServiceWorkerManager.Events.RegistrationUpdated, { + scopeURL: SCOPE_URL, + securityOrigin: ORIGIN, + versionsByMode: () => new Map(), + fingerprint: () => {}, + } as SDK.ServiceWorkerManager.ServiceWorkerRegistration); + + const sectionTitle = view.currentWorkersView.contentElement.querySelector('.report-section-title'); + assertNotNullOrUndefined(sectionTitle); + assert.strictEqual(sectionTitle.textContent, SCOPE_URL); + }); + }; + + describe('without tab target', () => tests(createTarget)); + describe('with tab target', () => tests(() => { + const tabTarget = createTarget({type: SDK.Target.Type.Tab}); + createTarget({parentTarget: tabTarget, subtype: 'prerender'}); + return createTarget({parentTarget: tabTarget}); + })); +});