From 1a9304907fbabafab631ca79cd6f06c27190a30d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Z=C3=BCnd?= Date: Fri, 30 Jul 2021 10:22:27 +0200 Subject: [PATCH] Use type-safe listeners for ResourceTreeModel events 2/2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit R=wolfi@chromium.org Bug: 1228674 Change-Id: I633e968442974a9c5e2b1b56604a456c585bbb19 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3062563 Auto-Submit: Simon Zünd Reviewed-by: Wolfgang Beyer Commit-Queue: Wolfgang Beyer --- front_end/core/sdk/ConsoleModel.ts | 3 ++- front_end/core/sdk/FrameManager.ts | 10 ++++------ front_end/core/sdk/PageResourceLoader.ts | 4 ++-- front_end/models/bindings/ResourceMapping.ts | 15 +++++++-------- .../models/issues_manager/ContrastCheckTrigger.ts | 6 ++++-- front_end/models/logs/NetworkLog.ts | 14 ++++++++------ front_end/panels/application/AppManifestView.ts | 4 ++-- .../panels/application/ApplicationCacheModel.ts | 6 +++--- front_end/panels/elements/ComputedStyleModel.ts | 2 +- front_end/panels/network/NetworkLogView.ts | 10 ++++++---- front_end/panels/network/NetworkOverview.ts | 10 ++++++---- front_end/panels/network/NetworkPanel.ts | 4 ++-- front_end/panels/screencast/ScreencastView.ts | 2 +- front_end/panels/security/SecurityPanel.ts | 4 ++-- front_end/panels/timeline/TimelinePanel.ts | 5 ++++- .../front_end/core/sdk/PageResourceLoader_test.ts | 2 +- 16 files changed, 55 insertions(+), 46 deletions(-) diff --git a/front_end/core/sdk/ConsoleModel.ts b/front_end/core/sdk/ConsoleModel.ts index c48a2563f6..d2405b73eb 100644 --- a/front_end/core/sdk/ConsoleModel.ts +++ b/front_end/core/sdk/ConsoleModel.ts @@ -50,6 +50,7 @@ import {Events as RuntimeModelEvents, RuntimeModel} from './RuntimeModel.js'; import type {Target} from './Target.js'; import {TargetManager} from './TargetManager.js'; import type {Observer} from './TargetManager.js'; +import type {ResourceTreeFrame} from './ResourceTreeModel.js'; const UIStrings = { /** @@ -311,7 +312,7 @@ export class ConsoleModel extends Common.ObjectWrapper.ObjectWrapper implements ++this.pageLoadSequenceNumber; } - _mainFrameNavigated(event: Common.EventTarget.EventTargetEvent): void { + _mainFrameNavigated(event: Common.EventTarget.EventTargetEvent): void { if (Common.Settings.Settings.instance().moduleSetting('preserveConsoleLog').get()) { Common.Console.Console.instance().log(i18nString(UIStrings.navigatedToS, {PH1: event.data.url})); } diff --git a/front_end/core/sdk/FrameManager.ts b/front_end/core/sdk/FrameManager.ts index ebd9548cb1..ae685a20ff 100644 --- a/front_end/core/sdk/FrameManager.ts +++ b/front_end/core/sdk/FrameManager.ts @@ -122,9 +122,8 @@ export class FrameManager extends Common.ObjectWrapper.ObjectWrapper this.resolveAwaitedFrame(frame); } - _frameDetached(event: Common.EventTarget.EventTargetEvent): void { - const frame = event.data.frame as ResourceTreeFrame; - const isSwap = event.data.isSwap as boolean; + _frameDetached(event: Common.EventTarget.EventTargetEvent<{frame: ResourceTreeFrame, isSwap: boolean}>): void { + const {frame, isSwap} = event.data; // Decrease the frame's count or remove it entirely from the map. this._decreaseOrRemoveFrame(frame.id); @@ -153,9 +152,8 @@ export class FrameManager extends Common.ObjectWrapper.ObjectWrapper } } - _resourceAdded(event: Common.EventTarget.EventTargetEvent): void { - const resource = (event.data as Resource); - this.dispatchEventToListeners(Events.ResourceAdded, {resource}); + _resourceAdded(event: Common.EventTarget.EventTargetEvent): void { + this.dispatchEventToListeners(Events.ResourceAdded, {resource: event.data}); } _decreaseOrRemoveFrame(frameId: string): void { diff --git a/front_end/core/sdk/PageResourceLoader.ts b/front_end/core/sdk/PageResourceLoader.ts index d6514d4668..f845b1918e 100644 --- a/front_end/core/sdk/PageResourceLoader.ts +++ b/front_end/core/sdk/PageResourceLoader.ts @@ -112,8 +112,8 @@ export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper): void { + const mainFrame = event.data; if (!mainFrame.isTopFrame()) { return; } diff --git a/front_end/models/bindings/ResourceMapping.ts b/front_end/models/bindings/ResourceMapping.ts index b9da8b61ae..6493664fea 100644 --- a/front_end/models/bindings/ResourceMapping.ts +++ b/front_end/models/bindings/ResourceMapping.ts @@ -230,8 +230,8 @@ class ModelInfo { return true; } - _resourceAdded(event: Common.EventTarget.EventTargetEvent): void { - const resource = (event.data as SDK.Resource.Resource); + _resourceAdded(event: Common.EventTarget.EventTargetEvent): void { + const resource = event.data; if (!this._acceptsResource(resource)) { return; } @@ -263,14 +263,13 @@ class ModelInfo { } } - _frameWillNavigate(event: Common.EventTarget.EventTargetEvent): void { - const frame = (event.data as SDK.ResourceTreeModel.ResourceTreeFrame); - this._removeFrameResources(frame); + _frameWillNavigate(event: Common.EventTarget.EventTargetEvent): void { + this._removeFrameResources(event.data); } - _frameDetached(event: Common.EventTarget.EventTargetEvent): void { - const frame = (event.data.frame as SDK.ResourceTreeModel.ResourceTreeFrame); - this._removeFrameResources(frame); + _frameDetached(event: Common.EventTarget + .EventTargetEvent<{frame: SDK.ResourceTreeModel.ResourceTreeFrame, isSwap: boolean}>): void { + this._removeFrameResources(event.data.frame); } _resetForTest(): void { diff --git a/front_end/models/issues_manager/ContrastCheckTrigger.ts b/front_end/models/issues_manager/ContrastCheckTrigger.ts index ba22c28d5c..04126606a7 100644 --- a/front_end/models/issues_manager/ContrastCheckTrigger.ts +++ b/front_end/models/issues_manager/ContrastCheckTrigger.ts @@ -53,8 +53,10 @@ export class ContrastCheckTrigger { resourceTreeModel.target().auditsAgent().invoke_checkContrast({}); } - private pageLoaded(event: Common.EventTarget.EventTargetEvent): void { - const {resourceTreeModel} = event.data as {resourceTreeModel: SDK.ResourceTreeModel.ResourceTreeModel}; + private pageLoaded( + event: Common.EventTarget + .EventTargetEvent<{resourceTreeModel: SDK.ResourceTreeModel.ResourceTreeModel, loadTime: number}>): void { + const {resourceTreeModel} = event.data; this.checkContrast(resourceTreeModel); } diff --git a/front_end/models/logs/NetworkLog.ts b/front_end/models/logs/NetworkLog.ts index 9824889cb7..98ef16a03b 100644 --- a/front_end/models/logs/NetworkLog.ts +++ b/front_end/models/logs/NetworkLog.ts @@ -318,8 +318,8 @@ export class NetworkLog extends Common.ObjectWrapper.ObjectWrapper implements } } - _onMainFrameNavigated(event: Common.EventTarget.EventTargetEvent): void { - const mainFrame = (event.data as SDK.ResourceTreeModel.ResourceTreeFrame); + _onMainFrameNavigated(event: Common.EventTarget.EventTargetEvent): void { + const mainFrame = event.data; const manager = mainFrame.resourceTreeModel().target().model(SDK.NetworkManager.NetworkManager); if (!manager || mainFrame.resourceTreeModel().target().parentTarget()) { return; @@ -485,19 +485,21 @@ export class NetworkLog extends Common.ObjectWrapper.ObjectWrapper implements } _onDOMContentLoaded( - resourceTreeModel: SDK.ResourceTreeModel.ResourceTreeModel, event: Common.EventTarget.EventTargetEvent): void { + resourceTreeModel: SDK.ResourceTreeModel.ResourceTreeModel, + event: Common.EventTarget.EventTargetEvent): void { const networkManager = resourceTreeModel.target().model(SDK.NetworkManager.NetworkManager); const pageLoad = networkManager ? this._pageLoadForManager.get(networkManager) : null; if (pageLoad) { - pageLoad.contentLoadTime = (event.data as number); + pageLoad.contentLoadTime = event.data; } } - _onLoad(event: Common.EventTarget.EventTargetEvent): void { + _onLoad(event: Common.EventTarget + .EventTargetEvent<{resourceTreeModel: SDK.ResourceTreeModel.ResourceTreeModel, loadTime: number}>): void { const networkManager = event.data.resourceTreeModel.target().model(SDK.NetworkManager.NetworkManager); const pageLoad = networkManager ? this._pageLoadForManager.get(networkManager) : null; if (pageLoad) { - pageLoad.loadTime = (event.data.loadTime as number); + pageLoad.loadTime = event.data.loadTime; } } diff --git a/front_end/panels/application/AppManifestView.ts b/front_end/panels/application/AppManifestView.ts index 49ae98de08..80a90238c0 100644 --- a/front_end/panels/application/AppManifestView.ts +++ b/front_end/panels/application/AppManifestView.ts @@ -447,12 +447,12 @@ export class AppManifestView extends UI.Widget.VBox implements SDK.TargetManager this._registeredListeners = [ this._resourceTreeModel.addEventListener( SDK.ResourceTreeModel.Events.DOMContentLoaded, - _event => { + () => { this._updateManifest(true); }), this._serviceWorkerManager.addEventListener( SDK.ServiceWorkerManager.Events.RegistrationUpdated, - _event => { + () => { this._updateManifest(false); }), ]; diff --git a/front_end/panels/application/ApplicationCacheModel.ts b/front_end/panels/application/ApplicationCacheModel.ts index 949c204e14..4943a3d268 100644 --- a/front_end/panels/application/ApplicationCacheModel.ts +++ b/front_end/panels/application/ApplicationCacheModel.ts @@ -82,9 +82,9 @@ export class ApplicationCacheModel extends SDK.SDKModel.SDKModel { } } - _frameDetached(event: Common.EventTarget.EventTargetEvent): void { - const frame = (event.data.frame as SDK.ResourceTreeModel.ResourceTreeFrame); - this._frameManifestRemoved(frame.id); + _frameDetached(event: Common.EventTarget + .EventTargetEvent<{frame: SDK.ResourceTreeModel.ResourceTreeFrame, isSwap: boolean}>): void { + this._frameManifestRemoved(event.data.frame.id); } reset(): void { diff --git a/front_end/panels/elements/ComputedStyleModel.ts b/front_end/panels/elements/ComputedStyleModel.ts index ea83f582dd..9275b2d5df 100644 --- a/front_end/panels/elements/ComputedStyleModel.ts +++ b/front_end/panels/elements/ComputedStyleModel.ts @@ -74,7 +74,7 @@ export class ComputedStyleModel extends Common.ObjectWrapper.ObjectWrapper { this._onComputedStyleChanged(null); } - _onFrameResized(_event: Common.EventTarget.EventTargetEvent): void { + _onFrameResized(): void { function refreshContents(this: ComputedStyleModel): void { this._onComputedStyleChanged(null); delete this._frameResizedTimer; diff --git a/front_end/panels/network/NetworkLogView.ts b/front_end/panels/network/NetworkLogView.ts index 321e210b6f..2ba36dcee3 100644 --- a/front_end/panels/network/NetworkLogView.ts +++ b/front_end/panels/network/NetworkLogView.ts @@ -1156,23 +1156,25 @@ export class NetworkLogView extends UI.Widget.VBox implements this._invalidateAllItems(); } - _loadEventFired(event: Common.EventTarget.EventTargetEvent): void { + _loadEventFired( + event: Common.EventTarget + .EventTargetEvent<{resourceTreeModel: SDK.ResourceTreeModel.ResourceTreeModel, loadTime: number}>): void { if (!this._recording) { return; } - const time = (event.data.loadTime as number); + const time = event.data.loadTime; if (time) { this._mainRequestLoadTime = time; this._columns.addEventDividers([time], 'network-load-divider'); } } - _domContentLoadedEventFired(event: Common.EventTarget.EventTargetEvent): void { + _domContentLoadedEventFired(event: Common.EventTarget.EventTargetEvent): void { if (!this._recording) { return; } - const data = (event.data as number); + const {data} = event; if (data) { this._mainRequestDOMContentLoadedTime = data; this._columns.addEventDividers([data], 'network-dcl-divider'); diff --git a/front_end/panels/network/NetworkOverview.ts b/front_end/panels/network/NetworkOverview.ts index 2227059f1a..351ae28c33 100644 --- a/front_end/panels/network/NetworkOverview.ts +++ b/front_end/panels/network/NetworkOverview.ts @@ -66,16 +66,18 @@ export class NetworkOverview extends PerfUI.TimelineOverviewPane.TimelineOvervie this.scheduleUpdate(); } - _loadEventFired(event: Common.EventTarget.EventTargetEvent): void { - const time = (event.data.loadTime as number); + _loadEventFired( + event: Common.EventTarget + .EventTargetEvent<{resourceTreeModel: SDK.ResourceTreeModel.ResourceTreeModel, loadTime: number}>): void { + const time = event.data.loadTime; if (time) { this._loadEvents.push(time * 1000); } this.scheduleUpdate(); } - _domContentLoadedEventFired(event: Common.EventTarget.EventTargetEvent): void { - const data = (event.data as number); + _domContentLoadedEventFired(event: Common.EventTarget.EventTargetEvent): void { + const {data} = event; if (data) { this._domContentLoadedEvents.push(data * 1000); } diff --git a/front_end/panels/network/NetworkPanel.ts b/front_end/panels/network/NetworkPanel.ts index eb988ce842..c4aaa91211 100644 --- a/front_end/panels/network/NetworkPanel.ts +++ b/front_end/panels/network/NetworkPanel.ts @@ -528,7 +528,7 @@ export class NetworkPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi } } - _willReloadPage(_event: Common.EventTarget.EventTargetEvent): void { + _willReloadPage(): void { if (this._pendingStopTimer) { clearTimeout(this._pendingStopTimer); delete this._pendingStopTimer; @@ -538,7 +538,7 @@ export class NetworkPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi } } - _load(_event: Common.EventTarget.EventTargetEvent): void { + _load(): void { if (this._filmStripRecorder && this._filmStripRecorder.isRecording()) { this._pendingStopTimer = window.setTimeout(this._stopFilmStripRecording.bind(this), displayScreenshotDelay); } diff --git a/front_end/panels/screencast/ScreencastView.ts b/front_end/panels/screencast/ScreencastView.ts index ec7ca61b72..96d77084af 100644 --- a/front_end/panels/screencast/ScreencastView.ts +++ b/front_end/panels/screencast/ScreencastView.ts @@ -723,7 +723,7 @@ export class ScreencastView extends UI.Widget.VBox implements SDK.OverlayModel.H this._canvasElement.focus(); } - _requestNavigationHistoryEvent(_event: Common.EventTarget.EventTargetEvent): void { + _requestNavigationHistoryEvent(): void { this._requestNavigationHistory(); } diff --git a/front_end/panels/security/SecurityPanel.ts b/front_end/panels/security/SecurityPanel.ts index 444262788f..c4dd3a9995 100644 --- a/front_end/panels/security/SecurityPanel.ts +++ b/front_end/panels/security/SecurityPanel.ts @@ -748,8 +748,8 @@ export class SecurityPanel extends UI.Panel.PanelWithSidebar implements Common.EventTarget.removeEventListeners(this._eventListeners); } - _onMainFrameNavigated(event: Common.EventTarget.EventTargetEvent): void { - const frame = event.data as Protocol.Page.Frame; + _onMainFrameNavigated(event: Common.EventTarget.EventTargetEvent): void { + const frame = event.data; const request = this._lastResponseReceivedForLoaderId.get(frame.loaderId); this.selectAndSwitchToMainView(); diff --git a/front_end/panels/timeline/TimelinePanel.ts b/front_end/panels/timeline/TimelinePanel.ts index 42e0aa37d6..6381beaf47 100644 --- a/front_end/panels/timeline/TimelinePanel.ts +++ b/front_end/panels/timeline/TimelinePanel.ts @@ -1133,7 +1133,10 @@ export class TimelinePanel extends UI.Panel.Panel implements Client, TimelineMod this._overviewPane.setMarkers(markers); } - async _loadEventFired(event: Common.EventTarget.EventTargetEvent): Promise { + async _loadEventFired( + event: Common.EventTarget + .EventTargetEvent<{resourceTreeModel: SDK.ResourceTreeModel.ResourceTreeModel, loadTime: number}>): + Promise { if (this._state !== State.Recording || !this._recordingPageReload || !this._controller || this._controller.mainTarget() !== event.data.resourceTreeModel.target()) { return; diff --git a/test/unittests/front_end/core/sdk/PageResourceLoader_test.ts b/test/unittests/front_end/core/sdk/PageResourceLoader_test.ts index f6a3842273..dbac36f272 100644 --- a/test/unittests/front_end/core/sdk/PageResourceLoader_test.ts +++ b/test/unittests/front_end/core/sdk/PageResourceLoader_test.ts @@ -65,7 +65,7 @@ describe('PageResourceLoader', () => { isTopFrame() { return true; }, - }, + } as SDK.ResourceTreeModel.ResourceTreeFrame, }); assert.deepEqual(loader.getNumberOfResources(), {loading: 3, queued: 0, resources: 0});