UNPKG

@quick-game/cli

Version:

Command line interface for rapid qg development

123 lines 6.43 kB
// Copyright 2021 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 Host from '../../core/host/host.js'; import * as i18n from '../../core/i18n/i18n.js'; import * as UI from '../../ui/legacy/legacy.js'; import * as NetworkForward from '../../panels/network/forward/forward.js'; import { AffectedResourcesView } from './AffectedResourcesView.js'; const UIStrings = { /** *@description Noun, singular or plural. Label for the kind and number of affected resources associated with a DevTools issue. A cookie is a small piece of data that a server sends to the user's web browser. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies. */ nCookies: '{n, plural, =1 {# cookie} other {# cookies}}', /** *@description Noun, singular. Label for a column in a table which lists cookies in the affected resources section of a DevTools issue. Each cookie has a name. */ name: 'Name', /** *@description Noun, singular. Label for a column in a table which lists cookies in the affected resources section of a DevTools issue. Cookies may have a 'Domain' attribute: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies.#define_where_cookies_are_sent */ domain: 'Domain', /** *@description Noun, singular. Label for a column in a table which lists cookies in the affected resources section of a DevTools issue. Cookies may have a 'Path' attribute: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies.#define_where_cookies_are_sent */ path: 'Path', /** *@description Label for the the number of affected `Set-Cookie` lines associated with a DevTools issue. `Set-Cookie` is a specific header line in an HTTP network request and consists of a single line of text. */ nRawCookieLines: '{n, plural, =1 {1 Raw `Set-Cookie` header} other {# Raw `Set-Cookie` headers}}', /** *@description Title for text button in the Issues panel. Clicking the button navigates the user to the Network Panel. `Set-Cookie` is a specific header line in an HTTP network request and consists of a single line of text. */ filterSetCookieTitle: 'Show network requests that include this `Set-Cookie` header in the network panel', }; const str_ = i18n.i18n.registerUIStrings('panels/issues/AffectedCookiesView.ts', UIStrings); const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_); export class AffectedCookiesView extends AffectedResourcesView { getResourceNameWithCount(count) { return i18nString(UIStrings.nCookies, { n: count }); } #appendAffectedCookies(cookies) { const header = document.createElement('tr'); this.appendColumnTitle(header, i18nString(UIStrings.name)); this.appendColumnTitle(header, i18nString(UIStrings.domain) + ' & ' + i18nString(UIStrings.path), 'affected-resource-cookie-info-header'); this.affectedResources.appendChild(header); let count = 0; for (const cookie of cookies) { count++; this.#appendAffectedCookie(cookie.cookie, cookie.hasRequest); } this.updateAffectedResourceCount(count); } #appendAffectedCookie(cookie, hasAssociatedRequest) { const element = document.createElement('tr'); element.classList.add('affected-resource-cookie'); const name = document.createElement('td'); if (hasAssociatedRequest) { name.appendChild(UI.UIUtils.createTextButton(cookie.name, () => { Host.userMetrics.issuesPanelResourceOpened(this.issue.getCategory(), "Cookie" /* AffectedItem.Cookie */); void Common.Revealer.reveal(NetworkForward.UIFilter.UIRequestFilter.filters([ { filterType: NetworkForward.UIFilter.FilterType.CookieDomain, filterValue: cookie.domain, }, { filterType: NetworkForward.UIFilter.FilterType.CookieName, filterValue: cookie.name, }, { filterType: NetworkForward.UIFilter.FilterType.CookiePath, filterValue: cookie.path, }, ])); }, 'link-style devtools-link')); } else { name.textContent = cookie.name; } element.appendChild(name); this.appendIssueDetailCell(element, `${cookie.domain}${cookie.path}`, 'affected-resource-cookie-info'); this.affectedResources.appendChild(element); } update() { this.clear(); this.#appendAffectedCookies(this.issue.cookiesWithRequestIndicator()); } } export class AffectedRawCookieLinesView extends AffectedResourcesView { getResourceNameWithCount(count) { return i18nString(UIStrings.nRawCookieLines, { n: count }); } update() { this.clear(); const cookieLinesWithRequestIndicator = this.issue.getRawCookieLines(); let count = 0; for (const cookie of cookieLinesWithRequestIndicator) { const row = document.createElement('tr'); row.classList.add('affected-resource-directive'); if (cookie.hasRequest) { const cookieLine = document.createElement('td'); const textButton = UI.UIUtils.createTextButton(cookie.rawCookieLine, () => { void Common.Revealer.reveal(NetworkForward.UIFilter.UIRequestFilter.filters([ { filterType: NetworkForward.UIFilter.FilterType.ResponseHeaderValueSetCookie, filterValue: cookie.rawCookieLine, }, ])); }, 'link-style devtools-link'); textButton.title = i18nString(UIStrings.filterSetCookieTitle); cookieLine.appendChild(textButton); row.appendChild(cookieLine); } else { this.appendIssueDetailCell(row, cookie.rawCookieLine); } this.affectedResources.appendChild(row); count++; } this.updateAffectedResourceCount(count); } } //# sourceMappingURL=AffectedCookiesView.js.map