UNPKG

chrome-devtools-frontend

Version:
61 lines (47 loc) 1.9 kB
// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import type * as Platform from '../../core/platform/platform.js'; import * as Protocol from '../../generated/protocol.js'; import {SecurityPanelSidebarTreeElement} from './SecurityPanelSidebarTreeElement.js'; export class ShowOriginEvent extends Event { static readonly eventName = 'showorigin'; origin: Platform.DevToolsPath.UrlString|null; constructor(origin: Platform.DevToolsPath.UrlString|null) { super(ShowOriginEvent.eventName, {bubbles: true, composed: true}); this.origin = origin; } } export class OriginTreeElement extends SecurityPanelSidebarTreeElement { #securityState: Protocol.Security.SecurityState|null; readonly #renderTreeElement: (element: SecurityPanelSidebarTreeElement) => void; readonly #origin: Platform.DevToolsPath.UrlString|null = null; constructor( className: string, renderTreeElement: (element: SecurityPanelSidebarTreeElement) => void, origin: Platform.DevToolsPath.UrlString|null = null) { super(); this.#renderTreeElement = renderTreeElement; this.#origin = origin; this.listItemElement.classList.add(className); this.#securityState = null; this.setSecurityState(Protocol.Security.SecurityState.Unknown); } setSecurityState(newSecurityState: Protocol.Security.SecurityState): void { this.#securityState = newSecurityState; this.#renderTreeElement(this); } securityState(): Protocol.Security.SecurityState|null { return this.#securityState; } origin(): Platform.DevToolsPath.UrlString|null { return this.#origin; } override showElement(): void { this.listItemElement.dispatchEvent(new ShowOriginEvent(this.#origin)); } } declare global { interface HTMLElementEventMap { showorigin: ShowOriginEvent; } }