UNPKG

chrome-devtools-frontend

Version:
76 lines (65 loc) 2.33 kB
// Copyright 2019 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 * as Common from '../../core/common/common.js'; import * as SDK from '../../core/sdk/sdk.js'; import type * as Protocol from '../../generated/protocol.js'; import {type ContrastIssue} from './CSSOverviewCompletedView.js'; import {type UnusedDeclaration} from './CSSOverviewUnusedDeclarations.js'; export class OverviewController extends Common.ObjectWrapper.ObjectWrapper<EventTypes> { currentUrl: string; constructor() { super(); this.currentUrl = SDK.TargetManager.TargetManager.instance().inspectedURL(); SDK.TargetManager.TargetManager.instance().addEventListener( SDK.TargetManager.Events.InspectedURLChanged, this.#checkUrlAndResetIfChanged, this); } #checkUrlAndResetIfChanged(): void { if (this.currentUrl === SDK.TargetManager.TargetManager.instance().inspectedURL()) { return; } this.currentUrl = SDK.TargetManager.TargetManager.instance().inspectedURL(); this.dispatchEventToListeners(Events.Reset); } } export type PopulateNodesEvent = { type: 'contrast', key: string, section: string|undefined, nodes: ContrastIssue[], }|{ type: 'color', color: string, section: string | undefined, nodes: {nodeId: Protocol.DOM.BackendNodeId}[], }|{ type: 'unused-declarations', declaration: string, nodes: UnusedDeclaration[], }|{ type: 'media-queries', text: string, nodes: Protocol.CSS.CSSMedia[], }|{ type: 'font-info', name: string, nodes: {nodeId: Protocol.DOM.BackendNodeId}[], }; export type PopulateNodesEventNodes = PopulateNodesEvent['nodes']; export type PopulateNodesEventNodeTypes = PopulateNodesEventNodes[0]; export const enum Events { RequestOverviewStart = 'RequestOverviewStart', RequestNodeHighlight = 'RequestNodeHighlight', PopulateNodes = 'PopulateNodes', RequestOverviewCancel = 'RequestOverviewCancel', OverviewCompleted = 'OverviewCompleted', Reset = 'Reset', } export type EventTypes = { [Events.RequestOverviewStart]: void, [Events.RequestNodeHighlight]: number, [Events.PopulateNodes]: {payload: PopulateNodesEvent}, [Events.RequestOverviewCancel]: void, [Events.OverviewCompleted]: void, [Events.Reset]: void, };