\n
\n \n ${error.errorType}\n
\n
\n \n ${error.code}\n
\n
\n
\n
\n
\n
\n
\n `;\n\n entry.$('status-error-group').textContent = i18nString(UIStrings.errorGroupLabel);\n entry.$('status-error-code').textContent = i18nString(UIStrings.errorCodeLabel);\n\n if (Object.keys(error.data).length !== 0) {\n const label = entry.$('status-error-data').createChild('span', 'status-error-field-label');\n UI.UIUtils.createTextChild(label, i18nString(UIStrings.errorDataLabel));\n const dataContent = entry.$('status-error-data').createChild('div');\n for (const [key, value] of Object.entries(error.data)) {\n const datumContent = dataContent.createChild('div');\n UI.UIUtils.createTextChild(datumContent, `${key}: ${value}`);\n }\n }\n\n if (error.stack.length !== 0) {\n const label = entry.$('status-error-stack').createChild('span', 'status-error-field-label');\n UI.UIUtils.createTextChild(label, i18nString(UIStrings.errorStackLabel));\n const stackContent = entry.$('status-error-stack').createChild('div');\n for (const stackEntry of error.stack) {\n const frameBox = stackContent.createChild('div');\n UI.UIUtils.createTextChild(frameBox, `${stackEntry.file}:${stackEntry.line}`);\n }\n }\n\n if (error.cause.length !== 0) {\n const label = entry.$('status-error-cause').createChild('span', 'status-error-field-label');\n UI.UIUtils.createTextChild(label, i18nString(UIStrings.errorCauseLabel));\n entry.$('status-error-cause').appendChild(this.errorToDiv(error.cause[0]));\n }\n\n return entry.element();\n }\n\n addError(error: Protocol.Media.PlayerError): void {\n const container = this.bodyPanel.createChild('div', 'media-messages-message-container media-message-error');\n container.appendChild(this.errorToDiv(error));\n }\n\n override wasShown(): void {\n super.wasShown();\n this.registerCSSFiles([playerMessagesViewStyles]);\n }\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"PlayerMessagesView.js","sourceRoot":"","sources":["../../../../../../front_end/panels/media/PlayerMessagesView.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport type * as Common from '../../core/common/common.js';\nimport * as i18n from '../../core/i18n/i18n.js';\nimport type * as Protocol from '../../generated/protocol.js';\nimport * as UI from '../../ui/legacy/legacy.js';\nimport * as VisualLogging from '../../ui/visual_logging/visual_logging.js';\n\nimport playerMessagesViewStyles from './playerMessagesView.css.js';\n\nconst UIStrings = {\n /**\n *@description A context menu item in the Console View of the Console panel\n */\n default: 'Default',\n /**\n *@description Text in Network Throttling Selector of the Network panel\n */\n custom: 'Custom',\n /**\n *@description Text for everything\n */\n all: 'All',\n /**\n *@description Text for errors\n */\n error: 'Error',\n /**\n *@description Text to indicate an item is a warning\n */\n warning: 'Warning',\n /**\n *@description Sdk console message message level info of level Labels in Console View of the Console panel\n */\n info: 'Info',\n /**\n *@description Debug log level\n */\n debug: 'Debug',\n /**\n *@description Label for selecting between the set of log levels to show.\n */\n logLevel: 'Log level:',\n /**\n *@description Default text for user-text-entry for searching log messages.\n */\n filterLogMessages: 'Filter log messages',\n /**\n *@description The label for the group name that this error belongs to.\n */\n errorGroupLabel: 'Error Group:',\n /**\n *@description The label for the numeric code associated with this error.\n */\n errorCodeLabel: 'Error Code:',\n /**\n *@description The label for extra data associated with an error.\n */\n errorDataLabel: 'Data:',\n /**\n *@description The label for the stacktrace associated with the error.\n */\n errorStackLabel: 'Stacktrace:',\n /**\n *@description The label for a root cause error associated with this error.\n */\n errorCauseLabel: 'Caused by:',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/media/PlayerMessagesView.ts', UIStrings);\nconst i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);\n\nconst enum MessageLevelBitfield {\n Error = 0b0001,\n Warning = 0b0010,\n Info = 0b0100,\n Debug = 0b1000,\n\n Default = 0b0111, // Error, Warning, Info\n All = 0b1111, // Error, Warning, Info, Debug\n Custom = 0,\n}\n\ninterface SelectableLevel {\n title: string;\n value: MessageLevelBitfield;\n stringValue: string;\n selectable?: boolean;\n overwrite?: boolean;\n}\n\nclass MessageLevelSelector implements UI.SoftDropDown.Delegate
{\n private readonly items: UI.ListModel.ListModel;\n private readonly view: PlayerMessagesView;\n private readonly itemMap: Map;\n private hiddenLevels: string[];\n private bitFieldValue: MessageLevelBitfield;\n private readonly savedBitFieldValue: MessageLevelBitfield;\n private readonly defaultTitleInternal: Common.UIString.LocalizedString;\n private readonly customTitle: Common.UIString.LocalizedString;\n private readonly allTitle: Common.UIString.LocalizedString;\n elementsForItems: WeakMap;\n\n constructor(items: UI.ListModel.ListModel, view: PlayerMessagesView) {\n this.items = items;\n this.view = view;\n this.itemMap = new Map();\n\n this.hiddenLevels = [];\n\n this.bitFieldValue = MessageLevelBitfield.Default;\n this.savedBitFieldValue = MessageLevelBitfield.Default;\n\n this.defaultTitleInternal = i18nString(UIStrings.default);\n this.customTitle = i18nString(UIStrings.custom);\n this.allTitle = i18nString(UIStrings.all);\n\n this.elementsForItems = new WeakMap();\n }\n\n defaultTitle(): Common.UIString.LocalizedString {\n return this.defaultTitleInternal;\n }\n\n setDefault(dropdown: UI.SoftDropDown.SoftDropDown): void {\n dropdown.selectItem(this.items.at(0));\n }\n\n populate(): void {\n this.items.insert(this.items.length, {\n title: this.defaultTitleInternal,\n overwrite: true,\n stringValue: '',\n value: MessageLevelBitfield.Default,\n selectable: undefined,\n });\n\n this.items.insert(this.items.length, {\n title: this.allTitle,\n overwrite: true,\n stringValue: '',\n value: MessageLevelBitfield.All,\n selectable: undefined,\n });\n\n this.items.insert(this.items.length, {\n title: i18nString(UIStrings.error),\n overwrite: false,\n stringValue: 'error',\n value: MessageLevelBitfield.Error,\n selectable: undefined,\n });\n\n this.items.insert(this.items.length, {\n title: i18nString(UIStrings.warning),\n overwrite: false,\n stringValue: 'warning',\n value: MessageLevelBitfield.Warning,\n selectable: undefined,\n });\n\n this.items.insert(this.items.length, {\n title: i18nString(UIStrings.info),\n overwrite: false,\n stringValue: 'info',\n value: MessageLevelBitfield.Info,\n selectable: undefined,\n });\n\n this.items.insert(this.items.length, {\n title: i18nString(UIStrings.debug),\n overwrite: false,\n stringValue: 'debug',\n value: MessageLevelBitfield.Debug,\n selectable: undefined,\n });\n }\n\n private updateCheckMarks(): void {\n this.hiddenLevels = [];\n for (const [key, item] of this.itemMap) {\n if (!item.overwrite) {\n const elementForItem = this.elementsForItems.get(item as SelectableLevel);\n if (elementForItem && elementForItem.firstChild) {\n elementForItem.firstChild.remove();\n }\n if (elementForItem && key & this.bitFieldValue) {\n UI.UIUtils.createTextChild(elementForItem.createChild('div'), '✓');\n } else {\n this.hiddenLevels.push(item.stringValue);\n }\n }\n }\n }\n\n titleFor(item: SelectableLevel): string {\n // This would make a lot more sense to have in |itemSelected|, but this\n // method gets called first.\n if (item.overwrite) {\n this.bitFieldValue = item.value;\n } else {\n this.bitFieldValue ^= item.value;\n }\n\n if (this.bitFieldValue === MessageLevelBitfield.Default) {\n return this.defaultTitleInternal;\n }\n\n if (this.bitFieldValue === MessageLevelBitfield.All) {\n return this.allTitle;\n }\n\n const potentialMatch = this.itemMap.get(this.bitFieldValue);\n if (potentialMatch) {\n return potentialMatch.title;\n }\n\n return this.customTitle;\n }\n\n createElementForItem(item: SelectableLevel): Element {\n const element = document.createElement('div');\n const shadowRoot = UI.Utils.createShadowRootWithCoreStyles(\n element, {cssFile: [playerMessagesViewStyles], delegatesFocus: undefined});\n const container = shadowRoot.createChild('div', 'media-messages-level-dropdown-element');\n const checkBox = container.createChild('div', 'media-messages-level-dropdown-checkbox') as HTMLElement;\n const text = container.createChild('span', 'media-messages-level-dropdown-text');\n UI.UIUtils.createTextChild(text, item.title);\n this.elementsForItems.set(item, checkBox);\n this.itemMap.set(item.value, item);\n this.updateCheckMarks();\n this.view.regenerateMessageDisplayCss(this.hiddenLevels);\n return element;\n }\n\n isItemSelectable(_item: SelectableLevel): boolean {\n return true;\n }\n\n itemSelected(_item: SelectableLevel|null): void {\n this.updateCheckMarks();\n this.view.regenerateMessageDisplayCss(this.hiddenLevels);\n }\n\n highlightedItemChanged(\n _from: SelectableLevel|null, _to: SelectableLevel|null, _fromElement: Element|null,\n _toElement: Element|null): void {\n }\n}\n\nexport class PlayerMessagesView extends UI.Widget.VBox {\n private readonly headerPanel: HTMLElement;\n private readonly bodyPanel: HTMLElement;\n private messageLevelSelector?: MessageLevelSelector;\n\n constructor() {\n super();\n\n this.element.setAttribute('jslog', `${VisualLogging.pane().context('messages')}`);\n\n this.headerPanel = this.contentElement.createChild('div', 'media-messages-header');\n this.bodyPanel = this.contentElement.createChild('div', 'media-messages-body');\n\n this.buildToolbar();\n }\n\n private buildToolbar(): void {\n const toolbar = new UI.Toolbar.Toolbar('media-messages-toolbar', this.headerPanel);\n toolbar.appendText(i18nString(UIStrings.logLevel));\n toolbar.appendToolbarItem(this.createDropdown());\n toolbar.appendSeparator();\n toolbar.appendToolbarItem(this.createFilterInput());\n }\n\n private createDropdown(): UI.Toolbar.ToolbarItem {\n const items = new UI.ListModel.ListModel();\n this.messageLevelSelector = new MessageLevelSelector(items, this);\n const dropDown = new UI.SoftDropDown.SoftDropDown(items, this.messageLevelSelector, 'log-level');\n dropDown.setRowHeight(18);\n\n this.messageLevelSelector.populate();\n this.messageLevelSelector.setDefault(dropDown);\n\n const dropDownItem = new UI.Toolbar.ToolbarItem(dropDown.element);\n dropDownItem.element.classList.add('toolbar-has-dropdown');\n dropDownItem.setEnabled(true);\n dropDownItem.setTitle(this.messageLevelSelector.defaultTitle());\n UI.ARIAUtils.setLabel(\n dropDownItem.element, `${i18nString(UIStrings.logLevel)} ${this.messageLevelSelector.defaultTitle()}`);\n return dropDownItem;\n }\n\n private createFilterInput(): UI.Toolbar.ToolbarInput {\n const filterInput = new UI.Toolbar.ToolbarInput(i18nString(UIStrings.filterLogMessages));\n filterInput.addEventListener(UI.Toolbar.ToolbarInput.Event.TextChanged, (data: {data: string}) => {\n this.filterByString(data as {\n data: string,\n });\n }, this);\n return filterInput;\n }\n\n regenerateMessageDisplayCss(hiddenLevels: string[]): void {\n const messages = this.bodyPanel.getElementsByClassName('media-messages-message-container');\n for (const message of messages) {\n if (this.matchesHiddenLevels(message, hiddenLevels)) {\n message.classList.add('media-messages-message-unselected');\n } else {\n message.classList.remove('media-messages-message-unselected');\n }\n }\n }\n\n private matchesHiddenLevels(element: Element, hiddenLevels: string[]): boolean {\n for (const level of hiddenLevels) {\n if (element.classList.contains('media-message-' + level)) {\n return true;\n }\n }\n return false;\n }\n\n private filterByString(userStringData: {data: string}): void {\n const userString = userStringData.data;\n const messages = this.bodyPanel.getElementsByClassName('media-messages-message-container');\n\n for (const message of messages) {\n if (userString === '') {\n message.classList.remove('media-messages-message-filtered');\n } else if (message.textContent && message.textContent.includes(userString)) {\n message.classList.remove('media-messages-message-filtered');\n } else {\n message.classList.add('media-messages-message-filtered');\n }\n }\n }\n\n addMessage(message: Protocol.Media.PlayerMessage): void {\n const container =\n this.bodyPanel.createChild('div', 'media-messages-message-container media-message-' + message.level);\n UI.UIUtils.createTextChild(container, message.message);\n }\n\n private errorToDiv(error: Protocol.Media.PlayerError): Element {\n const entry = UI.Fragment.Fragment.build`\n \n
\n \n ${error.errorType}\n
\n
\n \n ${error.code}\n
\n
\n
\n
\n
\n
\n
\n `;\n\n entry.$('status-error-group').textContent = i18nString(UIStrings.errorGroupLabel);\n entry.$('status-error-code').textContent = i18nString(UIStrings.errorCodeLabel);\n\n if (Object.keys(error.data).length !== 0) {\n const label = entry.$('status-error-data').createChild('span', 'status-error-field-label');\n UI.UIUtils.createTextChild(label, i18nString(UIStrings.errorDataLabel));\n const dataContent = entry.$('status-error-data').createChild('div');\n for (const [key, value] of Object.entries(error.data)) {\n const datumContent = dataContent.createChild('div');\n UI.UIUtils.createTextChild(datumContent, `${key}: ${value}`);\n }\n }\n\n if (error.stack.length !== 0) {\n const label = entry.$('status-error-stack').createChild('span', 'status-error-field-label');\n UI.UIUtils.createTextChild(label, i18nString(UIStrings.errorStackLabel));\n const stackContent = entry.$('status-error-stack').createChild('div');\n for (const stackEntry of error.stack) {\n const frameBox = stackContent.createChild('div');\n UI.UIUtils.createTextChild(frameBox, `${stackEntry.file}:${stackEntry.line}`);\n }\n }\n\n if (error.cause.length !== 0) {\n const label = entry.$('status-error-cause').createChild('span', 'status-error-field-label');\n UI.UIUtils.createTextChild(label, i18nString(UIStrings.errorCauseLabel));\n entry.$('status-error-cause').appendChild(this.errorToDiv(error.cause[0]));\n }\n\n return entry.element();\n }\n\n addError(error: Protocol.Media.PlayerError): void {\n const container = this.bodyPanel.createChild('div', 'media-messages-message-container media-message-error');\n container.appendChild(this.errorToDiv(error));\n }\n\n override wasShown(): void {\n super.wasShown();\n this.registerCSSFiles([playerMessagesViewStyles]);\n }\n}\n"]}
\ No newline at end of file
diff --git a/public/panels/media/media-meta.js b/public/panels/media/media-meta.js
index 51867b3d5..7bbd3878c 100644
--- a/public/panels/media/media-meta.js
+++ b/public/panels/media/media-meta.js
@@ -35,7 +35,7 @@ UI.ViewManager.registerViewExtension({
order: 100,
async loadView() {
const Media = await loadMediaModule();
- return Media.MainView.MainView.instance();
+ return new Media.MainView.MainView();
},
tags: [
i18nLazyString(UIStrings.media),
diff --git a/public/panels/media/media-meta.js.map b/public/panels/media/media-meta.js.map
index 47986e2a5..22fdf295d 100644
--- a/public/panels/media/media-meta.js.map
+++ b/public/panels/media/media-meta.js.map
@@ -1 +1 @@
-{"version":3,"file":"media-meta.js","sourceRoot":"","sources":["../../../../../../front_end/panels/media/media-meta.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAE7B,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAIhD,MAAM,SAAS,GAAG;IAChB;;OAEG;IACH,KAAK,EAAE,OAAO;IACd;;OAEG;IACH,KAAK,EAAE,OAAO;IACd;;OAEG;IACH,SAAS,EAAE,YAAY;CACxB,CAAC;AACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;AAClF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAExF,IAAI,iBAA2C,CAAC;AAEhD,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC,iBAAiB,EAAE;QACtB,iBAAiB,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;KAChD;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC;IACnC,QAAQ,uDAAyC;IACjD,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;IACtC,aAAa,EAAE,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC;IAClD,WAAW,4DAA0C;IACrD,KAAK,EAAE,GAAG;IACV,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,EAAE;QACJ,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;QAC/B,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;KAChC;CACF,CAAC,CAAC","sourcesContent":["// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as i18n from '../../core/i18n/i18n.js';\nimport * as UI from '../../ui/legacy/legacy.js';\n\nimport type * as Media from './media.js';\n\nconst UIStrings = {\n /**\n *@description Text that appears on a button for the media resource type filter.\n */\n media: 'Media',\n /**\n *@description The type of media. Lower case.\n */\n video: 'video',\n /**\n *@description Command for showing the media tool.\n */\n showMedia: 'Show Media',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/media/media-meta.ts', UIStrings);\nconst i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);\n\nlet loadedMediaModule: (typeof Media|undefined);\n\nasync function loadMediaModule(): Promise
{\n if (!loadedMediaModule) {\n loadedMediaModule = await import('./media.js');\n }\n return loadedMediaModule;\n}\n\nUI.ViewManager.registerViewExtension({\n location: UI.ViewManager.ViewLocationValues.PANEL,\n id: 'medias',\n title: i18nLazyString(UIStrings.media),\n commandPrompt: i18nLazyString(UIStrings.showMedia),\n persistence: UI.ViewManager.ViewPersistence.CLOSEABLE,\n order: 100,\n async loadView() {\n const Media = await loadMediaModule();\n return Media.MainView.MainView.instance();\n },\n tags: [\n i18nLazyString(UIStrings.media),\n i18nLazyString(UIStrings.video),\n ],\n});\n"]}
\ No newline at end of file
+{"version":3,"file":"media-meta.js","sourceRoot":"","sources":["../../../../../../front_end/panels/media/media-meta.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAE7B,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAIhD,MAAM,SAAS,GAAG;IAChB;;OAEG;IACH,KAAK,EAAE,OAAO;IACd;;OAEG;IACH,KAAK,EAAE,OAAO;IACd;;OAEG;IACH,SAAS,EAAE,YAAY;CACxB,CAAC;AACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;AAClF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAExF,IAAI,iBAA2C,CAAC;AAEhD,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC,iBAAiB,EAAE;QACtB,iBAAiB,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;KAChD;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC;IACnC,QAAQ,uDAAyC;IACjD,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;IACtC,aAAa,EAAE,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC;IAClD,WAAW,4DAA0C;IACrD,KAAK,EAAE,GAAG;IACV,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;QACtC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC;IACD,IAAI,EAAE;QACJ,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;QAC/B,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;KAChC;CACF,CAAC,CAAC","sourcesContent":["// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as i18n from '../../core/i18n/i18n.js';\nimport * as UI from '../../ui/legacy/legacy.js';\n\nimport type * as Media from './media.js';\n\nconst UIStrings = {\n /**\n *@description Text that appears on a button for the media resource type filter.\n */\n media: 'Media',\n /**\n *@description The type of media. Lower case.\n */\n video: 'video',\n /**\n *@description Command for showing the media tool.\n */\n showMedia: 'Show Media',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/media/media-meta.ts', UIStrings);\nconst i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);\n\nlet loadedMediaModule: (typeof Media|undefined);\n\nasync function loadMediaModule(): Promise {\n if (!loadedMediaModule) {\n loadedMediaModule = await import('./media.js');\n }\n return loadedMediaModule;\n}\n\nUI.ViewManager.registerViewExtension({\n location: UI.ViewManager.ViewLocationValues.PANEL,\n id: 'medias',\n title: i18nLazyString(UIStrings.media),\n commandPrompt: i18nLazyString(UIStrings.showMedia),\n persistence: UI.ViewManager.ViewPersistence.CLOSEABLE,\n order: 100,\n async loadView() {\n const Media = await loadMediaModule();\n return new Media.MainView.MainView();\n },\n tags: [\n i18nLazyString(UIStrings.media),\n i18nLazyString(UIStrings.video),\n ],\n});\n"]}
\ No newline at end of file
diff --git a/public/panels/mobile_throttling/ThrottlingSettingsTab.d.ts b/public/panels/mobile_throttling/ThrottlingSettingsTab.d.ts
index ee77f6227..9d0010078 100644
--- a/public/panels/mobile_throttling/ThrottlingSettingsTab.d.ts
+++ b/public/panels/mobile_throttling/ThrottlingSettingsTab.d.ts
@@ -5,9 +5,6 @@ export declare class ThrottlingSettingsTab extends UI.Widget.VBox implements UI.
private readonly customSetting;
private editor?;
constructor();
- static instance(opts?: {
- forceNew: null;
- }): ThrottlingSettingsTab;
wasShown(): void;
private conditionsUpdated;
private addButtonClicked;
diff --git a/public/panels/mobile_throttling/ThrottlingSettingsTab.js b/public/panels/mobile_throttling/ThrottlingSettingsTab.js
index afd78fc39..304b76d40 100644
--- a/public/panels/mobile_throttling/ThrottlingSettingsTab.js
+++ b/public/panels/mobile_throttling/ThrottlingSettingsTab.js
@@ -75,14 +75,13 @@ const UIStrings = {
};
const str_ = i18n.i18n.registerUIStrings('panels/mobile_throttling/ThrottlingSettingsTab.ts', UIStrings);
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
-let throttlingSettingsTabInstance;
export class ThrottlingSettingsTab extends UI.Widget.VBox {
list;
customSetting;
editor;
constructor() {
super(true);
- this.element.setAttribute('jslog', `${VisualLogging.section().context('throttling-conditions')}`);
+ this.element.setAttribute('jslog', `${VisualLogging.pane().context('throttling-conditions')}`);
const header = this.contentElement.createChild('div', 'header');
header.textContent = i18nString(UIStrings.networkThrottlingProfiles);
UI.ARIAUtils.markAsHeading(header, 1);
@@ -96,13 +95,6 @@ export class ThrottlingSettingsTab extends UI.Widget.VBox {
this.customSetting.addChangeListener(this.conditionsUpdated, this);
this.setDefaultFocusedElement(addButton);
}
- static instance(opts = { forceNew: null }) {
- const { forceNew } = opts;
- if (!throttlingSettingsTabInstance || forceNew) {
- throttlingSettingsTabInstance = new ThrottlingSettingsTab();
- }
- return throttlingSettingsTabInstance;
- }
wasShown() {
super.wasShown();
this.list.registerCSSFiles([throttlingSettingsTabStyles]);
diff --git a/public/panels/mobile_throttling/ThrottlingSettingsTab.js.map b/public/panels/mobile_throttling/ThrottlingSettingsTab.js.map
index 6a779ad00..06f588bd0 100644
--- a/public/panels/mobile_throttling/ThrottlingSettingsTab.js.map
+++ b/public/panels/mobile_throttling/ThrottlingSettingsTab.js.map
@@ -1 +1 @@
-{"version":3,"file":"ThrottlingSettingsTab.js","sourceRoot":"","sources":["../../../../../../front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2017 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as Common from '../../core/common/common.js';\nimport * as i18n from '../../core/i18n/i18n.js';\nimport type * as SDK from '../../core/sdk/sdk.js';\nimport * as UI from '../../ui/legacy/legacy.js';\nimport * as VisualLogging from '../../ui/visual_logging/visual_logging.js';\n\nimport throttlingSettingsTabStyles from './throttlingSettingsTab.css.js';\n\nconst UIStrings = {\n /**\n *@description Text in Throttling Settings Tab of the Network panel\n */\n networkThrottlingProfiles: 'Network Throttling Profiles',\n /**\n *@description Text of add conditions button in Throttling Settings Tab of the Network panel\n */\n addCustomProfile: 'Add custom profile...',\n /**\n *@description A value in milliseconds\n *@example {3} PH1\n */\n dms: '{PH1} `ms`',\n /**\n *@description Text in Throttling Settings Tab of the Network panel\n */\n profileName: 'Profile Name',\n /**\n * @description Label for a textbox that sets the download speed in the Throttling Settings Tab.\n * Noun, short for 'download speed'.\n */\n download: 'Download',\n /**\n * @description Label for a textbox that sets the upload speed in the Throttling Settings Tab.\n * Noun, short for 'upload speed'.\n */\n upload: 'Upload',\n /**\n * @description Label for a textbox that sets the latency in the Throttling Settings Tab.\n */\n latency: 'Latency',\n /**\n *@description Text in Throttling Settings Tab of the Network panel\n */\n optional: 'optional',\n /**\n *@description Error message for Profile Name input in Throtting pane of the Settings\n *@example {49} PH1\n */\n profileNameCharactersLengthMust: 'Profile Name characters length must be between 1 to {PH1} inclusive',\n /**\n *@description Error message for Download and Upload inputs in Throttling pane of the Settings\n *@example {Download} PH1\n *@example {0} PH2\n *@example {10000000} PH3\n */\n sMustBeANumberBetweenSkbsToSkbs: '{PH1} must be a number between {PH2} `kbit/s` to {PH3} `kbit/s` inclusive',\n /**\n *@description Error message for Latency input in Throttling pane of the Settings\n *@example {0} PH1\n *@example {1000000} PH2\n */\n latencyMustBeAnIntegerBetweenSms: 'Latency must be an integer between {PH1} `ms` to {PH2} `ms` inclusive',\n /**\n * @description Text in Throttling Settings Tab of the Network panel, indicating the download or\n * upload speed that will be applied in kilobits per second.\n * @example {25} PH1\n */\n dskbits: '{PH1} `kbit/s`',\n /**\n * @description Text in Throttling Settings Tab of the Network panel, indicating the download or\n * upload speed that will be applied in megabits per second.\n * @example {25.4} PH1\n */\n fsmbits: '{PH1} `Mbit/s`',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/mobile_throttling/ThrottlingSettingsTab.ts', UIStrings);\nconst i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);\n\nlet throttlingSettingsTabInstance: ThrottlingSettingsTab;\n\nexport class ThrottlingSettingsTab extends UI.Widget.VBox implements\n UI.ListWidget.Delegate {\n private readonly list: UI.ListWidget.ListWidget;\n private readonly customSetting: Common.Settings.Setting;\n private editor?: UI.ListWidget.Editor;\n constructor() {\n super(true);\n\n this.element.setAttribute('jslog', `${VisualLogging.section().context('throttling-conditions')}`);\n\n const header = this.contentElement.createChild('div', 'header');\n header.textContent = i18nString(UIStrings.networkThrottlingProfiles);\n UI.ARIAUtils.markAsHeading(header, 1);\n\n const addButton = UI.UIUtils.createTextButton(\n i18nString(UIStrings.addCustomProfile), this.addButtonClicked.bind(this), 'add-conditions-button');\n addButton.setAttribute('jslog', `${VisualLogging.action().track({click: true}).context('add-conditions')}`);\n this.contentElement.appendChild(addButton);\n\n this.list = new UI.ListWidget.ListWidget(this);\n this.list.element.classList.add('conditions-list');\n\n this.list.show(this.contentElement);\n\n this.customSetting = Common.Settings.Settings.instance().moduleSetting('customNetworkConditions');\n this.customSetting.addChangeListener(this.conditionsUpdated, this);\n\n this.setDefaultFocusedElement(addButton);\n }\n\n static instance(opts = {forceNew: null}): ThrottlingSettingsTab {\n const {forceNew} = opts;\n if (!throttlingSettingsTabInstance || forceNew) {\n throttlingSettingsTabInstance = new ThrottlingSettingsTab();\n }\n\n return throttlingSettingsTabInstance;\n }\n\n override wasShown(): void {\n super.wasShown();\n this.list.registerCSSFiles([throttlingSettingsTabStyles]);\n this.registerCSSFiles([throttlingSettingsTabStyles]);\n this.conditionsUpdated();\n }\n\n private conditionsUpdated(): void {\n this.list.clear();\n\n const conditions = this.customSetting.get();\n for (let i = 0; i < conditions.length; ++i) {\n this.list.appendItem(conditions[i], true);\n }\n\n this.list.appendSeparator();\n }\n\n private addButtonClicked(): void {\n this.list.addNewItem(this.customSetting.get().length, {title: () => '', download: -1, upload: -1, latency: 0});\n }\n\n renderItem(conditions: SDK.NetworkManager.Conditions, _editable: boolean): Element {\n const element = document.createElement('div');\n element.classList.add('conditions-list-item');\n const title = element.createChild('div', 'conditions-list-text conditions-list-title');\n const titleText = title.createChild('div', 'conditions-list-title-text');\n const castedTitle = this.retrieveOptionsTitle(conditions);\n titleText.textContent = castedTitle;\n UI.Tooltip.Tooltip.install(titleText, castedTitle);\n element.createChild('div', 'conditions-list-separator');\n element.createChild('div', 'conditions-list-text').textContent = throughputText(conditions.download);\n element.createChild('div', 'conditions-list-separator');\n element.createChild('div', 'conditions-list-text').textContent = throughputText(conditions.upload);\n element.createChild('div', 'conditions-list-separator');\n element.createChild('div', 'conditions-list-text').textContent =\n i18nString(UIStrings.dms, {PH1: conditions.latency});\n return element;\n }\n\n removeItemRequested(_item: SDK.NetworkManager.Conditions, index: number): void {\n const list = this.customSetting.get();\n list.splice(index, 1);\n this.customSetting.set(list);\n }\n\n retrieveOptionsTitle(conditions: SDK.NetworkManager.Conditions): string {\n // The title is usually an i18nLazyString except for custom values that are stored in the local storage in the form of a string.\n const castedTitle = typeof conditions.title === 'function' ? conditions.title() : conditions.title;\n return castedTitle;\n }\n\n commitEdit(\n conditions: SDK.NetworkManager.Conditions, editor: UI.ListWidget.Editor,\n isNew: boolean): void {\n conditions.title = editor.control('title').value.trim();\n const download = editor.control('download').value.trim();\n conditions.download = download ? parseInt(download, 10) * (1000 / 8) : -1;\n const upload = editor.control('upload').value.trim();\n conditions.upload = upload ? parseInt(upload, 10) * (1000 / 8) : -1;\n const latency = editor.control('latency').value.trim();\n conditions.latency = latency ? parseInt(latency, 10) : 0;\n\n const list = this.customSetting.get();\n if (isNew) {\n list.push(conditions);\n }\n\n this.customSetting.set(list);\n }\n\n beginEdit(conditions: SDK.NetworkManager.Conditions): UI.ListWidget.Editor {\n const editor = this.createEditor();\n editor.control('title').value = this.retrieveOptionsTitle(conditions);\n editor.control('download').value = conditions.download <= 0 ? '' : String(conditions.download / (1000 / 8));\n editor.control('upload').value = conditions.upload <= 0 ? '' : String(conditions.upload / (1000 / 8));\n editor.control('latency').value = conditions.latency ? String(conditions.latency) : '';\n return editor;\n }\n\n private createEditor(): UI.ListWidget.Editor {\n if (this.editor) {\n return this.editor;\n }\n\n const editor = new UI.ListWidget.Editor();\n this.editor = editor;\n const content = editor.contentElement();\n\n const titles = content.createChild('div', 'conditions-edit-row');\n const nameLabel = titles.createChild('div', 'conditions-list-text conditions-list-title');\n const nameStr = i18nString(UIStrings.profileName);\n const nameLabelText = nameLabel.createChild('div', 'conditions-list-title-text');\n nameLabelText.textContent = nameStr;\n titles.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n const downloadLabel = titles.createChild('div', 'conditions-list-text');\n const downloadStr = i18nString(UIStrings.download);\n const downloadLabelText = downloadLabel.createChild('div', 'conditions-list-title-text');\n downloadLabelText.textContent = downloadStr;\n titles.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n const uploadLabel = titles.createChild('div', 'conditions-list-text');\n const uploadLabelText = uploadLabel.createChild('div', 'conditions-list-title-text');\n const uploadStr = i18nString(UIStrings.upload);\n uploadLabelText.textContent = uploadStr;\n titles.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n const latencyLabel = titles.createChild('div', 'conditions-list-text');\n const latencyStr = i18nString(UIStrings.latency);\n const latencyLabelText = latencyLabel.createChild('div', 'conditions-list-title-text');\n latencyLabelText.textContent = latencyStr;\n\n const fields = content.createChild('div', 'conditions-edit-row');\n const nameInput = editor.createInput('title', 'text', '', titleValidator);\n UI.ARIAUtils.setLabel(nameInput, nameStr);\n fields.createChild('div', 'conditions-list-text conditions-list-title').appendChild(nameInput);\n fields.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n\n let cell = fields.createChild('div', 'conditions-list-text');\n const downloadInput = editor.createInput('download', 'text', i18n.i18n.lockedString('kbit/s'), throughputValidator);\n cell.appendChild(downloadInput);\n UI.ARIAUtils.setLabel(downloadInput, downloadStr);\n const downloadOptional = cell.createChild('div', 'conditions-edit-optional');\n const optionalStr = i18nString(UIStrings.optional);\n downloadOptional.textContent = optionalStr;\n UI.ARIAUtils.setDescription(downloadInput, optionalStr);\n fields.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n\n cell = fields.createChild('div', 'conditions-list-text');\n const uploadInput = editor.createInput('upload', 'text', i18n.i18n.lockedString('kbit/s'), throughputValidator);\n UI.ARIAUtils.setLabel(uploadInput, uploadStr);\n cell.appendChild(uploadInput);\n const uploadOptional = cell.createChild('div', 'conditions-edit-optional');\n uploadOptional.textContent = optionalStr;\n UI.ARIAUtils.setDescription(uploadInput, optionalStr);\n fields.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n\n cell = fields.createChild('div', 'conditions-list-text');\n const latencyInput = editor.createInput('latency', 'text', i18n.i18n.lockedString('ms'), latencyValidator);\n UI.ARIAUtils.setLabel(latencyInput, latencyStr);\n cell.appendChild(latencyInput);\n const latencyOptional = cell.createChild('div', 'conditions-edit-optional');\n latencyOptional.textContent = optionalStr;\n UI.ARIAUtils.setDescription(latencyInput, optionalStr);\n\n return editor;\n\n function titleValidator(_item: SDK.NetworkManager.Conditions, _index: number, input: UI.ListWidget.EditorControl):\n UI.ListWidget.ValidatorResult {\n const maxLength = 49;\n const value = input.value.trim();\n const valid = value.length > 0 && value.length <= maxLength;\n if (!valid) {\n const errorMessage = i18nString(UIStrings.profileNameCharactersLengthMust, {PH1: maxLength});\n return {valid, errorMessage};\n }\n return {valid, errorMessage: undefined};\n }\n\n function throughputValidator(\n _item: SDK.NetworkManager.Conditions, _index: number,\n input: UI.ListWidget.EditorControl): UI.ListWidget.ValidatorResult {\n const minThroughput = 0;\n const maxThroughput = 10000000;\n const value = input.value.trim();\n const parsedValue = Number(value);\n const throughput = input.getAttribute('aria-label');\n const valid = !Number.isNaN(parsedValue) && parsedValue >= minThroughput && parsedValue <= maxThroughput;\n if (!valid) {\n const errorMessage = i18nString(\n UIStrings.sMustBeANumberBetweenSkbsToSkbs,\n {PH1: String(throughput), PH2: minThroughput, PH3: maxThroughput});\n return {valid, errorMessage};\n }\n return {valid, errorMessage: undefined};\n }\n\n function latencyValidator(_item: SDK.NetworkManager.Conditions, _index: number, input: UI.ListWidget.EditorControl):\n UI.ListWidget.ValidatorResult {\n const minLatency = 0;\n const maxLatency = 1000000;\n const value = input.value.trim();\n const parsedValue = Number(value);\n const valid = Number.isInteger(parsedValue) && parsedValue >= minLatency && parsedValue <= maxLatency;\n if (!valid) {\n const errorMessage = i18nString(UIStrings.latencyMustBeAnIntegerBetweenSms, {PH1: minLatency, PH2: maxLatency});\n return {valid, errorMessage};\n }\n return {valid, errorMessage: undefined};\n }\n }\n}\n\nfunction throughputText(throughput: number): string {\n if (throughput < 0) {\n return '';\n }\n const throughputInKbps = throughput / (1000 / 8);\n if (throughputInKbps < 1000) {\n return i18nString(UIStrings.dskbits, {PH1: throughputInKbps});\n }\n if (throughputInKbps < 1000 * 10) {\n const formattedResult = (throughputInKbps / 1000).toFixed(1);\n return i18nString(UIStrings.fsmbits, {PH1: formattedResult});\n }\n // TODO(petermarshall): Figure out if there is a difference we need to tell i18n about\n // for these two versions: one with decimal places and one without.\n return i18nString(UIStrings.fsmbits, {PH1: (throughputInKbps / 1000) | 0});\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"ThrottlingSettingsTab.js","sourceRoot":"","sources":["../../../../../../front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2017 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as Common from '../../core/common/common.js';\nimport * as i18n from '../../core/i18n/i18n.js';\nimport type * as SDK from '../../core/sdk/sdk.js';\nimport * as UI from '../../ui/legacy/legacy.js';\nimport * as VisualLogging from '../../ui/visual_logging/visual_logging.js';\n\nimport throttlingSettingsTabStyles from './throttlingSettingsTab.css.js';\n\nconst UIStrings = {\n /**\n *@description Text in Throttling Settings Tab of the Network panel\n */\n networkThrottlingProfiles: 'Network Throttling Profiles',\n /**\n *@description Text of add conditions button in Throttling Settings Tab of the Network panel\n */\n addCustomProfile: 'Add custom profile...',\n /**\n *@description A value in milliseconds\n *@example {3} PH1\n */\n dms: '{PH1} `ms`',\n /**\n *@description Text in Throttling Settings Tab of the Network panel\n */\n profileName: 'Profile Name',\n /**\n * @description Label for a textbox that sets the download speed in the Throttling Settings Tab.\n * Noun, short for 'download speed'.\n */\n download: 'Download',\n /**\n * @description Label for a textbox that sets the upload speed in the Throttling Settings Tab.\n * Noun, short for 'upload speed'.\n */\n upload: 'Upload',\n /**\n * @description Label for a textbox that sets the latency in the Throttling Settings Tab.\n */\n latency: 'Latency',\n /**\n *@description Text in Throttling Settings Tab of the Network panel\n */\n optional: 'optional',\n /**\n *@description Error message for Profile Name input in Throtting pane of the Settings\n *@example {49} PH1\n */\n profileNameCharactersLengthMust: 'Profile Name characters length must be between 1 to {PH1} inclusive',\n /**\n *@description Error message for Download and Upload inputs in Throttling pane of the Settings\n *@example {Download} PH1\n *@example {0} PH2\n *@example {10000000} PH3\n */\n sMustBeANumberBetweenSkbsToSkbs: '{PH1} must be a number between {PH2} `kbit/s` to {PH3} `kbit/s` inclusive',\n /**\n *@description Error message for Latency input in Throttling pane of the Settings\n *@example {0} PH1\n *@example {1000000} PH2\n */\n latencyMustBeAnIntegerBetweenSms: 'Latency must be an integer between {PH1} `ms` to {PH2} `ms` inclusive',\n /**\n * @description Text in Throttling Settings Tab of the Network panel, indicating the download or\n * upload speed that will be applied in kilobits per second.\n * @example {25} PH1\n */\n dskbits: '{PH1} `kbit/s`',\n /**\n * @description Text in Throttling Settings Tab of the Network panel, indicating the download or\n * upload speed that will be applied in megabits per second.\n * @example {25.4} PH1\n */\n fsmbits: '{PH1} `Mbit/s`',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/mobile_throttling/ThrottlingSettingsTab.ts', UIStrings);\nconst i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);\n\nexport class ThrottlingSettingsTab extends UI.Widget.VBox implements\n UI.ListWidget.Delegate {\n private readonly list: UI.ListWidget.ListWidget;\n private readonly customSetting: Common.Settings.Setting;\n private editor?: UI.ListWidget.Editor;\n\n constructor() {\n super(true);\n\n this.element.setAttribute('jslog', `${VisualLogging.pane().context('throttling-conditions')}`);\n\n const header = this.contentElement.createChild('div', 'header');\n header.textContent = i18nString(UIStrings.networkThrottlingProfiles);\n UI.ARIAUtils.markAsHeading(header, 1);\n\n const addButton = UI.UIUtils.createTextButton(\n i18nString(UIStrings.addCustomProfile), this.addButtonClicked.bind(this), 'add-conditions-button');\n addButton.setAttribute('jslog', `${VisualLogging.action().track({click: true}).context('add-conditions')}`);\n this.contentElement.appendChild(addButton);\n\n this.list = new UI.ListWidget.ListWidget(this);\n this.list.element.classList.add('conditions-list');\n\n this.list.show(this.contentElement);\n\n this.customSetting = Common.Settings.Settings.instance().moduleSetting('customNetworkConditions');\n this.customSetting.addChangeListener(this.conditionsUpdated, this);\n\n this.setDefaultFocusedElement(addButton);\n }\n\n override wasShown(): void {\n super.wasShown();\n this.list.registerCSSFiles([throttlingSettingsTabStyles]);\n this.registerCSSFiles([throttlingSettingsTabStyles]);\n this.conditionsUpdated();\n }\n\n private conditionsUpdated(): void {\n this.list.clear();\n\n const conditions = this.customSetting.get();\n for (let i = 0; i < conditions.length; ++i) {\n this.list.appendItem(conditions[i], true);\n }\n\n this.list.appendSeparator();\n }\n\n private addButtonClicked(): void {\n this.list.addNewItem(this.customSetting.get().length, {title: () => '', download: -1, upload: -1, latency: 0});\n }\n\n renderItem(conditions: SDK.NetworkManager.Conditions, _editable: boolean): Element {\n const element = document.createElement('div');\n element.classList.add('conditions-list-item');\n const title = element.createChild('div', 'conditions-list-text conditions-list-title');\n const titleText = title.createChild('div', 'conditions-list-title-text');\n const castedTitle = this.retrieveOptionsTitle(conditions);\n titleText.textContent = castedTitle;\n UI.Tooltip.Tooltip.install(titleText, castedTitle);\n element.createChild('div', 'conditions-list-separator');\n element.createChild('div', 'conditions-list-text').textContent = throughputText(conditions.download);\n element.createChild('div', 'conditions-list-separator');\n element.createChild('div', 'conditions-list-text').textContent = throughputText(conditions.upload);\n element.createChild('div', 'conditions-list-separator');\n element.createChild('div', 'conditions-list-text').textContent =\n i18nString(UIStrings.dms, {PH1: conditions.latency});\n return element;\n }\n\n removeItemRequested(_item: SDK.NetworkManager.Conditions, index: number): void {\n const list = this.customSetting.get();\n list.splice(index, 1);\n this.customSetting.set(list);\n }\n\n retrieveOptionsTitle(conditions: SDK.NetworkManager.Conditions): string {\n // The title is usually an i18nLazyString except for custom values that are stored in the local storage in the form of a string.\n const castedTitle = typeof conditions.title === 'function' ? conditions.title() : conditions.title;\n return castedTitle;\n }\n\n commitEdit(\n conditions: SDK.NetworkManager.Conditions, editor: UI.ListWidget.Editor,\n isNew: boolean): void {\n conditions.title = editor.control('title').value.trim();\n const download = editor.control('download').value.trim();\n conditions.download = download ? parseInt(download, 10) * (1000 / 8) : -1;\n const upload = editor.control('upload').value.trim();\n conditions.upload = upload ? parseInt(upload, 10) * (1000 / 8) : -1;\n const latency = editor.control('latency').value.trim();\n conditions.latency = latency ? parseInt(latency, 10) : 0;\n\n const list = this.customSetting.get();\n if (isNew) {\n list.push(conditions);\n }\n\n this.customSetting.set(list);\n }\n\n beginEdit(conditions: SDK.NetworkManager.Conditions): UI.ListWidget.Editor {\n const editor = this.createEditor();\n editor.control('title').value = this.retrieveOptionsTitle(conditions);\n editor.control('download').value = conditions.download <= 0 ? '' : String(conditions.download / (1000 / 8));\n editor.control('upload').value = conditions.upload <= 0 ? '' : String(conditions.upload / (1000 / 8));\n editor.control('latency').value = conditions.latency ? String(conditions.latency) : '';\n return editor;\n }\n\n private createEditor(): UI.ListWidget.Editor {\n if (this.editor) {\n return this.editor;\n }\n\n const editor = new UI.ListWidget.Editor();\n this.editor = editor;\n const content = editor.contentElement();\n\n const titles = content.createChild('div', 'conditions-edit-row');\n const nameLabel = titles.createChild('div', 'conditions-list-text conditions-list-title');\n const nameStr = i18nString(UIStrings.profileName);\n const nameLabelText = nameLabel.createChild('div', 'conditions-list-title-text');\n nameLabelText.textContent = nameStr;\n titles.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n const downloadLabel = titles.createChild('div', 'conditions-list-text');\n const downloadStr = i18nString(UIStrings.download);\n const downloadLabelText = downloadLabel.createChild('div', 'conditions-list-title-text');\n downloadLabelText.textContent = downloadStr;\n titles.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n const uploadLabel = titles.createChild('div', 'conditions-list-text');\n const uploadLabelText = uploadLabel.createChild('div', 'conditions-list-title-text');\n const uploadStr = i18nString(UIStrings.upload);\n uploadLabelText.textContent = uploadStr;\n titles.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n const latencyLabel = titles.createChild('div', 'conditions-list-text');\n const latencyStr = i18nString(UIStrings.latency);\n const latencyLabelText = latencyLabel.createChild('div', 'conditions-list-title-text');\n latencyLabelText.textContent = latencyStr;\n\n const fields = content.createChild('div', 'conditions-edit-row');\n const nameInput = editor.createInput('title', 'text', '', titleValidator);\n UI.ARIAUtils.setLabel(nameInput, nameStr);\n fields.createChild('div', 'conditions-list-text conditions-list-title').appendChild(nameInput);\n fields.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n\n let cell = fields.createChild('div', 'conditions-list-text');\n const downloadInput = editor.createInput('download', 'text', i18n.i18n.lockedString('kbit/s'), throughputValidator);\n cell.appendChild(downloadInput);\n UI.ARIAUtils.setLabel(downloadInput, downloadStr);\n const downloadOptional = cell.createChild('div', 'conditions-edit-optional');\n const optionalStr = i18nString(UIStrings.optional);\n downloadOptional.textContent = optionalStr;\n UI.ARIAUtils.setDescription(downloadInput, optionalStr);\n fields.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n\n cell = fields.createChild('div', 'conditions-list-text');\n const uploadInput = editor.createInput('upload', 'text', i18n.i18n.lockedString('kbit/s'), throughputValidator);\n UI.ARIAUtils.setLabel(uploadInput, uploadStr);\n cell.appendChild(uploadInput);\n const uploadOptional = cell.createChild('div', 'conditions-edit-optional');\n uploadOptional.textContent = optionalStr;\n UI.ARIAUtils.setDescription(uploadInput, optionalStr);\n fields.createChild('div', 'conditions-list-separator conditions-list-separator-invisible');\n\n cell = fields.createChild('div', 'conditions-list-text');\n const latencyInput = editor.createInput('latency', 'text', i18n.i18n.lockedString('ms'), latencyValidator);\n UI.ARIAUtils.setLabel(latencyInput, latencyStr);\n cell.appendChild(latencyInput);\n const latencyOptional = cell.createChild('div', 'conditions-edit-optional');\n latencyOptional.textContent = optionalStr;\n UI.ARIAUtils.setDescription(latencyInput, optionalStr);\n\n return editor;\n\n function titleValidator(_item: SDK.NetworkManager.Conditions, _index: number, input: UI.ListWidget.EditorControl):\n UI.ListWidget.ValidatorResult {\n const maxLength = 49;\n const value = input.value.trim();\n const valid = value.length > 0 && value.length <= maxLength;\n if (!valid) {\n const errorMessage = i18nString(UIStrings.profileNameCharactersLengthMust, {PH1: maxLength});\n return {valid, errorMessage};\n }\n return {valid, errorMessage: undefined};\n }\n\n function throughputValidator(\n _item: SDK.NetworkManager.Conditions, _index: number,\n input: UI.ListWidget.EditorControl): UI.ListWidget.ValidatorResult {\n const minThroughput = 0;\n const maxThroughput = 10000000;\n const value = input.value.trim();\n const parsedValue = Number(value);\n const throughput = input.getAttribute('aria-label');\n const valid = !Number.isNaN(parsedValue) && parsedValue >= minThroughput && parsedValue <= maxThroughput;\n if (!valid) {\n const errorMessage = i18nString(\n UIStrings.sMustBeANumberBetweenSkbsToSkbs,\n {PH1: String(throughput), PH2: minThroughput, PH3: maxThroughput});\n return {valid, errorMessage};\n }\n return {valid, errorMessage: undefined};\n }\n\n function latencyValidator(_item: SDK.NetworkManager.Conditions, _index: number, input: UI.ListWidget.EditorControl):\n UI.ListWidget.ValidatorResult {\n const minLatency = 0;\n const maxLatency = 1000000;\n const value = input.value.trim();\n const parsedValue = Number(value);\n const valid = Number.isInteger(parsedValue) && parsedValue >= minLatency && parsedValue <= maxLatency;\n if (!valid) {\n const errorMessage = i18nString(UIStrings.latencyMustBeAnIntegerBetweenSms, {PH1: minLatency, PH2: maxLatency});\n return {valid, errorMessage};\n }\n return {valid, errorMessage: undefined};\n }\n }\n}\n\nfunction throughputText(throughput: number): string {\n if (throughput < 0) {\n return '';\n }\n const throughputInKbps = throughput / (1000 / 8);\n if (throughputInKbps < 1000) {\n return i18nString(UIStrings.dskbits, {PH1: throughputInKbps});\n }\n if (throughputInKbps < 1000 * 10) {\n const formattedResult = (throughputInKbps / 1000).toFixed(1);\n return i18nString(UIStrings.fsmbits, {PH1: formattedResult});\n }\n // TODO(petermarshall): Figure out if there is a difference we need to tell i18n about\n // for these two versions: one with decimal places and one without.\n return i18nString(UIStrings.fsmbits, {PH1: (throughputInKbps / 1000) | 0});\n}\n"]}
\ No newline at end of file
diff --git a/public/panels/mobile_throttling/mobile_throttling-meta.js b/public/panels/mobile_throttling/mobile_throttling-meta.js
index 9b82c4e31..28c056d9b 100644
--- a/public/panels/mobile_throttling/mobile_throttling-meta.js
+++ b/public/panels/mobile_throttling/mobile_throttling-meta.js
@@ -57,7 +57,7 @@ UI.ViewManager.registerViewExtension({
order: 35,
async loadView() {
const MobileThrottling = await loadMobileThrottlingModule();
- return MobileThrottling.ThrottlingSettingsTab.ThrottlingSettingsTab.instance();
+ return new MobileThrottling.ThrottlingSettingsTab.ThrottlingSettingsTab();
},
settings: [
'customNetworkConditions',
diff --git a/public/panels/mobile_throttling/mobile_throttling-meta.js.map b/public/panels/mobile_throttling/mobile_throttling-meta.js.map
index 3ac485ed7..8662dd501 100644
--- a/public/panels/mobile_throttling/mobile_throttling-meta.js.map
+++ b/public/panels/mobile_throttling/mobile_throttling-meta.js.map
@@ -1 +1 @@
-{"version":3,"file":"mobile_throttling-meta.js","sourceRoot":"","sources":["../../../../../../front_end/panels/mobile_throttling/mobile_throttling-meta.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as Common from '../../core/common/common.js';\nimport * as i18n from '../../core/i18n/i18n.js';\nimport * as UI from '../../ui/legacy/legacy.js';\n\nimport type * as MobileThrottling from './mobile_throttling.js';\n\nconst UIStrings = {\n /**\n *@description Text for throttling the network\n */\n throttling: 'Throttling',\n /**\n *@description Command for showing the Mobile Throttling tool.\n */\n showThrottling: 'Show Throttling',\n /**\n *@description Title of an action in the network conditions tool to network offline\n */\n goOffline: 'Go offline',\n /**\n *@description A tag of Mobile related settings that can be searched in the command menu\n */\n device: 'device',\n /**\n *@description A tag of Network related actions that can be searched in the command menu\n */\n throttlingTag: 'throttling',\n /**\n * @description Title of an action in the network conditions tool to simulate an environment with a\n * slow 3G connection, i.e. for a low end mobile device.\n */\n enableSlowGThrottling: 'Enable slow `3G` throttling',\n /**\n * @description Title of an action in the network conditions tool to simulate an environment with a\n * medium-speed 3G connection, i.e. for a mid-tier mobile device.\n */\n enableFastGThrottling: 'Enable fast `3G` throttling',\n /**\n *@description Title of an action in the network conditions tool to network online\n */\n goOnline: 'Go online',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/mobile_throttling/mobile_throttling-meta.ts', UIStrings);\nconst i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);\n\nlet loadedMobileThrottlingModule: (typeof MobileThrottling|undefined);\n\nasync function loadMobileThrottlingModule(): Promise {\n if (!loadedMobileThrottlingModule) {\n loadedMobileThrottlingModule = await import('./mobile_throttling.js');\n }\n return loadedMobileThrottlingModule;\n}\n\nUI.ViewManager.registerViewExtension({\n location: UI.ViewManager.ViewLocationValues.SETTINGS_VIEW,\n id: 'throttling-conditions',\n title: i18nLazyString(UIStrings.throttling),\n commandPrompt: i18nLazyString(UIStrings.showThrottling),\n order: 35,\n async loadView() {\n const MobileThrottling = await loadMobileThrottlingModule();\n return MobileThrottling.ThrottlingSettingsTab.ThrottlingSettingsTab.instance();\n },\n settings: [\n 'customNetworkConditions',\n ],\n});\n\nUI.ActionRegistration.registerActionExtension({\n actionId: 'network-conditions.network-offline',\n category: UI.ActionRegistration.ActionCategory.NETWORK,\n title: i18nLazyString(UIStrings.goOffline),\n async loadActionDelegate() {\n const MobileThrottling = await loadMobileThrottlingModule();\n return new MobileThrottling.ThrottlingManager.ActionDelegate();\n },\n tags: [\n i18nLazyString(UIStrings.device),\n i18nLazyString(UIStrings.throttlingTag),\n ],\n});\n\nUI.ActionRegistration.registerActionExtension({\n actionId: 'network-conditions.network-low-end-mobile',\n category: UI.ActionRegistration.ActionCategory.NETWORK,\n title: i18nLazyString(UIStrings.enableSlowGThrottling),\n async loadActionDelegate() {\n const MobileThrottling = await loadMobileThrottlingModule();\n return new MobileThrottling.ThrottlingManager.ActionDelegate();\n },\n tags: [\n i18nLazyString(UIStrings.device),\n i18nLazyString(UIStrings.throttlingTag),\n ],\n});\n\nUI.ActionRegistration.registerActionExtension({\n actionId: 'network-conditions.network-mid-tier-mobile',\n category: UI.ActionRegistration.ActionCategory.NETWORK,\n title: i18nLazyString(UIStrings.enableFastGThrottling),\n async loadActionDelegate() {\n const MobileThrottling = await loadMobileThrottlingModule();\n return new MobileThrottling.ThrottlingManager.ActionDelegate();\n },\n tags: [\n i18nLazyString(UIStrings.device),\n i18nLazyString(UIStrings.throttlingTag),\n ],\n});\n\nUI.ActionRegistration.registerActionExtension({\n actionId: 'network-conditions.network-online',\n category: UI.ActionRegistration.ActionCategory.NETWORK,\n title: i18nLazyString(UIStrings.goOnline),\n async loadActionDelegate() {\n const MobileThrottling = await loadMobileThrottlingModule();\n return new MobileThrottling.ThrottlingManager.ActionDelegate();\n },\n tags: [\n i18nLazyString(UIStrings.device),\n i18nLazyString(UIStrings.throttlingTag),\n ],\n});\n\nCommon.Settings.registerSettingExtension({\n storageType: Common.Settings.SettingStorageType.Synced,\n settingName: 'customNetworkConditions',\n settingType: Common.Settings.SettingType.ARRAY,\n defaultValue: [],\n});\n"]}
\ No newline at end of file
+{"version":3,"file":"mobile_throttling-meta.js","sourceRoot":"","sources":["../../../../../../front_end/panels/mobile_throttling/mobile_throttling-meta.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as Common from '../../core/common/common.js';\nimport * as i18n from '../../core/i18n/i18n.js';\nimport * as UI from '../../ui/legacy/legacy.js';\n\nimport type * as MobileThrottling from './mobile_throttling.js';\n\nconst UIStrings = {\n /**\n *@description Text for throttling the network\n */\n throttling: 'Throttling',\n /**\n *@description Command for showing the Mobile Throttling tool.\n */\n showThrottling: 'Show Throttling',\n /**\n *@description Title of an action in the network conditions tool to network offline\n */\n goOffline: 'Go offline',\n /**\n *@description A tag of Mobile related settings that can be searched in the command menu\n */\n device: 'device',\n /**\n *@description A tag of Network related actions that can be searched in the command menu\n */\n throttlingTag: 'throttling',\n /**\n * @description Title of an action in the network conditions tool to simulate an environment with a\n * slow 3G connection, i.e. for a low end mobile device.\n */\n enableSlowGThrottling: 'Enable slow `3G` throttling',\n /**\n * @description Title of an action in the network conditions tool to simulate an environment with a\n * medium-speed 3G connection, i.e. for a mid-tier mobile device.\n */\n enableFastGThrottling: 'Enable fast `3G` throttling',\n /**\n *@description Title of an action in the network conditions tool to network online\n */\n goOnline: 'Go online',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/mobile_throttling/mobile_throttling-meta.ts', UIStrings);\nconst i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);\n\nlet loadedMobileThrottlingModule: (typeof MobileThrottling|undefined);\n\nasync function loadMobileThrottlingModule(): Promise {\n if (!loadedMobileThrottlingModule) {\n loadedMobileThrottlingModule = await import('./mobile_throttling.js');\n }\n return loadedMobileThrottlingModule;\n}\n\nUI.ViewManager.registerViewExtension({\n location: UI.ViewManager.ViewLocationValues.SETTINGS_VIEW,\n id: 'throttling-conditions',\n title: i18nLazyString(UIStrings.throttling),\n commandPrompt: i18nLazyString(UIStrings.showThrottling),\n order: 35,\n async loadView() {\n const MobileThrottling = await loadMobileThrottlingModule();\n return new MobileThrottling.ThrottlingSettingsTab.ThrottlingSettingsTab();\n },\n settings: [\n 'customNetworkConditions',\n ],\n});\n\nUI.ActionRegistration.registerActionExtension({\n actionId: 'network-conditions.network-offline',\n category: UI.ActionRegistration.ActionCategory.NETWORK,\n title: i18nLazyString(UIStrings.goOffline),\n async loadActionDelegate() {\n const MobileThrottling = await loadMobileThrottlingModule();\n return new MobileThrottling.ThrottlingManager.ActionDelegate();\n },\n tags: [\n i18nLazyString(UIStrings.device),\n i18nLazyString(UIStrings.throttlingTag),\n ],\n});\n\nUI.ActionRegistration.registerActionExtension({\n actionId: 'network-conditions.network-low-end-mobile',\n category: UI.ActionRegistration.ActionCategory.NETWORK,\n title: i18nLazyString(UIStrings.enableSlowGThrottling),\n async loadActionDelegate() {\n const MobileThrottling = await loadMobileThrottlingModule();\n return new MobileThrottling.ThrottlingManager.ActionDelegate();\n },\n tags: [\n i18nLazyString(UIStrings.device),\n i18nLazyString(UIStrings.throttlingTag),\n ],\n});\n\nUI.ActionRegistration.registerActionExtension({\n actionId: 'network-conditions.network-mid-tier-mobile',\n category: UI.ActionRegistration.ActionCategory.NETWORK,\n title: i18nLazyString(UIStrings.enableFastGThrottling),\n async loadActionDelegate() {\n const MobileThrottling = await loadMobileThrottlingModule();\n return new MobileThrottling.ThrottlingManager.ActionDelegate();\n },\n tags: [\n i18nLazyString(UIStrings.device),\n i18nLazyString(UIStrings.throttlingTag),\n ],\n});\n\nUI.ActionRegistration.registerActionExtension({\n actionId: 'network-conditions.network-online',\n category: UI.ActionRegistration.ActionCategory.NETWORK,\n title: i18nLazyString(UIStrings.goOnline),\n async loadActionDelegate() {\n const MobileThrottling = await loadMobileThrottlingModule();\n return new MobileThrottling.ThrottlingManager.ActionDelegate();\n },\n tags: [\n i18nLazyString(UIStrings.device),\n i18nLazyString(UIStrings.throttlingTag),\n ],\n});\n\nCommon.Settings.registerSettingExtension({\n storageType: Common.Settings.SettingStorageType.Synced,\n settingName: 'customNetworkConditions',\n settingType: Common.Settings.SettingType.ARRAY,\n defaultValue: [],\n});\n"]}
\ No newline at end of file
diff --git a/public/panels/network/BlockedURLsPane.d.ts b/public/panels/network/BlockedURLsPane.d.ts
index 2977ebdd9..8be08d0bc 100644
--- a/public/panels/network/BlockedURLsPane.d.ts
+++ b/public/panels/network/BlockedURLsPane.d.ts
@@ -1,7 +1,5 @@
-import * as Common from '../../core/common/common.js';
import * as SDK from '../../core/sdk/sdk.js';
import * as UI from '../../ui/legacy/legacy.js';
-export declare let blockedURLsPaneInstance: BlockedURLsPane | null;
export declare class BlockedURLsPane extends UI.Widget.VBox implements UI.ListWidget.Delegate {
private manager;
private readonly toolbar;
@@ -9,14 +7,8 @@ export declare class BlockedURLsPane extends UI.Widget.VBox implements UI.ListWi
private readonly list;
private editor;
private blockedCountForUrl;
- private readonly updateThrottler;
- constructor(updateThrottler: Common.Throttler.Throttler);
- static instance(opts?: {
- forceNew: boolean;
- updateThrottler: Common.Throttler.Throttler;
- }): BlockedURLsPane;
+ constructor();
private createEmptyPlaceholder;
- static reset(): void;
addPattern(): void;
removeAllPatterns(): void;
renderItem(pattern: SDK.NetworkManager.BlockedPattern, editable: boolean): Element;
@@ -26,10 +18,10 @@ export declare class BlockedURLsPane extends UI.Widget.VBox implements UI.ListWi
beginEdit(pattern: SDK.NetworkManager.BlockedPattern): UI.ListWidget.Editor;
commitEdit(item: SDK.NetworkManager.BlockedPattern, editor: UI.ListWidget.Editor, isNew: boolean): void;
private createEditor;
- private update;
+ update(): void;
private blockedRequestsCount;
private matches;
- reset(): void;
+ private onNetworkLogReset;
private onRequestFinished;
wasShown(): void;
willHide(): void;
diff --git a/public/panels/network/BlockedURLsPane.js b/public/panels/network/BlockedURLsPane.js
index 2b3e76081..d8836d353 100644
--- a/public/panels/network/BlockedURLsPane.js
+++ b/public/panels/network/BlockedURLsPane.js
@@ -1,10 +1,10 @@
// Copyright (c) 2015 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 i18n from '../../core/i18n/i18n.js';
import * as Platform from '../../core/platform/platform.js';
import * as SDK from '../../core/sdk/sdk.js';
+import * as Logs from '../../models/logs/logs.js';
import * as UI from '../../ui/legacy/legacy.js';
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
import blockedURLsPaneStyles from './blockedURLsPane.css.js';
@@ -50,7 +50,6 @@ const UIStrings = {
};
const str_ = i18n.i18n.registerUIStrings('panels/network/BlockedURLsPane.ts', UIStrings);
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
-export let blockedURLsPaneInstance = null;
export class BlockedURLsPane extends UI.Widget.VBox {
manager;
toolbar;
@@ -58,14 +57,11 @@ export class BlockedURLsPane extends UI.Widget.VBox {
list;
editor;
blockedCountForUrl;
- updateThrottler;
- constructor(updateThrottler) {
+ constructor() {
super(true);
this.element.setAttribute('jslog', `${VisualLogging.panel().context('network.blocked-urls')}`);
this.manager = SDK.NetworkManager.MultitargetNetworkManager.instance();
- this.manager.addEventListener(SDK.NetworkManager.MultitargetNetworkManager.Events.BlockedPatternsChanged, () => {
- void this.update();
- }, this);
+ this.manager.addEventListener(SDK.NetworkManager.MultitargetNetworkManager.Events.BlockedPatternsChanged, this.update, this);
this.toolbar = new UI.Toolbar.Toolbar('', this.contentElement);
this.enabledCheckbox = new UI.Toolbar.ToolbarCheckbox(i18nString(UIStrings.enableNetworkRequestBlocking), undefined, this.toggleEnabled.bind(this), 'network.enable-request-blocking');
this.toolbar.appendToolbarItem(this.enabledCheckbox);
@@ -79,14 +75,8 @@ export class BlockedURLsPane extends UI.Widget.VBox {
this.editor = null;
this.blockedCountForUrl = new Map();
SDK.TargetManager.TargetManager.instance().addModelListener(SDK.NetworkManager.NetworkManager, SDK.NetworkManager.Events.RequestFinished, this.onRequestFinished, this, { scoped: true });
- this.updateThrottler = updateThrottler;
- void this.update();
- }
- static instance(opts) {
- if (!blockedURLsPaneInstance || opts?.forceNew) {
- blockedURLsPaneInstance = new BlockedURLsPane(opts?.updateThrottler || new Common.Throttler.Throttler(200));
- }
- return blockedURLsPaneInstance;
+ this.update();
+ Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.Reset, this.onNetworkLogReset, this);
}
createEmptyPlaceholder() {
const element = this.contentElement.createChild('div', 'no-blocked-urls');
@@ -96,11 +86,6 @@ export class BlockedURLsPane extends UI.Widget.VBox {
element.appendChild(i18n.i18n.getFormatLocalizedString(str_, UIStrings.networkRequestsAreNotBlockedS, { PH1: addButton }));
return element;
}
- static reset() {
- if (blockedURLsPaneInstance) {
- blockedURLsPaneInstance.reset();
- }
- }
addPattern() {
this.manager.setBlockingEnabled(true);
this.list.addNewItem(0, { url: Platform.DevToolsPath.EmptyUrlString, enabled: true });
@@ -133,7 +118,7 @@ export class BlockedURLsPane extends UI.Widget.VBox {
}
toggleEnabled() {
this.manager.setBlockingEnabled(!this.manager.blockingEnabled());
- void this.update();
+ this.update();
}
removeItemRequested(pattern, index) {
const patterns = this.manager.blockedPatterns();
@@ -191,7 +176,6 @@ export class BlockedURLsPane extends UI.Widget.VBox {
for (const pattern of this.manager.blockedPatterns()) {
this.list.appendItem(pattern, enabled);
}
- return Promise.resolve();
}
blockedRequestsCount(url) {
if (!url) {
@@ -221,16 +205,16 @@ export class BlockedURLsPane extends UI.Widget.VBox {
}
return true;
}
- reset() {
+ onNetworkLogReset(_event) {
this.blockedCountForUrl.clear();
- void this.updateThrottler.schedule(this.update.bind(this));
+ this.update();
}
onRequestFinished(event) {
const request = event.data;
if (request.wasBlocked()) {
const count = this.blockedCountForUrl.get(request.url()) || 0;
this.blockedCountForUrl.set(request.url(), count + 1);
- void this.updateThrottler.schedule(this.update.bind(this));
+ this.update();
}
}
wasShown() {
diff --git a/public/panels/network/BlockedURLsPane.js.map b/public/panels/network/BlockedURLsPane.js.map
index 0051bfe48..50d28f154 100644
--- a/public/panels/network/BlockedURLsPane.js.map
+++ b/public/panels/network/BlockedURLsPane.js.map
@@ -1 +1 @@
-{"version":3,"file":"BlockedURLsPane.js","sourceRoot":"","sources":["../../../../../../front_end/panels/network/BlockedURLsPane.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2015 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as Common from '../../core/common/common.js';\nimport * as i18n from '../../core/i18n/i18n.js';\nimport * as Platform from '../../core/platform/platform.js';\nimport * as SDK from '../../core/sdk/sdk.js';\nimport * as UI from '../../ui/legacy/legacy.js';\nimport * as VisualLogging from '../../ui/visual_logging/visual_logging.js';\n\nimport blockedURLsPaneStyles from './blockedURLsPane.css.js';\n\nconst UIStrings = {\n /**\n *@description Text to enable blocking of network requests\n */\n enableNetworkRequestBlocking: 'Enable network request blocking',\n /**\n *@description Tooltip text that appears when hovering over the plus button in the Blocked URLs Pane of the Network panel\n */\n addPattern: 'Add pattern',\n /**\n *@description Accessible label for the button to add request blocking patterns in the network request blocking tool\n */\n addNetworkRequestBlockingPattern: 'Add network request blocking pattern',\n /**\n *@description Button to add a pattern to block netwrok requests in the Network request blocking tool\n *@example {Add pattern} PH1\n */\n networkRequestsAreNotBlockedS: 'Network requests are not blocked. {PH1}',\n /**\n *@description Text in Blocked URLs Pane of the Network panel\n *@example {4} PH1\n */\n dBlocked: '{PH1} blocked',\n /**\n *@description Text in Blocked URLs Pane of the Network panel\n */\n textPatternToBlockMatching: 'Text pattern to block matching requests; use * for wildcard',\n /**\n *@description Error text for empty list widget input in Request Blocking tool\n */\n patternInputCannotBeEmpty: 'Pattern input cannot be empty.',\n /**\n *@description Error text for duplicate list widget input in Request Blocking tool\n */\n patternAlreadyExists: 'Pattern already exists.',\n /**\n *@description Message to be announced for a when list item is removed from list widget\n */\n itemDeleted: 'Item successfully deleted',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/network/BlockedURLsPane.ts', UIStrings);\nconst i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);\nexport let blockedURLsPaneInstance: BlockedURLsPane|null = null;\n\nexport class BlockedURLsPane extends UI.Widget.VBox implements\n UI.ListWidget.Delegate {\n private manager: SDK.NetworkManager.MultitargetNetworkManager;\n private readonly toolbar: UI.Toolbar.Toolbar;\n private readonly enabledCheckbox: UI.Toolbar.ToolbarCheckbox;\n private readonly list: UI.ListWidget.ListWidget;\n private editor: UI.ListWidget.Editor|null;\n private blockedCountForUrl: Map;\n private readonly updateThrottler: Common.Throttler.Throttler;\n\n constructor(updateThrottler: Common.Throttler.Throttler) {\n super(true);\n\n this.element.setAttribute('jslog', `${VisualLogging.panel().context('network.blocked-urls')}`);\n\n this.manager = SDK.NetworkManager.MultitargetNetworkManager.instance();\n this.manager.addEventListener(SDK.NetworkManager.MultitargetNetworkManager.Events.BlockedPatternsChanged, () => {\n void this.update();\n }, this);\n\n this.toolbar = new UI.Toolbar.Toolbar('', this.contentElement);\n this.enabledCheckbox = new UI.Toolbar.ToolbarCheckbox(\n i18nString(UIStrings.enableNetworkRequestBlocking), undefined, this.toggleEnabled.bind(this),\n 'network.enable-request-blocking');\n this.toolbar.appendToolbarItem(this.enabledCheckbox);\n this.toolbar.appendSeparator();\n this.toolbar.appendToolbarItem(\n UI.Toolbar.Toolbar.createActionButtonForId('network.add-network-request-blocking-pattern'));\n this.toolbar.appendToolbarItem(\n UI.Toolbar.Toolbar.createActionButtonForId('network.remove-all-network-request-blocking-patterns'));\n\n this.list = new UI.ListWidget.ListWidget(this);\n this.list.element.classList.add('blocked-urls');\n\n this.list.setEmptyPlaceholder(this.createEmptyPlaceholder());\n this.list.show(this.contentElement);\n\n this.editor = null;\n\n this.blockedCountForUrl = new Map();\n SDK.TargetManager.TargetManager.instance().addModelListener(\n SDK.NetworkManager.NetworkManager, SDK.NetworkManager.Events.RequestFinished, this.onRequestFinished, this,\n {scoped: true});\n\n this.updateThrottler = updateThrottler;\n\n void this.update();\n }\n\n static instance(opts?: {\n forceNew: boolean,\n updateThrottler: Common.Throttler.Throttler,\n }): BlockedURLsPane {\n if (!blockedURLsPaneInstance || opts?.forceNew) {\n blockedURLsPaneInstance = new BlockedURLsPane(opts?.updateThrottler || new Common.Throttler.Throttler(200));\n }\n return blockedURLsPaneInstance;\n }\n\n private createEmptyPlaceholder(): Element {\n const element = this.contentElement.createChild('div', 'no-blocked-urls');\n const addButton =\n UI.UIUtils.createTextButton(i18nString(UIStrings.addPattern), this.addPattern.bind(this), 'add-button', true);\n addButton.setAttribute(\n 'jslog',\n `${VisualLogging.action().track({click: true}).context('network.add-network-request-blocking-pattern')}`);\n UI.ARIAUtils.setLabel(addButton, i18nString(UIStrings.addNetworkRequestBlockingPattern));\n element.appendChild(\n i18n.i18n.getFormatLocalizedString(str_, UIStrings.networkRequestsAreNotBlockedS, {PH1: addButton}));\n return element;\n }\n\n static reset(): void {\n if (blockedURLsPaneInstance) {\n blockedURLsPaneInstance.reset();\n }\n }\n\n addPattern(): void {\n this.manager.setBlockingEnabled(true);\n this.list.addNewItem(0, {url: Platform.DevToolsPath.EmptyUrlString, enabled: true});\n }\n\n removeAllPatterns(): void {\n this.manager.setBlockedPatterns([]);\n }\n\n renderItem(pattern: SDK.NetworkManager.BlockedPattern, editable: boolean): Element {\n const count = this.blockedRequestsCount(pattern.url);\n const element = document.createElement('div');\n element.classList.add('blocked-url');\n const checkbox = (element.createChild('input', 'blocked-url-checkbox') as HTMLInputElement);\n checkbox.type = 'checkbox';\n checkbox.checked = pattern.enabled;\n checkbox.disabled = !editable;\n checkbox.setAttribute('jslog', `${VisualLogging.toggle().track({change: true})}`);\n element.createChild('div', 'blocked-url-label').textContent = pattern.url;\n element.createChild('div', 'blocked-url-count').textContent = i18nString(UIStrings.dBlocked, {PH1: count});\n if (editable) {\n element.addEventListener('click', event => this.togglePattern(pattern, event));\n checkbox.addEventListener('click', event => this.togglePattern(pattern, event));\n }\n return element;\n }\n\n private togglePattern(pattern: SDK.NetworkManager.BlockedPattern, event: Event): void {\n event.consume(true);\n const patterns = this.manager.blockedPatterns();\n patterns.splice(patterns.indexOf(pattern), 1, {enabled: !pattern.enabled, url: pattern.url});\n this.manager.setBlockedPatterns(patterns);\n }\n\n private toggleEnabled(): void {\n this.manager.setBlockingEnabled(!this.manager.blockingEnabled());\n void this.update();\n }\n\n removeItemRequested(pattern: SDK.NetworkManager.BlockedPattern, index: number): void {\n const patterns = this.manager.blockedPatterns();\n patterns.splice(index, 1);\n this.manager.setBlockedPatterns(patterns);\n UI.ARIAUtils.alert(UIStrings.itemDeleted);\n }\n\n beginEdit(pattern: SDK.NetworkManager.BlockedPattern): UI.ListWidget.Editor {\n this.editor = this.createEditor();\n this.editor.control('url').value = pattern.url;\n return this.editor;\n }\n\n commitEdit(\n item: SDK.NetworkManager.BlockedPattern, editor: UI.ListWidget.Editor,\n isNew: boolean): void {\n const url = editor.control('url').value as Platform.DevToolsPath.UrlString;\n const patterns = this.manager.blockedPatterns();\n if (isNew) {\n patterns.push({enabled: true, url: url});\n } else {\n patterns.splice(patterns.indexOf(item), 1, {enabled: true, url: url});\n }\n\n this.manager.setBlockedPatterns(patterns);\n }\n\n private createEditor(): UI.ListWidget.Editor {\n if (this.editor) {\n return this.editor;\n }\n\n const editor = new UI.ListWidget.Editor();\n const content = editor.contentElement();\n const titles = content.createChild('div', 'blocked-url-edit-row');\n titles.createChild('div').textContent = i18nString(UIStrings.textPatternToBlockMatching);\n const fields = content.createChild('div', 'blocked-url-edit-row');\n const validator = (_item: SDK.NetworkManager.BlockedPattern, _index: number, input: UI.ListWidget.EditorControl): {\n valid: boolean,\n errorMessage: Common.UIString.LocalizedString|undefined,\n } => {\n let valid = true;\n let errorMessage;\n if (!input.value) {\n errorMessage = i18nString(UIStrings.patternInputCannotBeEmpty);\n valid = false;\n } else if (this.manager.blockedPatterns().find(pattern => pattern.url === input.value)) {\n errorMessage = i18nString(UIStrings.patternAlreadyExists);\n valid = false;\n }\n return {valid, errorMessage};\n };\n const urlInput = editor.createInput('url', 'text', '', validator);\n fields.createChild('div', 'blocked-url-edit-value').appendChild(urlInput);\n return editor;\n }\n\n private update(): Promise {\n const enabled = this.manager.blockingEnabled();\n this.list.element.classList.toggle('blocking-disabled', !enabled && Boolean(this.manager.blockedPatterns().length));\n\n this.enabledCheckbox.setChecked(enabled);\n this.list.clear();\n for (const pattern of this.manager.blockedPatterns()) {\n this.list.appendItem(pattern, enabled);\n }\n return Promise.resolve();\n }\n\n private blockedRequestsCount(url: string): number {\n if (!url) {\n return 0;\n }\n\n let result = 0;\n for (const blockedUrl of this.blockedCountForUrl.keys()) {\n if (this.matches(url, blockedUrl)) {\n result += (this.blockedCountForUrl.get(blockedUrl) as number);\n }\n }\n return result;\n }\n\n private matches(pattern: string, url: string): boolean {\n let pos = 0;\n const parts = pattern.split('*');\n for (let index = 0; index < parts.length; index++) {\n const part = parts[index];\n if (!part.length) {\n continue;\n }\n pos = url.indexOf(part, pos);\n if (pos === -1) {\n return false;\n }\n pos += part.length;\n }\n return true;\n }\n\n reset(): void {\n this.blockedCountForUrl.clear();\n void this.updateThrottler.schedule(this.update.bind(this));\n }\n\n private onRequestFinished(event: Common.EventTarget.EventTargetEvent): void {\n const request = event.data;\n if (request.wasBlocked()) {\n const count = this.blockedCountForUrl.get(request.url()) || 0;\n this.blockedCountForUrl.set(request.url(), count + 1);\n void this.updateThrottler.schedule(this.update.bind(this));\n }\n }\n override wasShown(): void {\n UI.Context.Context.instance().setFlavor(BlockedURLsPane, this);\n super.wasShown();\n this.list.registerCSSFiles([blockedURLsPaneStyles]);\n this.registerCSSFiles([blockedURLsPaneStyles]);\n }\n\n override willHide(): void {\n super.willHide();\n UI.Context.Context.instance().setFlavor(BlockedURLsPane, null);\n }\n}\n\nexport class ActionDelegate implements UI.ActionRegistration.ActionDelegate {\n handleAction(context: UI.Context.Context, actionId: string): boolean {\n const blockedURLsPane = context.flavor(BlockedURLsPane);\n if (blockedURLsPane === null) {\n return false;\n }\n switch (actionId) {\n case 'network.add-network-request-blocking-pattern': {\n blockedURLsPane.addPattern();\n return true;\n }\n\n case 'network.remove-all-network-request-blocking-patterns': {\n blockedURLsPane.removeAllPatterns();\n return true;\n }\n }\n return false;\n }\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"BlockedURLsPane.js","sourceRoot":"","sources":["../../../../../../front_end/panels/network/BlockedURLsPane.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2015 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport type * as Common from '../../core/common/common.js';\nimport * as i18n from '../../core/i18n/i18n.js';\nimport * as Platform from '../../core/platform/platform.js';\nimport * as SDK from '../../core/sdk/sdk.js';\nimport * as Logs from '../../models/logs/logs.js';\nimport * as UI from '../../ui/legacy/legacy.js';\nimport * as VisualLogging from '../../ui/visual_logging/visual_logging.js';\n\nimport blockedURLsPaneStyles from './blockedURLsPane.css.js';\n\nconst UIStrings = {\n /**\n *@description Text to enable blocking of network requests\n */\n enableNetworkRequestBlocking: 'Enable network request blocking',\n /**\n *@description Tooltip text that appears when hovering over the plus button in the Blocked URLs Pane of the Network panel\n */\n addPattern: 'Add pattern',\n /**\n *@description Accessible label for the button to add request blocking patterns in the network request blocking tool\n */\n addNetworkRequestBlockingPattern: 'Add network request blocking pattern',\n /**\n *@description Button to add a pattern to block netwrok requests in the Network request blocking tool\n *@example {Add pattern} PH1\n */\n networkRequestsAreNotBlockedS: 'Network requests are not blocked. {PH1}',\n /**\n *@description Text in Blocked URLs Pane of the Network panel\n *@example {4} PH1\n */\n dBlocked: '{PH1} blocked',\n /**\n *@description Text in Blocked URLs Pane of the Network panel\n */\n textPatternToBlockMatching: 'Text pattern to block matching requests; use * for wildcard',\n /**\n *@description Error text for empty list widget input in Request Blocking tool\n */\n patternInputCannotBeEmpty: 'Pattern input cannot be empty.',\n /**\n *@description Error text for duplicate list widget input in Request Blocking tool\n */\n patternAlreadyExists: 'Pattern already exists.',\n /**\n *@description Message to be announced for a when list item is removed from list widget\n */\n itemDeleted: 'Item successfully deleted',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/network/BlockedURLsPane.ts', UIStrings);\nconst i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);\n\nexport class BlockedURLsPane extends UI.Widget.VBox implements\n UI.ListWidget.Delegate {\n private manager: SDK.NetworkManager.MultitargetNetworkManager;\n private readonly toolbar: UI.Toolbar.Toolbar;\n private readonly enabledCheckbox: UI.Toolbar.ToolbarCheckbox;\n private readonly list: UI.ListWidget.ListWidget;\n private editor: UI.ListWidget.Editor|null;\n private blockedCountForUrl: Map;\n\n constructor() {\n super(true);\n\n this.element.setAttribute('jslog', `${VisualLogging.panel().context('network.blocked-urls')}`);\n\n this.manager = SDK.NetworkManager.MultitargetNetworkManager.instance();\n this.manager.addEventListener(\n SDK.NetworkManager.MultitargetNetworkManager.Events.BlockedPatternsChanged, this.update, this);\n\n this.toolbar = new UI.Toolbar.Toolbar('', this.contentElement);\n this.enabledCheckbox = new UI.Toolbar.ToolbarCheckbox(\n i18nString(UIStrings.enableNetworkRequestBlocking), undefined, this.toggleEnabled.bind(this),\n 'network.enable-request-blocking');\n this.toolbar.appendToolbarItem(this.enabledCheckbox);\n this.toolbar.appendSeparator();\n this.toolbar.appendToolbarItem(\n UI.Toolbar.Toolbar.createActionButtonForId('network.add-network-request-blocking-pattern'));\n this.toolbar.appendToolbarItem(\n UI.Toolbar.Toolbar.createActionButtonForId('network.remove-all-network-request-blocking-patterns'));\n\n this.list = new UI.ListWidget.ListWidget(this);\n this.list.element.classList.add('blocked-urls');\n\n this.list.setEmptyPlaceholder(this.createEmptyPlaceholder());\n this.list.show(this.contentElement);\n\n this.editor = null;\n\n this.blockedCountForUrl = new Map();\n SDK.TargetManager.TargetManager.instance().addModelListener(\n SDK.NetworkManager.NetworkManager, SDK.NetworkManager.Events.RequestFinished, this.onRequestFinished, this,\n {scoped: true});\n\n this.update();\n Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.Reset, this.onNetworkLogReset, this);\n }\n\n private createEmptyPlaceholder(): Element {\n const element = this.contentElement.createChild('div', 'no-blocked-urls');\n const addButton =\n UI.UIUtils.createTextButton(i18nString(UIStrings.addPattern), this.addPattern.bind(this), 'add-button', true);\n addButton.setAttribute(\n 'jslog',\n `${VisualLogging.action().track({click: true}).context('network.add-network-request-blocking-pattern')}`);\n UI.ARIAUtils.setLabel(addButton, i18nString(UIStrings.addNetworkRequestBlockingPattern));\n element.appendChild(\n i18n.i18n.getFormatLocalizedString(str_, UIStrings.networkRequestsAreNotBlockedS, {PH1: addButton}));\n return element;\n }\n\n addPattern(): void {\n this.manager.setBlockingEnabled(true);\n this.list.addNewItem(0, {url: Platform.DevToolsPath.EmptyUrlString, enabled: true});\n }\n\n removeAllPatterns(): void {\n this.manager.setBlockedPatterns([]);\n }\n\n renderItem(pattern: SDK.NetworkManager.BlockedPattern, editable: boolean): Element {\n const count = this.blockedRequestsCount(pattern.url);\n const element = document.createElement('div');\n element.classList.add('blocked-url');\n const checkbox = (element.createChild('input', 'blocked-url-checkbox') as HTMLInputElement);\n checkbox.type = 'checkbox';\n checkbox.checked = pattern.enabled;\n checkbox.disabled = !editable;\n checkbox.setAttribute('jslog', `${VisualLogging.toggle().track({change: true})}`);\n element.createChild('div', 'blocked-url-label').textContent = pattern.url;\n element.createChild('div', 'blocked-url-count').textContent = i18nString(UIStrings.dBlocked, {PH1: count});\n if (editable) {\n element.addEventListener('click', event => this.togglePattern(pattern, event));\n checkbox.addEventListener('click', event => this.togglePattern(pattern, event));\n }\n return element;\n }\n\n private togglePattern(pattern: SDK.NetworkManager.BlockedPattern, event: Event): void {\n event.consume(true);\n const patterns = this.manager.blockedPatterns();\n patterns.splice(patterns.indexOf(pattern), 1, {enabled: !pattern.enabled, url: pattern.url});\n this.manager.setBlockedPatterns(patterns);\n }\n\n private toggleEnabled(): void {\n this.manager.setBlockingEnabled(!this.manager.blockingEnabled());\n this.update();\n }\n\n removeItemRequested(pattern: SDK.NetworkManager.BlockedPattern, index: number): void {\n const patterns = this.manager.blockedPatterns();\n patterns.splice(index, 1);\n this.manager.setBlockedPatterns(patterns);\n UI.ARIAUtils.alert(UIStrings.itemDeleted);\n }\n\n beginEdit(pattern: SDK.NetworkManager.BlockedPattern): UI.ListWidget.Editor {\n this.editor = this.createEditor();\n this.editor.control('url').value = pattern.url;\n return this.editor;\n }\n\n commitEdit(\n item: SDK.NetworkManager.BlockedPattern, editor: UI.ListWidget.Editor,\n isNew: boolean): void {\n const url = editor.control('url').value as Platform.DevToolsPath.UrlString;\n const patterns = this.manager.blockedPatterns();\n if (isNew) {\n patterns.push({enabled: true, url: url});\n } else {\n patterns.splice(patterns.indexOf(item), 1, {enabled: true, url: url});\n }\n\n this.manager.setBlockedPatterns(patterns);\n }\n\n private createEditor(): UI.ListWidget.Editor {\n if (this.editor) {\n return this.editor;\n }\n\n const editor = new UI.ListWidget.Editor();\n const content = editor.contentElement();\n const titles = content.createChild('div', 'blocked-url-edit-row');\n titles.createChild('div').textContent = i18nString(UIStrings.textPatternToBlockMatching);\n const fields = content.createChild('div', 'blocked-url-edit-row');\n const validator = (_item: SDK.NetworkManager.BlockedPattern, _index: number, input: UI.ListWidget.EditorControl): {\n valid: boolean,\n errorMessage: Common.UIString.LocalizedString|undefined,\n } => {\n let valid = true;\n let errorMessage;\n if (!input.value) {\n errorMessage = i18nString(UIStrings.patternInputCannotBeEmpty);\n valid = false;\n } else if (this.manager.blockedPatterns().find(pattern => pattern.url === input.value)) {\n errorMessage = i18nString(UIStrings.patternAlreadyExists);\n valid = false;\n }\n return {valid, errorMessage};\n };\n const urlInput = editor.createInput('url', 'text', '', validator);\n fields.createChild('div', 'blocked-url-edit-value').appendChild(urlInput);\n return editor;\n }\n\n update(): void {\n const enabled = this.manager.blockingEnabled();\n this.list.element.classList.toggle('blocking-disabled', !enabled && Boolean(this.manager.blockedPatterns().length));\n\n this.enabledCheckbox.setChecked(enabled);\n this.list.clear();\n for (const pattern of this.manager.blockedPatterns()) {\n this.list.appendItem(pattern, enabled);\n }\n }\n\n private blockedRequestsCount(url: string): number {\n if (!url) {\n return 0;\n }\n\n let result = 0;\n for (const blockedUrl of this.blockedCountForUrl.keys()) {\n if (this.matches(url, blockedUrl)) {\n result += (this.blockedCountForUrl.get(blockedUrl) as number);\n }\n }\n return result;\n }\n\n private matches(pattern: string, url: string): boolean {\n let pos = 0;\n const parts = pattern.split('*');\n for (let index = 0; index < parts.length; index++) {\n const part = parts[index];\n if (!part.length) {\n continue;\n }\n pos = url.indexOf(part, pos);\n if (pos === -1) {\n return false;\n }\n pos += part.length;\n }\n return true;\n }\n\n private onNetworkLogReset(_event: Common.EventTarget.EventTargetEvent): void {\n this.blockedCountForUrl.clear();\n this.update();\n }\n\n private onRequestFinished(event: Common.EventTarget.EventTargetEvent): void {\n const request = event.data;\n if (request.wasBlocked()) {\n const count = this.blockedCountForUrl.get(request.url()) || 0;\n this.blockedCountForUrl.set(request.url(), count + 1);\n this.update();\n }\n }\n override wasShown(): void {\n UI.Context.Context.instance().setFlavor(BlockedURLsPane, this);\n super.wasShown();\n this.list.registerCSSFiles([blockedURLsPaneStyles]);\n this.registerCSSFiles([blockedURLsPaneStyles]);\n }\n\n override willHide(): void {\n super.willHide();\n UI.Context.Context.instance().setFlavor(BlockedURLsPane, null);\n }\n}\n\nexport class ActionDelegate implements UI.ActionRegistration.ActionDelegate {\n handleAction(context: UI.Context.Context, actionId: string): boolean {\n const blockedURLsPane = context.flavor(BlockedURLsPane);\n if (blockedURLsPane === null) {\n return false;\n }\n switch (actionId) {\n case 'network.add-network-request-blocking-pattern': {\n blockedURLsPane.addPattern();\n return true;\n }\n\n case 'network.remove-all-network-request-blocking-patterns': {\n blockedURLsPane.removeAllPatterns();\n return true;\n }\n }\n return false;\n }\n}\n"]}
\ No newline at end of file
diff --git a/public/panels/network/NetworkItemView.js b/public/panels/network/NetworkItemView.js
index c97f192cc..3bf0b2cd6 100644
--- a/public/panels/network/NetworkItemView.js
+++ b/public/panels/network/NetworkItemView.js
@@ -161,7 +161,7 @@ export class NetworkItemView extends UI.TabbedPane.TabbedPane {
const frameView = new ResourceWebSocketFrameView(request);
this.appendTab(NetworkForward.UIRequestLocation.UIRequestTabs.WsFrames, i18nString(UIStrings.messages), frameView, i18nString(UIStrings.websocketMessages));
}
- else if (request.mimeType === SDK.NetworkRequest.MIME_TYPE.EVENTSTREAM) {
+ else if (request.mimeType === "text/event-stream" /* SDK.NetworkRequest.MimeType.EVENTSTREAM */) {
this.appendTab(NetworkForward.UIRequestLocation.UIRequestTabs.EventSource, i18nString(UIStrings.eventstream), new EventSourceMessagesView(request));
}
else {
diff --git a/public/panels/network/NetworkItemView.js.map b/public/panels/network/NetworkItemView.js.map
index 72df832ee..9254049ba 100644
--- a/public/panels/network/NetworkItemView.js.map
+++ b/public/panels/network/NetworkItemView.js.map
@@ -1 +1 @@
-{"version":3,"file":"NetworkItemView.js","sourceRoot":"","sources":["../../../../../../front_end/panels/network/NetworkItemView.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AACtD,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,KAAK,cAAc,MAAM,yCAAyC,CAAC;AAC1E,OAAO,KAAK,UAAU,MAAM,gDAAgD,CAAC;AAC7E,OAAO,KAAK,aAAa,MAAM,sDAAsD,CAAC;AAEtF,OAAO,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEhD,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,0BAA0B,EAAC,MAAM,iCAAiC,CAAC;AAE3E,MAAM,SAAS,GAAG;IAChB;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,QAAQ,EAAE,UAAU;IACpB;;OAEG;IACH,iBAAiB,EAAE,oBAAoB;IACvC;;OAEG;IACH,WAAW,EAAE,aAAa;IAC1B;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,eAAe,EAAE,kBAAkB;IACnC;;OAEG;IACH,mBAAmB,EAAE,sBAAsB;IAC3C;;;OAGG;IACH,QAAQ,EAAE,UAAU;IACpB;;OAEG;IACH,eAAe,EAAE,mBAAmB;IACpC;;OAEG;IACH,SAAS,EAAE,WAAW;IACtB;;;;OAIG;IACH,yBAAyB,EAAE,8BAA8B;IACzD;;;OAGG;IACH,MAAM,EAAE,QAAQ;IAChB;;OAEG;IACH,0BAA0B,EAAE,+BAA+B;IAC3D;;OAEG;IACH,WAAW,EAAE,sBAAsB;IACnC;;OAEG;IACH,0BAA0B,EAAE,uCAAuC;IACnE;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,yBAAyB,EAAE,8BAA8B;IACzD;;OAEG;IACH,yBAAyB,EAAE,iEAAiE;IAC5F;;OAEG;IACH,oBAAoB,EAAE,yCAAyC;CAChE,CAAC;AACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,EAAE,SAAS,CAAC,CAAC;AACzF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACtE,MAAM,OAAO,eAAgB,SAAQ,EAAE,CAAC,UAAU,CAAC,UAAU;IACnD,eAAe,CAAoC;IAC1C,sBAAsB,CAA0E;IAChG,oBAAoB,CAA0D;IACvF,WAAW,CAA0B;IAC5B,YAAY,CAAgC;IACrD,WAAW,CAA0B;IACrC,UAAU,CAAkD;IAEpE,YACI,OAA0C,EAAE,UAAiC,EAC7E,UAA2D;QAC7D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,gBAAgB,CAAC;QACnF,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,aAAa,CAC3E,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAExF,IAAI,CAAC,oBAAoB,GAAG,IAAI,iBAAiB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACjG,IAAI,CAAC,SAAS,CACV,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EACzC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,EACpF,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnC,IAAI,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,EAAE;YAC/C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI;gBACL,EAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,gCAAgC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC;YAC3G,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YAC7D,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;SACxF;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,KAAK,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAEpC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAEhF,IAAI,OAAO,CAAC,YAAY,EAAE,KAAK,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE;YAC1E,MAAM,SAAS,GAAG,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,CACV,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,EAClG,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;SAC9C;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,EAAE;YACxE,IAAI,CAAC,SAAS,CACV,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,EAC7F,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;SAC3C;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC,SAAS,CACV,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,WAAW,EAClG,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;YAC3C,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACxD,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE;gBACvF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,CAAC,IAAI,GAAG,EAAC,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC;gBACzG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC5E,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aAC/E;YACD,IAAI,CAAC,SAAS,CACV,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,YAAY,EAC1G,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;YAE3C,IAAI,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE;gBAC7C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;gBACxD,IAAI,CAAC,IAAI;oBACL,EAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,gCAAgC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC;gBAC3G,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;aAChF;SACF;QAED,IAAI,CAAC,SAAS,CACV,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EACzF,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAExF,IAAI,CAAC,SAAS,CACV,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EACnF,IAAI,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAElG,IAAI,OAAO,CAAC,gBAAgB,EAAE,EAAE;YAC9B,IAAI,CAAC,SAAS,CACV,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,EAC7F,aAAa,CAAC,aAAa,CAAC,aAAa,CACrC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,iBAAiB,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,EACjG,UAAU,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC;SACvD;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC;QAClE,2DAA2D;QAC3D,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAEQ,QAAQ;QACf,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CACjC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QACvF,IAAI,CAAC,eAAe,CAAC,gBAAgB,CACjC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,sBAAsB,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;QAC1F,IAAI,CAAC,eAAe,CAAC,gBAAgB,CACjC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;QACzG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,uCAAuC,EAAE,CAAC;QAE/C,mFAAmF;QACnF,4FAA4F;QAC5F,8EAA8E;QAC9E,yCAAyC;QACzC,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAC7B;IACH,CAAC;IAEQ,QAAQ;QACf,IAAI,CAAC,eAAe,CAAC,mBAAmB,CACpC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QACvF,IAAI,CAAC,eAAe,CAAC,mBAAmB,CACpC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,sBAAsB,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;QAC1F,IAAI,CAAC,eAAe,CAAC,mBAAmB,CACpC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;IAC3G,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACtC,CAAC;IAEO,uBAAuB;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QACnH,OAAO,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sDAAsD,CAAC,CAAC;QAC5G,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAChE,IAAI,CAAC,SAAS,CACV,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EACvG,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,CAAC;SACtD;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;YAC1B,OAAO;SACR;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,eAAe,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,EAAE;YACxF,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAChE,IAAI,CAAC,SAAS,CACV,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EACvG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC;YACvD,iBAAiB,CAAC,KAAK,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;SAC7E;IACH,CAAC;IAEO,uCAAuC;QAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE,CAAC;QAC7E,IAAI,gBAAgB;YAChB,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;YAC9F,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,GAAG,EAAC,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC;YACzG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SACnF;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAa;QACrC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC1B,+EAA+E;YAC/E,2CAA2C;YAC3C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBACrB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;iBAC3B;YACH,CAAC,EAAE,CAAC,CAAC,CAAC;SACP;IACH,CAAC;IAEO,WAAW,CAAC,KAAmE;QACrF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE;YAC7B,OAAO;SACR;QACD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAuD,CAAC,CAAC;IACtG,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAgD;QACvE,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChF,MAAM,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,YAAY,CAAC,OAAyD,EAAE,MAAwB;QAC9F,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QACxF,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,uBAAuB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;CACF","sourcesContent":["/*\n * Copyright (C) 2010 Google Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following disclaimer\n * in the documentation and/or other materials provided with the\n * distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport * as Common from '../../core/common/common.js';\nimport * as i18n from '../../core/i18n/i18n.js';\nimport * as SDK from '../../core/sdk/sdk.js';\nimport * as NetworkForward from '../../panels/network/forward/forward.js';\nimport * as IconButton from '../../ui/components/icon_button/icon_button.js';\nimport * as LegacyWrapper from '../../ui/components/legacy_wrapper/legacy_wrapper.js';\nimport type * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';\nimport * as UI from '../../ui/legacy/legacy.js';\n\nimport * as NetworkComponents from './components/components.js';\nimport {EventSourceMessagesView} from './EventSourceMessagesView.js';\nimport {type NetworkTimeCalculator} from './NetworkTimeCalculator.js';\nimport {RequestCookiesView} from './RequestCookiesView.js';\nimport {RequestInitiatorView} from './RequestInitiatorView.js';\nimport {RequestPayloadView} from './RequestPayloadView.js';\nimport {RequestPreviewView} from './RequestPreviewView.js';\nimport {RequestResponseView} from './RequestResponseView.js';\nimport {RequestTimingView} from './RequestTimingView.js';\nimport {ResourceWebSocketFrameView} from './ResourceWebSocketFrameView.js';\n\nconst UIStrings = {\n /**\n *@description Text for network request headers\n */\n headers: 'Headers',\n /**\n *@description Text in Network Item View of the Network panel\n */\n payload: 'Payload',\n /**\n *@description Text in Network Item View of the Network panel\n */\n messages: 'Messages',\n /**\n *@description Text in Network Item View of the Network panel\n */\n websocketMessages: 'WebSocket messages',\n /**\n *@description Text in Network Item View of the Network panel\n */\n eventstream: 'EventStream',\n /**\n *@description Text for previewing items\n */\n preview: 'Preview',\n /**\n *@description Text in Network Item View of the Network panel\n */\n responsePreview: 'Response preview',\n /**\n *@description Icon title in Network Item View of the Network panel\n */\n signedexchangeError: 'SignedExchange error',\n /**\n *@description Title of a tab in the Network panel. A Network response refers to the act of acknowledging a\n network request. Should not be confused with answer.\n */\n response: 'Response',\n /**\n *@description Text in Network Item View of the Network panel\n */\n rawResponseData: 'Raw response data',\n /**\n *@description Text for the initiator of something\n */\n initiator: 'Initiator',\n /**\n * @description Tooltip for initiator view in Network panel. An initiator is a piece of code/entity\n * in the code that initiated/started the network request, i.e. caused the network request. The 'call\n * stack' is the location in the code where the initiation happened.\n */\n requestInitiatorCallStack: 'Request initiator call stack',\n /**\n *@description Title of a tab in Network Item View of the Network panel.\n *The tab displays the duration breakdown of a network request.\n */\n timing: 'Timing',\n /**\n *@description Text in Network Item View of the Network panel\n */\n requestAndResponseTimeline: 'Request and response timeline',\n /**\n *@description Label of a tab in the network panel. Previously known as 'Trust Tokens'.\n */\n trustTokens: 'Private state tokens',\n /**\n *@description Title of the Private State Token tab in the Network panel. Previously known as 'Trust Token tab'.\n */\n trustTokenOperationDetails: 'Private State Token operation details',\n /**\n *@description Text for web cookies\n */\n cookies: 'Cookies',\n /**\n *@description Text in Network Item View of the Network panel\n */\n requestAndResponseCookies: 'Request and response cookies',\n /**\n *@description Tooltip text explaining that DevTools has overridden the response's headers\n */\n containsOverriddenHeaders: 'This response contains headers which are overridden by DevTools',\n /**\n *@description Tooltip text explaining that DevTools has overridden the response\n */\n responseIsOverridden: 'This response is overridden by DevTools',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/network/NetworkItemView.ts', UIStrings);\nconst i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);\nexport class NetworkItemView extends UI.TabbedPane.TabbedPane {\n private requestInternal: SDK.NetworkRequest.NetworkRequest;\n private readonly resourceViewTabSetting: Common.Settings.Setting;\n private readonly headersViewComponent: NetworkComponents.RequestHeadersView.RequestHeadersView;\n private payloadView: RequestPayloadView|null;\n private readonly responseView: RequestResponseView|undefined;\n private cookiesView: RequestCookiesView|null;\n private initialTab?: NetworkForward.UIRequestLocation.UIRequestTabs;\n\n constructor(\n request: SDK.NetworkRequest.NetworkRequest, calculator: NetworkTimeCalculator,\n initialTab?: NetworkForward.UIRequestLocation.UIRequestTabs) {\n super();\n this.requestInternal = request;\n this.element.classList.add('network-item-view');\n\n const headersTab = NetworkForward.UIRequestLocation.UIRequestTabs.HeadersComponent;\n this.resourceViewTabSetting = Common.Settings.Settings.instance().createSetting(\n 'resourceViewTab', NetworkForward.UIRequestLocation.UIRequestTabs.HeadersComponent);\n\n this.headersViewComponent = new NetworkComponents.RequestHeadersView.RequestHeadersView(request);\n this.appendTab(\n headersTab, i18nString(UIStrings.headers),\n LegacyWrapper.LegacyWrapper.legacyWrapper(UI.Widget.VBox, this.headersViewComponent),\n i18nString(UIStrings.headers));\n\n if (this.requestInternal.hasOverriddenHeaders()) {\n const icon = new IconButton.Icon.Icon();\n icon.data =\n {iconName: 'small-status-dot', color: 'var(--sys-color-purple-bright)', width: '16px', height: '16px'};\n icon.title = i18nString(UIStrings.containsOverriddenHeaders);\n this.setTabIcon(NetworkForward.UIRequestLocation.UIRequestTabs.HeadersComponent, icon);\n }\n\n this.payloadView = null;\n void this.maybeAppendPayloadPanel();\n\n this.addEventListener(UI.TabbedPane.Events.TabSelected, this.tabSelected, this);\n\n if (request.resourceType() === Common.ResourceType.resourceTypes.WebSocket) {\n const frameView = new ResourceWebSocketFrameView(request);\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.WsFrames, i18nString(UIStrings.messages), frameView,\n i18nString(UIStrings.websocketMessages));\n } else if (request.mimeType === SDK.NetworkRequest.MIME_TYPE.EVENTSTREAM) {\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.EventSource, i18nString(UIStrings.eventstream),\n new EventSourceMessagesView(request));\n } else {\n this.responseView = new RequestResponseView(request);\n const previewView = new RequestPreviewView(request);\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Preview, i18nString(UIStrings.preview), previewView,\n i18nString(UIStrings.responsePreview));\n const signedExchangeInfo = request.signedExchangeInfo();\n if (signedExchangeInfo && signedExchangeInfo.errors && signedExchangeInfo.errors.length) {\n const icon = new IconButton.Icon.Icon();\n icon.data = {iconName: 'cross-circle-filled', color: 'var(--icon-error)', width: '14px', height: '14px'};\n UI.Tooltip.Tooltip.install(icon, i18nString(UIStrings.signedexchangeError));\n this.setTabIcon(NetworkForward.UIRequestLocation.UIRequestTabs.Preview, icon);\n }\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Response, i18nString(UIStrings.response), this.responseView,\n i18nString(UIStrings.rawResponseData));\n\n if (this.requestInternal.hasOverriddenContent) {\n const icon = new IconButton.Icon.Icon();\n icon.title = i18nString(UIStrings.responseIsOverridden);\n icon.data =\n {iconName: 'small-status-dot', color: 'var(--sys-color-purple-bright)', width: '16px', height: '16px'};\n this.setTabIcon(NetworkForward.UIRequestLocation.UIRequestTabs.Response, icon);\n }\n }\n\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Initiator, i18nString(UIStrings.initiator),\n new RequestInitiatorView(request), i18nString(UIStrings.requestInitiatorCallStack));\n\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Timing, i18nString(UIStrings.timing),\n new RequestTimingView(request, calculator), i18nString(UIStrings.requestAndResponseTimeline));\n\n if (request.trustTokenParams()) {\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.TrustTokens, i18nString(UIStrings.trustTokens),\n LegacyWrapper.LegacyWrapper.legacyWrapper(\n UI.Widget.VBox, new NetworkComponents.RequestTrustTokensView.RequestTrustTokensView(request)),\n i18nString(UIStrings.trustTokenOperationDetails));\n }\n\n this.cookiesView = null;\n\n this.initialTab = initialTab || this.resourceViewTabSetting.get();\n // Selecting tabs should not be handled by the super class.\n this.setAutoSelectFirstItemOnShow(false);\n }\n\n override wasShown(): void {\n super.wasShown();\n this.requestInternal.addEventListener(\n SDK.NetworkRequest.Events.RequestHeadersChanged, this.requestHeadersChanged, this);\n this.requestInternal.addEventListener(\n SDK.NetworkRequest.Events.ResponseHeadersChanged, this.maybeAppendCookiesPanel, this);\n this.requestInternal.addEventListener(\n SDK.NetworkRequest.Events.TrustTokenResultAdded, this.maybeShowErrorIconInTrustTokenTabHeader, this);\n this.maybeAppendCookiesPanel();\n this.maybeShowErrorIconInTrustTokenTabHeader();\n\n // Only select the initial tab the first time the view is shown after construction.\n // When the view is re-shown (without re-constructing) users or revealers might have changed\n // the selected tab in the mean time. Show the previously selected tab in that\n // case instead, by simply doing nohting.\n if (this.initialTab) {\n this.selectTabInternal(this.initialTab);\n this.initialTab = undefined;\n }\n }\n\n override willHide(): void {\n this.requestInternal.removeEventListener(\n SDK.NetworkRequest.Events.RequestHeadersChanged, this.requestHeadersChanged, this);\n this.requestInternal.removeEventListener(\n SDK.NetworkRequest.Events.ResponseHeadersChanged, this.maybeAppendCookiesPanel, this);\n this.requestInternal.removeEventListener(\n SDK.NetworkRequest.Events.TrustTokenResultAdded, this.maybeShowErrorIconInTrustTokenTabHeader, this);\n }\n\n private async requestHeadersChanged(): Promise {\n this.maybeAppendCookiesPanel();\n void this.maybeAppendPayloadPanel();\n }\n\n private maybeAppendCookiesPanel(): void {\n const cookiesPresent = this.requestInternal.hasRequestCookies() || this.requestInternal.responseCookies.length > 0;\n console.assert(cookiesPresent || !this.cookiesView, 'Cookies were introduced in headers and then removed!');\n if (cookiesPresent && !this.cookiesView) {\n this.cookiesView = new RequestCookiesView(this.requestInternal);\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Cookies, i18nString(UIStrings.cookies), this.cookiesView,\n i18nString(UIStrings.requestAndResponseCookies));\n }\n }\n\n private async maybeAppendPayloadPanel(): Promise {\n if (this.hasTab('payload')) {\n return;\n }\n if (this.requestInternal.queryParameters || await this.requestInternal.requestFormData()) {\n this.payloadView = new RequestPayloadView(this.requestInternal);\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Payload, i18nString(UIStrings.payload), this.payloadView,\n i18nString(UIStrings.payload), /* userGesture=*/ void 0,\n /* isCloseable=*/ void 0, /* isPreviewFeature=*/ void 0, /* index=*/ 1);\n }\n }\n\n private maybeShowErrorIconInTrustTokenTabHeader(): void {\n const trustTokenResult = this.requestInternal.trustTokenOperationDoneEvent();\n if (trustTokenResult &&\n !NetworkComponents.RequestTrustTokensView.statusConsideredSuccess(trustTokenResult.status)) {\n const icon = new IconButton.Icon.Icon();\n icon.data = {iconName: 'cross-circle-filled', color: 'var(--icon-error)', width: '14px', height: '14px'};\n this.setTabIcon(NetworkForward.UIRequestLocation.UIRequestTabs.TrustTokens, icon);\n }\n }\n\n private selectTabInternal(tabId: string): void {\n if (!this.selectTab(tabId)) {\n // maybeAppendPayloadPanel might cause payload tab to appear asynchronously, so\n // it makes sense to retry on the next tick\n window.setTimeout(() => {\n if (!this.selectTab(tabId)) {\n this.selectTab('headers');\n }\n }, 0);\n }\n }\n\n private tabSelected(event: Common.EventTarget.EventTargetEvent): void {\n if (!event.data.isUserGesture) {\n return;\n }\n this.resourceViewTabSetting.set(event.data.tabId as NetworkForward.UIRequestLocation.UIRequestTabs);\n }\n\n request(): SDK.NetworkRequest.NetworkRequest {\n return this.requestInternal;\n }\n\n async revealResponseBody(position: SourceFrame.SourceFrame.RevealPosition): Promise {\n this.selectTabInternal(NetworkForward.UIRequestLocation.UIRequestTabs.Response);\n await this.responseView?.revealPosition(position);\n }\n\n revealHeader(section: NetworkForward.UIRequestLocation.UIHeaderSection, header: string|undefined): void {\n this.selectTabInternal(NetworkForward.UIRequestLocation.UIRequestTabs.HeadersComponent);\n this.headersViewComponent.revealHeader(section, header);\n }\n\n getHeadersViewComponent(): NetworkComponents.RequestHeadersView.RequestHeadersView {\n return this.headersViewComponent;\n }\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"NetworkItemView.js","sourceRoot":"","sources":["../../../../../../front_end/panels/network/NetworkItemView.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2010 Google Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following disclaimer\n * in the documentation and/or other materials provided with the\n * distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport * as Common from '../../core/common/common.js';\nimport * as i18n from '../../core/i18n/i18n.js';\nimport * as SDK from '../../core/sdk/sdk.js';\nimport * as NetworkForward from '../../panels/network/forward/forward.js';\nimport * as IconButton from '../../ui/components/icon_button/icon_button.js';\nimport * as LegacyWrapper from '../../ui/components/legacy_wrapper/legacy_wrapper.js';\nimport type * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';\nimport * as UI from '../../ui/legacy/legacy.js';\n\nimport * as NetworkComponents from './components/components.js';\nimport {EventSourceMessagesView} from './EventSourceMessagesView.js';\nimport {type NetworkTimeCalculator} from './NetworkTimeCalculator.js';\nimport {RequestCookiesView} from './RequestCookiesView.js';\nimport {RequestInitiatorView} from './RequestInitiatorView.js';\nimport {RequestPayloadView} from './RequestPayloadView.js';\nimport {RequestPreviewView} from './RequestPreviewView.js';\nimport {RequestResponseView} from './RequestResponseView.js';\nimport {RequestTimingView} from './RequestTimingView.js';\nimport {ResourceWebSocketFrameView} from './ResourceWebSocketFrameView.js';\n\nconst UIStrings = {\n /**\n *@description Text for network request headers\n */\n headers: 'Headers',\n /**\n *@description Text in Network Item View of the Network panel\n */\n payload: 'Payload',\n /**\n *@description Text in Network Item View of the Network panel\n */\n messages: 'Messages',\n /**\n *@description Text in Network Item View of the Network panel\n */\n websocketMessages: 'WebSocket messages',\n /**\n *@description Text in Network Item View of the Network panel\n */\n eventstream: 'EventStream',\n /**\n *@description Text for previewing items\n */\n preview: 'Preview',\n /**\n *@description Text in Network Item View of the Network panel\n */\n responsePreview: 'Response preview',\n /**\n *@description Icon title in Network Item View of the Network panel\n */\n signedexchangeError: 'SignedExchange error',\n /**\n *@description Title of a tab in the Network panel. A Network response refers to the act of acknowledging a\n network request. Should not be confused with answer.\n */\n response: 'Response',\n /**\n *@description Text in Network Item View of the Network panel\n */\n rawResponseData: 'Raw response data',\n /**\n *@description Text for the initiator of something\n */\n initiator: 'Initiator',\n /**\n * @description Tooltip for initiator view in Network panel. An initiator is a piece of code/entity\n * in the code that initiated/started the network request, i.e. caused the network request. The 'call\n * stack' is the location in the code where the initiation happened.\n */\n requestInitiatorCallStack: 'Request initiator call stack',\n /**\n *@description Title of a tab in Network Item View of the Network panel.\n *The tab displays the duration breakdown of a network request.\n */\n timing: 'Timing',\n /**\n *@description Text in Network Item View of the Network panel\n */\n requestAndResponseTimeline: 'Request and response timeline',\n /**\n *@description Label of a tab in the network panel. Previously known as 'Trust Tokens'.\n */\n trustTokens: 'Private state tokens',\n /**\n *@description Title of the Private State Token tab in the Network panel. Previously known as 'Trust Token tab'.\n */\n trustTokenOperationDetails: 'Private State Token operation details',\n /**\n *@description Text for web cookies\n */\n cookies: 'Cookies',\n /**\n *@description Text in Network Item View of the Network panel\n */\n requestAndResponseCookies: 'Request and response cookies',\n /**\n *@description Tooltip text explaining that DevTools has overridden the response's headers\n */\n containsOverriddenHeaders: 'This response contains headers which are overridden by DevTools',\n /**\n *@description Tooltip text explaining that DevTools has overridden the response\n */\n responseIsOverridden: 'This response is overridden by DevTools',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/network/NetworkItemView.ts', UIStrings);\nconst i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);\nexport class NetworkItemView extends UI.TabbedPane.TabbedPane {\n private requestInternal: SDK.NetworkRequest.NetworkRequest;\n private readonly resourceViewTabSetting: Common.Settings.Setting;\n private readonly headersViewComponent: NetworkComponents.RequestHeadersView.RequestHeadersView;\n private payloadView: RequestPayloadView|null;\n private readonly responseView: RequestResponseView|undefined;\n private cookiesView: RequestCookiesView|null;\n private initialTab?: NetworkForward.UIRequestLocation.UIRequestTabs;\n\n constructor(\n request: SDK.NetworkRequest.NetworkRequest, calculator: NetworkTimeCalculator,\n initialTab?: NetworkForward.UIRequestLocation.UIRequestTabs) {\n super();\n this.requestInternal = request;\n this.element.classList.add('network-item-view');\n\n const headersTab = NetworkForward.UIRequestLocation.UIRequestTabs.HeadersComponent;\n this.resourceViewTabSetting = Common.Settings.Settings.instance().createSetting(\n 'resourceViewTab', NetworkForward.UIRequestLocation.UIRequestTabs.HeadersComponent);\n\n this.headersViewComponent = new NetworkComponents.RequestHeadersView.RequestHeadersView(request);\n this.appendTab(\n headersTab, i18nString(UIStrings.headers),\n LegacyWrapper.LegacyWrapper.legacyWrapper(UI.Widget.VBox, this.headersViewComponent),\n i18nString(UIStrings.headers));\n\n if (this.requestInternal.hasOverriddenHeaders()) {\n const icon = new IconButton.Icon.Icon();\n icon.data =\n {iconName: 'small-status-dot', color: 'var(--sys-color-purple-bright)', width: '16px', height: '16px'};\n icon.title = i18nString(UIStrings.containsOverriddenHeaders);\n this.setTabIcon(NetworkForward.UIRequestLocation.UIRequestTabs.HeadersComponent, icon);\n }\n\n this.payloadView = null;\n void this.maybeAppendPayloadPanel();\n\n this.addEventListener(UI.TabbedPane.Events.TabSelected, this.tabSelected, this);\n\n if (request.resourceType() === Common.ResourceType.resourceTypes.WebSocket) {\n const frameView = new ResourceWebSocketFrameView(request);\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.WsFrames, i18nString(UIStrings.messages), frameView,\n i18nString(UIStrings.websocketMessages));\n } else if (request.mimeType === SDK.NetworkRequest.MimeType.EVENTSTREAM) {\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.EventSource, i18nString(UIStrings.eventstream),\n new EventSourceMessagesView(request));\n } else {\n this.responseView = new RequestResponseView(request);\n const previewView = new RequestPreviewView(request);\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Preview, i18nString(UIStrings.preview), previewView,\n i18nString(UIStrings.responsePreview));\n const signedExchangeInfo = request.signedExchangeInfo();\n if (signedExchangeInfo && signedExchangeInfo.errors && signedExchangeInfo.errors.length) {\n const icon = new IconButton.Icon.Icon();\n icon.data = {iconName: 'cross-circle-filled', color: 'var(--icon-error)', width: '14px', height: '14px'};\n UI.Tooltip.Tooltip.install(icon, i18nString(UIStrings.signedexchangeError));\n this.setTabIcon(NetworkForward.UIRequestLocation.UIRequestTabs.Preview, icon);\n }\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Response, i18nString(UIStrings.response), this.responseView,\n i18nString(UIStrings.rawResponseData));\n\n if (this.requestInternal.hasOverriddenContent) {\n const icon = new IconButton.Icon.Icon();\n icon.title = i18nString(UIStrings.responseIsOverridden);\n icon.data =\n {iconName: 'small-status-dot', color: 'var(--sys-color-purple-bright)', width: '16px', height: '16px'};\n this.setTabIcon(NetworkForward.UIRequestLocation.UIRequestTabs.Response, icon);\n }\n }\n\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Initiator, i18nString(UIStrings.initiator),\n new RequestInitiatorView(request), i18nString(UIStrings.requestInitiatorCallStack));\n\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Timing, i18nString(UIStrings.timing),\n new RequestTimingView(request, calculator), i18nString(UIStrings.requestAndResponseTimeline));\n\n if (request.trustTokenParams()) {\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.TrustTokens, i18nString(UIStrings.trustTokens),\n LegacyWrapper.LegacyWrapper.legacyWrapper(\n UI.Widget.VBox, new NetworkComponents.RequestTrustTokensView.RequestTrustTokensView(request)),\n i18nString(UIStrings.trustTokenOperationDetails));\n }\n\n this.cookiesView = null;\n\n this.initialTab = initialTab || this.resourceViewTabSetting.get();\n // Selecting tabs should not be handled by the super class.\n this.setAutoSelectFirstItemOnShow(false);\n }\n\n override wasShown(): void {\n super.wasShown();\n this.requestInternal.addEventListener(\n SDK.NetworkRequest.Events.RequestHeadersChanged, this.requestHeadersChanged, this);\n this.requestInternal.addEventListener(\n SDK.NetworkRequest.Events.ResponseHeadersChanged, this.maybeAppendCookiesPanel, this);\n this.requestInternal.addEventListener(\n SDK.NetworkRequest.Events.TrustTokenResultAdded, this.maybeShowErrorIconInTrustTokenTabHeader, this);\n this.maybeAppendCookiesPanel();\n this.maybeShowErrorIconInTrustTokenTabHeader();\n\n // Only select the initial tab the first time the view is shown after construction.\n // When the view is re-shown (without re-constructing) users or revealers might have changed\n // the selected tab in the mean time. Show the previously selected tab in that\n // case instead, by simply doing nohting.\n if (this.initialTab) {\n this.selectTabInternal(this.initialTab);\n this.initialTab = undefined;\n }\n }\n\n override willHide(): void {\n this.requestInternal.removeEventListener(\n SDK.NetworkRequest.Events.RequestHeadersChanged, this.requestHeadersChanged, this);\n this.requestInternal.removeEventListener(\n SDK.NetworkRequest.Events.ResponseHeadersChanged, this.maybeAppendCookiesPanel, this);\n this.requestInternal.removeEventListener(\n SDK.NetworkRequest.Events.TrustTokenResultAdded, this.maybeShowErrorIconInTrustTokenTabHeader, this);\n }\n\n private async requestHeadersChanged(): Promise {\n this.maybeAppendCookiesPanel();\n void this.maybeAppendPayloadPanel();\n }\n\n private maybeAppendCookiesPanel(): void {\n const cookiesPresent = this.requestInternal.hasRequestCookies() || this.requestInternal.responseCookies.length > 0;\n console.assert(cookiesPresent || !this.cookiesView, 'Cookies were introduced in headers and then removed!');\n if (cookiesPresent && !this.cookiesView) {\n this.cookiesView = new RequestCookiesView(this.requestInternal);\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Cookies, i18nString(UIStrings.cookies), this.cookiesView,\n i18nString(UIStrings.requestAndResponseCookies));\n }\n }\n\n private async maybeAppendPayloadPanel(): Promise {\n if (this.hasTab('payload')) {\n return;\n }\n if (this.requestInternal.queryParameters || await this.requestInternal.requestFormData()) {\n this.payloadView = new RequestPayloadView(this.requestInternal);\n this.appendTab(\n NetworkForward.UIRequestLocation.UIRequestTabs.Payload, i18nString(UIStrings.payload), this.payloadView,\n i18nString(UIStrings.payload), /* userGesture=*/ void 0,\n /* isCloseable=*/ void 0, /* isPreviewFeature=*/ void 0, /* index=*/ 1);\n }\n }\n\n private maybeShowErrorIconInTrustTokenTabHeader(): void {\n const trustTokenResult = this.requestInternal.trustTokenOperationDoneEvent();\n if (trustTokenResult &&\n !NetworkComponents.RequestTrustTokensView.statusConsideredSuccess(trustTokenResult.status)) {\n const icon = new IconButton.Icon.Icon();\n icon.data = {iconName: 'cross-circle-filled', color: 'var(--icon-error)', width: '14px', height: '14px'};\n this.setTabIcon(NetworkForward.UIRequestLocation.UIRequestTabs.TrustTokens, icon);\n }\n }\n\n private selectTabInternal(tabId: string): void {\n if (!this.selectTab(tabId)) {\n // maybeAppendPayloadPanel might cause payload tab to appear asynchronously, so\n // it makes sense to retry on the next tick\n window.setTimeout(() => {\n if (!this.selectTab(tabId)) {\n this.selectTab('headers');\n }\n }, 0);\n }\n }\n\n private tabSelected(event: Common.EventTarget.EventTargetEvent): void {\n if (!event.data.isUserGesture) {\n return;\n }\n this.resourceViewTabSetting.set(event.data.tabId as NetworkForward.UIRequestLocation.UIRequestTabs);\n }\n\n request(): SDK.NetworkRequest.NetworkRequest {\n return this.requestInternal;\n }\n\n async revealResponseBody(position: SourceFrame.SourceFrame.RevealPosition): Promise {\n this.selectTabInternal(NetworkForward.UIRequestLocation.UIRequestTabs.Response);\n await this.responseView?.revealPosition(position);\n }\n\n revealHeader(section: NetworkForward.UIRequestLocation.UIHeaderSection, header: string|undefined): void {\n this.selectTabInternal(NetworkForward.UIRequestLocation.UIRequestTabs.HeadersComponent);\n this.headersViewComponent.revealHeader(section, header);\n }\n\n getHeadersViewComponent(): NetworkComponents.RequestHeadersView.RequestHeadersView {\n return this.headersViewComponent;\n }\n}\n"]}
\ No newline at end of file
diff --git a/public/panels/network/NetworkLogView.d.ts b/public/panels/network/NetworkLogView.d.ts
index 8a4b64982..e9cf9c26d 100644
--- a/public/panels/network/NetworkLogView.d.ts
+++ b/public/panels/network/NetworkLogView.d.ts
@@ -189,7 +189,7 @@ export declare class NetworkLogView extends NetworkLogView_base implements SDK.T
private filterOutBlobRequests;
private generateFetchCall;
private generateAllFetchCall;
- static generateCurlCommand(request: SDK.NetworkRequest.NetworkRequest, platform: string): Promise;
+ static generateCurlCommand(request: SDK.NetworkRequest.NetworkRequest, platform: 'unix' | 'win'): Promise;
private generateAllCurlCommand;
private generatePowerShellCommand;
private generateAllPowerShellCommand;
diff --git a/public/panels/network/NetworkLogView.js b/public/panels/network/NetworkLogView.js
index c90fd09f6..49f3b61f6 100644
--- a/public/panels/network/NetworkLogView.js
+++ b/public/panels/network/NetworkLogView.js
@@ -1897,8 +1897,7 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin(UI.Widget.VB
// The |Accept-Encoding| header is ignored to prevent decompression errors. crbug.com/1015321
const ignoredHeaders = new Set(['accept-encoding', 'host', 'method', 'path', 'scheme', 'version']);
function escapeStringWin(str) {
- /* If there are no new line characters do not escape the " characters
- since it only uglifies the command.
+ /* Only escape the " characters when necessary.
Because cmd.exe parser and MS Crt arguments parsers use some of the
same escape characters, they can interact with each other in
@@ -1924,7 +1923,7 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin(UI.Widget.VB
new line is there to enact the escape command the second is the character
to escape (in this case new line).
*/
- const encapsChars = /[\r\n]/.test(str) ? '^"' : '"';
+ const encapsChars = /[\r\n]|[^a-zA-Z0-9\s_\-:=+~'\/.',?;()*`&]/.test(str) ? '^"' : '"';
return encapsChars +
str.replace(/\\/g, '\\\\')
.replace(/"/g, '\\"')
@@ -1992,7 +1991,6 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin(UI.Widget.VB
}
}
command = command.concat(data);
- command.push('--compressed');
if (request.securityState() === "insecure" /* Protocol.Security.SecurityState.Insecure */) {
command.push('--insecure');
}
diff --git a/public/panels/network/NetworkLogView.js.map b/public/panels/network/NetworkLogView.js.map
index cf7e2dae2..68b1241b5 100644
--- a/public/panels/network/NetworkLogView.js.map
+++ b/public/panels/network/NetworkLogView.js.map
@@ -1 +1 @@
-{"version":3,"file":"NetworkLogView.js","sourceRoot":"","sources":["../../../../../../front_end/panels/network/NetworkLogView.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2021 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n/*\n * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.\n * Copyright (C) 2008, 2009 Anthony Ricaud \n * Copyright (C) 2011 Google Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of Apple Computer, Inc. (\"Apple\") nor the names of\n * its contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport * as Common from '../../core/common/common.js';\nimport * as Host from '../../core/host/host.js';\nimport * as i18n from '../../core/i18n/i18n.js';\nimport * as Platform from '../../core/platform/platform.js';\nimport * as Root from '../../core/root/root.js';\nimport * as SDK from '../../core/sdk/sdk.js';\nimport * as Protocol from '../../generated/protocol.js';\nimport * as Bindings from '../../models/bindings/bindings.js';\nimport * as HAR from '../../models/har/har.js';\nimport * as Logs from '../../models/logs/logs.js';\nimport * as Persistence from '../../models/persistence/persistence.js';\nimport * as TextUtils from '../../models/text_utils/text_utils.js';\nimport * as NetworkForward from '../../panels/network/forward/forward.js';\nimport * as Sources from '../../panels/sources/sources.js';\nimport * as Adorners from '../../ui/components/adorners/adorners.js';\nimport * as Coordinator from '../../ui/components/render_coordinator/render_coordinator.js';\nimport * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';\nimport * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';\nimport * as Components from '../../ui/legacy/components/utils/utils.js';\nimport * as UI from '../../ui/legacy/legacy.js';\n\nimport {\n Events,\n type EventTypes,\n NetworkGroupNode,\n type NetworkLogViewInterface,\n type NetworkNode,\n NetworkRequestNode,\n} from './NetworkDataGridNode.js';\nimport {NetworkFrameGrouper} from './NetworkFrameGrouper.js';\nimport networkLogViewStyles from './networkLogView.css.js';\nimport {NetworkLogViewColumns} from './NetworkLogViewColumns.js';\nimport {\n NetworkTimeBoundary,\n type NetworkTimeCalculator,\n NetworkTransferDurationCalculator,\n NetworkTransferTimeCalculator,\n} from './NetworkTimeCalculator.js';\n\nconst UIStrings = {\n /**\n *@description Text in Network Log View of the Network panel\n */\n invertFilter: 'Invert',\n /**\n *@description Tooltip for the 'invert' checkbox in the Network panel.\n */\n invertsFilter: 'Inverts the search filter',\n /**\n *@description Text for everything\n */\n allStrings: 'All',\n /**\n *@description Text in Network Log View of the Network panel\n */\n hideDataUrls: 'Hide data URLs',\n /**\n *@description Data urlfilter ui element title in Network Log View of the Network panel\n */\n hidesDataAndBlobUrls: 'Hide \\'data:\\' and \\'blob:\\' URLs',\n /**\n * @description Label for a filter in the Network panel\n */\n chromeExtensions: 'Hide extension URLs',\n /**\n * @description Tooltip for a filter in the Network panel\n */\n hideChromeExtension: 'Hide \\'chrome-extension://\\' URLs',\n /**\n *@description Aria accessible name in Network Log View of the Network panel\n */\n requestTypesToInclude: 'Request types to include',\n /**\n * @description Tooltip for the `Request types` dropdown in the Network Panel\n */\n requestTypesTooltip: 'Filter requests by type',\n /**\n * @description Label for the dropdown in the Network Panel\n */\n requestTypes: 'Request types',\n /**\n * @description Dynamic label for the `Request types` dropdown in the Network panel\n * @example {Doc} PH1\n * @example {CSS} PH2\n */\n twoTypesSelected: '{PH1}, {PH2}',\n /**\n * @description: Dynamic label for the `Request types` dropdown in the Network panel\n * @example {Doc} PH1\n * @example {CSS} PH2\n */\n overTwoTypesSelected: '{PH1}, {PH2}...',\n /**\n *@description Label for a checkbox in the Network panel. When checked, only requests with\n * blocked response cookies are shown.\n */\n hasBlockedCookies: 'Blocked response cookies',\n /**\n *@description Tooltip for a checkbox in the Network panel. The response to a network request may include a\n * cookie (https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies). Such response cookies can\n * be malformed or otherwise invalid and the browser may choose to ignore or not accept invalid cookies.\n */\n onlyShowRequestsWithBlockedCookies: 'Show only requests with blocked response cookies',\n /**\n *@description Label for a filter in the Network panel\n */\n blockedRequests: 'Blocked requests',\n /**\n *@description Tooltip for a filter in the Network panel\n */\n onlyShowBlockedRequests: 'Show only blocked requests',\n /**\n *@description Label for a filter in the Network panel\n */\n thirdParty: '3rd-party requests',\n /**\n *@description Tooltip for a filter in the Network panel\n */\n onlyShowThirdPartyRequests: 'Show only requests with origin different from page origin',\n /**\n *@description Text that appears when user drag and drop something (for example, a file) in Network Log View of the Network panel\n */\n dropHarFilesHere: 'Drop HAR files here',\n /**\n *@description Recording text text content in Network Log View of the Network panel\n */\n recordingNetworkActivity: 'Recording network activity…',\n /**\n *@description Text in Network Log View of the Network panel\n *@example {Ctrl + R} PH1\n */\n performARequestOrHitSToRecordThe: 'Perform a request or hit {PH1} to record the reload.',\n /**\n *@description Shown in the Network Log View of the Network panel when the user has not yet\n * recorded any network activity. This is an instruction to the user to start recording in order to\n * show network activity in the current UI.\n *@example {Ctrl + E} PH1\n */\n recordToDisplayNetworkActivity: 'Record network log ({PH1}) to display network activity.',\n /**\n *@description Text that is usually a hyperlink to more documentation\n */\n learnMore: 'Learn more',\n /**\n *@description Text to announce to screen readers that network data is available.\n */\n networkDataAvailable: 'Network Data Available',\n /**\n *@description Text in Network Log View of the Network panel\n *@example {3} PH1\n *@example {5} PH2\n */\n sSRequests: '{PH1} / {PH2} requests',\n /**\n *@description Message in the summary toolbar at the bottom of the Network log that shows the compressed size of the\n * resources transferred during a selected time frame over the compressed size of all resources transferred during\n * the whole network log.\n *@example {5 B} PH1\n *@example {10 B} PH2\n */\n sSTransferred: '{PH1} / {PH2} transferred',\n /**\n *@description Message in a tooltip that shows the compressed size of the resources transferred during a selected\n * time frame over the compressed size of all resources transferred during the whole network log.\n *@example {10} PH1\n *@example {15} PH2\n */\n sBSBTransferredOverNetwork: '{PH1} B / {PH2} B transferred over network',\n /**\n * @description Text in Network Log View of the Network panel. Appears when a particular network\n * resource is selected by the user. Shows how large the selected resource was (PH1) out of the\n * total size (PH2).\n * @example {40MB} PH1\n * @example {50MB} PH2\n */\n sSResources: '{PH1} / {PH2} resources',\n /**\n *@description Text in Network Log View of the Network panel\n *@example {40} PH1\n *@example {50} PH2\n */\n sBSBResourcesLoadedByThePage: '{PH1} B / {PH2} B resources loaded by the page',\n /**\n *@description Text in Network Log View of the Network panel\n *@example {6} PH1\n */\n sRequests: '{PH1} requests',\n /**\n *@description Message in the summary toolbar at the bottom of the Network log that shows the compressed size of\n * all resources transferred over network during a network activity log.\n *@example {4 B} PH1\n */\n sTransferred: '{PH1} transferred',\n /**\n *@description Message in a tooltip that shows the compressed size of all resources transferred over network during\n * a network activity log.\n *@example {4} PH1\n */\n sBTransferredOverNetwork: '{PH1} B transferred over network',\n /**\n *@description Text in Network Log View of the Network panel\n *@example {4} PH1\n */\n sResources: '{PH1} resources',\n /**\n *@description Text in Network Log View of the Network panel\n *@example {10} PH1\n */\n sBResourcesLoadedByThePage: '{PH1} B resources loaded by the page',\n /**\n *@description Text in Network Log View of the Network panel\n *@example {120ms} PH1\n */\n finishS: 'Finish: {PH1}',\n /**\n *@description Text in Network Log View of the Network panel\n *@example {3000ms} PH1\n */\n domcontentloadedS: 'DOMContentLoaded: {PH1}',\n /**\n *@description Text in Network Log View of the Network panel\n *@example {40ms} PH1\n */\n loadS: 'Load: {PH1}',\n /**\n *@description Text for copying\n */\n copy: 'Copy',\n /**\n *@description Text in Network Log View of the Network panel\n */\n copyRequestHeaders: 'Copy request headers',\n /**\n *@description Text in Network Log View of the Network panel\n */\n copyResponseHeaders: 'Copy response headers',\n /**\n *@description Text in Network Log View of the Network panel\n */\n copyResponse: 'Copy response',\n /**\n *@description Text in Network Log View of the Network panel\n */\n copyStacktrace: 'Copy stack trace',\n /**\n * @description A context menu command in the Network panel, for copying to the clipboard.\n * PowerShell refers to the format the data will be copied as.\n */\n copyAsPowershell: 'Copy as `PowerShell`',\n /**\n *@description A context menu command in the Network panel, for copying to the clipboard. 'fetch'\n * refers to the format the data will be copied as, which is compatible with the fetch web API.\n */\n copyAsFetch: 'Copy as `fetch`',\n /**\n * @description Text in Network Log View of the Network panel. An action that copies a command to\n * the developer's clipboard. The command allows the developer to replay this specific network\n * request in Node.js, a desktop application/framework. 'Node.js fetch' is a noun phrase for the\n * type of request that will be copied.\n */\n copyAsNodejsFetch: 'Copy as `Node.js` `fetch`',\n /**\n *@description Text in Network Log View of the Network panel. An action that copies a command to\n *the clipboard. It will copy the command in the format compatible with cURL (a program, not\n *translatable).\n */\n copyAsCurlCmd: 'Copy as `cURL` (`cmd`)',\n /**\n *@description Text in Network Log View of the Network panel. An action that copies a command to\n *the clipboard. It will copy the command in the format compatible with a Bash script.\n */\n copyAsCurlBash: 'Copy as `cURL` (`bash`)',\n /**\n *@description Text in Network Log View of the Network panel. An action that copies a command to\n *the clipboard. It will copy the command in the format compatible with a PowerShell script.\n */\n copyAllAsPowershell: 'Copy all as `PowerShell`',\n /**\n *@description Text in Network Log View of the Network panel. An action that copies a command to\n *the clipboard. It will copy the command in the format compatible with a 'fetch' command (fetch\n *should not be translated).\n */\n copyAllAsFetch: 'Copy all as `fetch`',\n /**\n *@description Text in Network Log View of the Network panel. An action that copies a command to\n *the clipboard. It will copy the command in the format compatible with a Node.js 'fetch' command\n *(fetch and Node.js should not be translated).\n */\n copyAllAsNodejsFetch: 'Copy all as `Node.js` `fetch`',\n /**\n *@description Text in Network Log View of the Network panel. An action that copies a command to\n *the clipboard. It will copy the command in the format compatible with cURL (a program, not\n *translatable).\n */\n copyAllAsCurlCmd: 'Copy all as `cURL` (`cmd`)',\n /**\n *@description Text in Network Log View of the Network panel. An action that copies a command to\n *the clipboard. It will copy the command in the format compatible with a Bash script.\n */\n copyAllAsCurlBash: 'Copy all as `cURL` (`bash`)',\n /**\n *@description Text in Network Log View of the Network panel. An action that copies a command to\n *the clipboard. It will copy the command in the format compatible with cURL (a program, not\n *translatable).\n */\n copyAsCurl: 'Copy as `cURL`',\n /**\n *@description Text in Network Log View of the Network panel. An action that copies a command to\n *the clipboard. It will copy the command in the format compatible with cURL (a program, not\n *translatable).\n */\n copyAllAsCurl: 'Copy all as `cURL`',\n /**\n * @description Text in Network Log View of the Network panel. An action that copies data to the\n * clipboard. It will copy the data in the HAR (not translatable) format. 'all' refers to every\n * network request that is currently shown.\n */\n copyAllAsHar: 'Copy all as `HAR`',\n /**\n *@description A context menu item in the Network Log View of the Network panel\n */\n saveAllAsHarWithContent: 'Save all as `HAR` with content',\n /**\n *@description A context menu item in the Network Log View of the Network panel\n */\n clearBrowserCache: 'Clear browser cache',\n /**\n *@description A context menu item in the Network Log View of the Network panel\n */\n clearBrowserCookies: 'Clear browser cookies',\n /**\n *@description A context menu item in the Network Log View of the Network panel\n */\n blockRequestUrl: 'Block request URL',\n /**\n *@description A context menu item in the Network Log View of the Network panel\n *@example {example.com} PH1\n */\n unblockS: 'Unblock {PH1}',\n /**\n *@description A context menu item in the Network Log View of the Network panel\n */\n blockRequestDomain: 'Block request domain',\n /**\n *@description Text to replay an XHR request\n */\n replayXhr: 'Replay XHR',\n /**\n *@description Text in Network Log View of the Network panel\n */\n areYouSureYouWantToClearBrowser: 'Are you sure you want to clear browser cache?',\n /**\n *@description Text in Network Log View of the Network panel\n */\n areYouSureYouWantToClearBrowserCookies: 'Are you sure you want to clear browser cookies?',\n /**\n *@description A context menu item in the Network Log View of the Network panel\n * for creating a header override\n */\n overrideHeaders: 'Override headers',\n /**\n * @description Tooltip for the Show only/Hide requests dropdown of the filterbar\n */\n showOnlyHideRequests: 'Show only/hide requests',\n /**\n * @description Text for the Show only/Hide requests dropdown button of the filterbar\n */\n moreFilters: 'More filters',\n /**\n * @description Text for the Request types dropdown button tooltip\n * @example {Media, Images} PH1\n */\n showOnly: 'Show only {PH1}',\n};\nconst str_ = i18n.i18n.registerUIStrings('panels/network/NetworkLogView.ts', UIStrings);\nconst i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);\n\nconst enum FetchStyle {\n Browser = 0,\n NodeJs = 1,\n}\n\nconst coordinator = Coordinator.RenderCoordinator.RenderCoordinator.instance();\n\nexport class NetworkLogView extends Common.ObjectWrapper.eventMixin(UI.Widget.VBox)\n implements SDK.TargetManager.SDKModelObserver, NetworkLogViewInterface {\n private readonly networkInvertFilterSetting: Common.Settings.Setting;\n private readonly networkHideDataURLSetting: Common.Settings.Setting;\n private readonly networkHideChromeExtensions: Common.Settings.Setting;\n private readonly networkShowBlockedCookiesOnlySetting: Common.Settings.Setting;\n private readonly networkOnlyBlockedRequestsSetting: Common.Settings.Setting;\n private readonly networkOnlyThirdPartySetting: Common.Settings.Setting;\n private readonly networkResourceTypeFiltersSetting: Common.Settings.Setting<{[key: string]: boolean}>;\n private rawRowHeight: number;\n private readonly progressBarContainer: Element;\n private readonly networkLogLargeRowsSetting: Common.Settings.Setting;\n private rowHeightInternal: number;\n private readonly timeCalculatorInternal: NetworkTransferTimeCalculator;\n private readonly durationCalculator: NetworkTransferDurationCalculator;\n private calculatorInternal: NetworkTransferTimeCalculator;\n private readonly columnsInternal: NetworkLogViewColumns;\n private staleRequests: Set;\n private mainRequestLoadTime: number;\n private mainRequestDOMContentLoadedTime: number;\n private filters: Filter[];\n private timeFilter: Filter|null;\n private hoveredNodeInternal: NetworkNode|null;\n private recordingHint: Element|null;\n private highlightedNode: NetworkRequestNode|null;\n private readonly linkifierInternal: Components.Linkifier.Linkifier;\n private recording: boolean;\n private needsRefresh: boolean;\n private readonly headerHeightInternal: number;\n private readonly groupLookups: Map;\n private activeGroupLookup: GroupLookupInterface|null;\n private readonly textFilterUI: UI.FilterBar.TextFilterUI;\n private readonly invertFilterUI: UI.FilterBar.CheckboxFilterUI;\n private readonly dataURLFilterUI: UI.FilterBar.CheckboxFilterUI|undefined;\n private readonly moreFiltersDropDownUI: MoreFiltersDropDownUI|undefined;\n private readonly onlyBlockedResponseCookiesFilterUI: UI.FilterBar.CheckboxFilterUI|undefined;\n private readonly onlyBlockedRequestsUI: UI.FilterBar.CheckboxFilterUI|undefined;\n private readonly onlyThirdPartyFilterUI: UI.FilterBar.CheckboxFilterUI|undefined;\n private readonly hideChromeExtensionsUI: UI.FilterBar.CheckboxFilterUI|undefined;\n private readonly resourceCategoryFilterUI: DropDownTypesUI|UI.FilterBar.NamedBitSetFilterUI;\n private readonly filterParser: TextUtils.TextUtils.FilterParser;\n private readonly suggestionBuilder: UI.FilterSuggestionBuilder.FilterSuggestionBuilder;\n private dataGrid: DataGrid.SortableDataGrid.SortableDataGrid;\n private readonly summaryToolbarInternal: UI.Toolbar.Toolbar;\n private readonly filterBar: UI.FilterBar.FilterBar;\n private readonly textFilterSetting: Common.Settings.Setting;\n\n constructor(\n filterBar: UI.FilterBar.FilterBar, progressBarContainer: Element,\n networkLogLargeRowsSetting: Common.Settings.Setting) {\n super();\n this.setMinimumSize(50, 64);\n\n this.element.id = 'network-container';\n this.element.classList.add('no-node-selected');\n\n this.networkInvertFilterSetting = Common.Settings.Settings.instance().createSetting('networkInvertFilter', false);\n this.networkHideDataURLSetting = Common.Settings.Settings.instance().createSetting('networkHideDataURL', false);\n this.networkHideChromeExtensions =\n Common.Settings.Settings.instance().createSetting('networkHideChromeExtensions', false);\n this.networkShowBlockedCookiesOnlySetting =\n Common.Settings.Settings.instance().createSetting('networkShowBlockedCookiesOnlySetting', false);\n this.networkOnlyBlockedRequestsSetting =\n Common.Settings.Settings.instance().createSetting('networkOnlyBlockedRequests', false);\n this.networkOnlyThirdPartySetting =\n Common.Settings.Settings.instance().createSetting('networkOnlyThirdPartySetting', false);\n this.networkResourceTypeFiltersSetting =\n Common.Settings.Settings.instance().createSetting('networkResourceTypeFilters', {});\n\n this.rawRowHeight = 0;\n this.progressBarContainer = progressBarContainer;\n this.networkLogLargeRowsSetting = networkLogLargeRowsSetting;\n this.networkLogLargeRowsSetting.addChangeListener(updateRowHeight.bind(this), this);\n\n function updateRowHeight(this: NetworkLogView): void {\n this.rawRowHeight = Boolean(this.networkLogLargeRowsSetting.get()) ? 41 : 21;\n this.rowHeightInternal = this.computeRowHeight();\n }\n this.rawRowHeight = 0;\n this.rowHeightInternal = 0;\n updateRowHeight.call(this);\n\n this.timeCalculatorInternal = new NetworkTransferTimeCalculator();\n this.durationCalculator = new NetworkTransferDurationCalculator();\n this.calculatorInternal = this.timeCalculatorInternal;\n\n this.columnsInternal = new NetworkLogViewColumns(\n this, this.timeCalculatorInternal, this.durationCalculator, networkLogLargeRowsSetting);\n this.columnsInternal.show(this.element);\n\n this.staleRequests = new Set();\n this.mainRequestLoadTime = -1;\n this.mainRequestDOMContentLoadedTime = -1;\n\n this.filters = [];\n this.timeFilter = null;\n this.hoveredNodeInternal = null;\n this.recordingHint = null;\n this.highlightedNode = null;\n\n this.linkifierInternal = new Components.Linkifier.Linkifier();\n\n this.recording = false;\n this.needsRefresh = false;\n\n this.headerHeightInternal = 0;\n\n this.groupLookups = new Map();\n this.groupLookups.set('Frame', new NetworkFrameGrouper(this));\n\n this.activeGroupLookup = null;\n\n this.textFilterUI = new UI.FilterBar.TextFilterUI();\n this.textFilterUI.addEventListener(UI.FilterBar.FilterUIEvents.FilterChanged, this.filterChanged, this);\n filterBar.addFilter(this.textFilterUI);\n\n this.invertFilterUI = new UI.FilterBar.CheckboxFilterUI(\n 'invert-filter', i18nString(UIStrings.invertFilter), true, this.networkInvertFilterSetting);\n this.invertFilterUI.addEventListener(\n UI.FilterBar.FilterUIEvents.FilterChanged, this.filterChanged.bind(this), this);\n UI.Tooltip.Tooltip.install(this.invertFilterUI.element(), i18nString(UIStrings.invertsFilter));\n filterBar.addFilter(this.invertFilterUI);\n filterBar.addDivider();\n\n const filterItems =\n Object.values(Common.ResourceType.resourceCategories)\n .map(\n category =>\n ({name: category.title(), label: (): string => category.shortTitle(), title: category.title()}));\n\n if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.NETWORK_PANEL_FILTER_BAR_REDESIGN)) {\n this.resourceCategoryFilterUI =\n new DropDownTypesUI(filterItems, this.filterChanged.bind(this), this.networkResourceTypeFiltersSetting);\n UI.ARIAUtils.setLabel(this.resourceCategoryFilterUI.element(), i18nString(UIStrings.requestTypesToInclude));\n this.resourceCategoryFilterUI.addEventListener(\n UI.FilterBar.FilterUIEvents.FilterChanged, this.filterChanged.bind(this), this);\n filterBar.addFilter(this.resourceCategoryFilterUI);\n filterBar.addDivider();\n\n this.moreFiltersDropDownUI = new MoreFiltersDropDownUI(this.filterChanged.bind(this));\n filterBar.addFilter(this.moreFiltersDropDownUI);\n } else {\n this.dataURLFilterUI = new UI.FilterBar.CheckboxFilterUI(\n 'hide-data-url', i18nString(UIStrings.hideDataUrls), true, this.networkHideDataURLSetting);\n this.dataURLFilterUI.addEventListener(\n UI.FilterBar.FilterUIEvents.FilterChanged, this.filterChanged.bind(this), this);\n UI.Tooltip.Tooltip.install(this.dataURLFilterUI.element(), i18nString(UIStrings.hidesDataAndBlobUrls));\n filterBar.addFilter(this.dataURLFilterUI);\n\n this.hideChromeExtensionsUI = new UI.FilterBar.CheckboxFilterUI(\n 'chrome-extension', i18nString(UIStrings.chromeExtensions), true, this.networkHideChromeExtensions);\n this.hideChromeExtensionsUI.addEventListener(\n UI.FilterBar.FilterUIEvents.FilterChanged, this.filterChanged.bind(this), this);\n UI.Tooltip.Tooltip.install(this.hideChromeExtensionsUI.element(), i18nString(UIStrings.hideChromeExtension));\n filterBar.addFilter(this.hideChromeExtensionsUI);\n\n this.resourceCategoryFilterUI =\n new UI.FilterBar.NamedBitSetFilterUI(filterItems, this.networkResourceTypeFiltersSetting);\n UI.ARIAUtils.setLabel(this.resourceCategoryFilterUI.element(), i18nString(UIStrings.requestTypesToInclude));\n this.resourceCategoryFilterUI.addEventListener(\n UI.FilterBar.FilterUIEvents.FilterChanged, this.filterChanged.bind(this), this);\n filterBar.addFilter(this.resourceCategoryFilterUI);\n\n this.onlyBlockedResponseCookiesFilterUI = new UI.FilterBar.CheckboxFilterUI(\n 'only-show-blocked-cookies', i18nString(UIStrings.hasBlockedCookies), true,\n this.networkShowBlockedCookiesOnlySetting);\n this.onlyBlockedResponseCookiesFilterUI.addEventListener(\n UI.FilterBar.FilterUIEvents.FilterChanged, this.filterChanged.bind(this), this);\n UI.Tooltip.Tooltip.install(\n this.onlyBlockedResponseCookiesFilterUI.element(), i18nString(UIStrings.onlyShowRequestsWithBlockedCookies));\n filterBar.addFilter(this.onlyBlockedResponseCookiesFilterUI);\n\n this.onlyBlockedRequestsUI = new UI.FilterBar.CheckboxFilterUI(\n 'only-show-blocked-requests', i18nString(UIStrings.blockedRequests), true,\n this.networkOnlyBlockedRequestsSetting);\n this.onlyBlockedRequestsUI.addEventListener(\n UI.FilterBar.FilterUIEvents.FilterChanged, this.filterChanged.bind(this), this);\n UI.Tooltip.Tooltip.install(this.onlyBlockedRequestsUI.element(), i18nString(UIStrings.onlyShowBlockedRequests));\n filterBar.addFilter(this.onlyBlockedRequestsUI);\n\n this.onlyThirdPartyFilterUI = new UI.FilterBar.CheckboxFilterUI(\n 'only-show-third-party', i18nString(UIStrings.thirdParty), true, this.networkOnlyThirdPartySetting);\n this.onlyThirdPartyFilterUI.addEventListener(\n UI.FilterBar.FilterUIEvents.FilterChanged, this.filterChanged.bind(this), this);\n UI.Tooltip.Tooltip.install(\n this.onlyThirdPartyFilterUI.element(), i18nString(UIStrings.onlyShowThirdPartyRequests));\n filterBar.addFilter(this.onlyThirdPartyFilterUI);\n }\n\n this.filterParser = new TextUtils.TextUtils.FilterParser(searchKeys);\n this.suggestionBuilder =\n new UI.FilterSuggestionBuilder.FilterSuggestionBuilder(searchKeys, NetworkLogView.sortSearchValues);\n this.resetSuggestionBuilder();\n\n this.dataGrid = this.columnsInternal.dataGrid();\n this.setupDataGrid();\n this.columnsInternal.sortByCurrentColumn();\n filterBar.filterButton().addEventListener(\n UI.Toolbar.ToolbarButton.Events.Click, this.dataGrid.scheduleUpdate.bind(this.dataGrid, true /* isFromUser */));\n\n this.summaryToolbarInternal = new UI.Toolbar.Toolbar('network-summary-bar', this.element);\n this.summaryToolbarInternal.element.setAttribute('role', 'status');\n\n new UI.DropTarget.DropTarget(\n this.element, [UI.DropTarget.Type.File], i18nString(UIStrings.dropHarFilesHere), this.handleDrop.bind(this));\n\n Common.Settings.Settings.instance()\n .moduleSetting('networkColorCodeResourceTypes')\n .addChangeListener(this.invalidateAllItems.bind(this, false), this);\n\n SDK.TargetManager.TargetManager.instance().observeModels(SDK.NetworkManager.NetworkManager, this, {scoped: true});\n Logs.NetworkLog.NetworkLog.instance().addEventListener(\n Logs.NetworkLog.Events.RequestAdded, this.onRequestUpdated, this);\n Logs.NetworkLog.NetworkLog.instance().addEventListener(\n Logs.NetworkLog.Events.RequestUpdated, this.onRequestUpdated, this);\n Logs.NetworkLog.NetworkLog.instance().addEventListener(\n Logs.NetworkLog.Events.RequestRemoved, this.onRequestRemoved, this);\n Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.Reset, this.reset, this);\n\n this.updateGroupByFrame();\n Common.Settings.Settings.instance()\n .moduleSetting('network.group-by-frame')\n .addChangeListener(() => this.updateGroupByFrame());\n\n this.filterBar = filterBar;\n\n this.textFilterSetting = Common.Settings.Settings.instance().createSetting('networkTextFilter', '');\n if (this.textFilterSetting.get()) {\n this.textFilterUI.setValue(this.textFilterSetting.get());\n }\n }\n\n getMoreFiltersDropdown(): MoreFiltersDropDownUI|undefined {\n return this.moreFiltersDropDownUI;\n }\n\n private updateGroupByFrame(): void {\n const value = Common.Settings.Settings.instance().moduleSetting('network.group-by-frame').get();\n this.setGrouping(value ? 'Frame' : null);\n }\n\n private static sortSearchValues(key: string, values: string[]): void {\n if (key === NetworkForward.UIFilter.FilterType.Priority) {\n values.sort((a, b) => {\n const aPriority = (PerfUI.NetworkPriorities.uiLabelToNetworkPriority(a) as Protocol.Network.ResourcePriority);\n const bPriority = (PerfUI.NetworkPriorities.uiLabelToNetworkPriority(b) as Protocol.Network.ResourcePriority);\n return PerfUI.NetworkPriorities.networkPriorityWeight(aPriority) -\n PerfUI.NetworkPriorities.networkPriorityWeight(bPriority);\n });\n } else {\n values.sort();\n }\n }\n\n private static negativeFilter(filter: Filter, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return !filter(request);\n }\n\n private static requestPathFilter(regex: RegExp|null, request: SDK.NetworkRequest.NetworkRequest): boolean {\n if (!regex) {\n return false;\n }\n\n return regex.test(request.path() + '/' + request.name());\n }\n\n private static subdomains(domain: string): string[] {\n const result = [domain];\n let indexOfPeriod = domain.indexOf('.');\n while (indexOfPeriod !== -1) {\n result.push('*' + domain.substring(indexOfPeriod));\n indexOfPeriod = domain.indexOf('.', indexOfPeriod + 1);\n }\n return result;\n }\n\n private static createRequestDomainFilter(value: string): Filter {\n const escapedPattern = value.split('*').map(Platform.StringUtilities.escapeForRegExp).join('.*');\n return NetworkLogView.requestDomainFilter.bind(null, new RegExp('^' + escapedPattern + '$', 'i'));\n }\n\n private static requestDomainFilter(regex: RegExp, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return regex.test(request.domain);\n }\n\n private static runningRequestFilter(request: SDK.NetworkRequest.NetworkRequest): boolean {\n return !request.finished;\n }\n\n private static fromCacheRequestFilter(request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.cached();\n }\n\n private static interceptedByServiceWorkerFilter(request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.fetchedViaServiceWorker;\n }\n\n private static initiatedByServiceWorkerFilter(request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.initiatedByServiceWorker();\n }\n\n private static requestResponseHeaderFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.responseHeaderValue(value) !== undefined;\n }\n\n private static requestResponseHeaderSetCookieFilter(value: string, request: SDK.NetworkRequest.NetworkRequest):\n boolean {\n // Multiple Set-Cookie headers in the request are concatenated via space. Only\n // filter via `includes` instead of strict equality.\n return Boolean(request.responseHeaderValue('Set-Cookie')?.includes(value));\n }\n\n private static requestMethodFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.requestMethod === value;\n }\n\n private static requestPriorityFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.priority() === value;\n }\n\n private static requestMimeTypeFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.mimeType === value;\n }\n\n private static requestMixedContentFilter(\n value: NetworkForward.UIFilter.MixedContentFilterValues, request: SDK.NetworkRequest.NetworkRequest): boolean {\n if (value === NetworkForward.UIFilter.MixedContentFilterValues.Displayed) {\n return request.mixedContentType === Protocol.Security.MixedContentType.OptionallyBlockable;\n }\n if (value === NetworkForward.UIFilter.MixedContentFilterValues.Blocked) {\n return request.mixedContentType === Protocol.Security.MixedContentType.Blockable && request.wasBlocked();\n }\n if (value === NetworkForward.UIFilter.MixedContentFilterValues.BlockOverridden) {\n return request.mixedContentType === Protocol.Security.MixedContentType.Blockable && !request.wasBlocked();\n }\n if (value === NetworkForward.UIFilter.MixedContentFilterValues.All) {\n return request.mixedContentType !== Protocol.Security.MixedContentType.None;\n }\n\n return false;\n }\n\n private static requestSchemeFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.scheme === value;\n }\n\n private static requestCookieDomainFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.allCookiesIncludingBlockedOnes().some(cookie => cookie.domain() === value);\n }\n\n private static requestCookieNameFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.allCookiesIncludingBlockedOnes().some(cookie => cookie.name() === value);\n }\n\n private static requestCookiePathFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.allCookiesIncludingBlockedOnes().some(cookie => cookie.path() === value);\n }\n\n private static requestCookieValueFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.allCookiesIncludingBlockedOnes().some(cookie => cookie.value() === value);\n }\n\n private static requestSetCookieDomainFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.responseCookies.some(cookie => cookie.domain() === value);\n }\n\n private static requestSetCookieNameFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.responseCookies.some(cookie => cookie.name() === value);\n }\n\n private static requestSetCookieValueFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.responseCookies.some(cookie => cookie.value() === value);\n }\n\n private static requestSizeLargerThanFilter(value: number, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.transferSize >= value;\n }\n\n private static statusCodeFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return (String(request.statusCode)) === value;\n }\n\n private static hasOverridesFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n if (!value) {\n return false;\n }\n\n if (value === overrideFilter.no) {\n return request.overrideTypes.length === 0;\n }\n\n if (value === overrideFilter.yes) {\n return request.overrideTypes.length > 0;\n }\n\n if (value === overrideFilter.content) {\n return request.overrideTypes.includes('content');\n }\n\n if (value === overrideFilter.headers) {\n return request.overrideTypes.includes('headers');\n }\n\n return request.overrideTypes.join(',').includes(value);\n }\n\n static getHTTPRequestsFilter(request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.parsedURL.isValid && (request.scheme in HTTPSchemas);\n }\n\n private static resourceTypeFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n return request.resourceType().name() === value;\n }\n\n private static requestUrlFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {\n const regex = new RegExp(Platform.StringUtilities.escapeForRegExp(value), 'i');\n return regex.test(request.url());\n }\n\n private static requestTimeFilter(windowStart: number, windowEnd: number, request: SDK.NetworkRequest.NetworkRequest):\n boolean {\n if (request.issueTime() > windowEnd) {\n return false;\n }\n if (request.endTime !== -1 && request.endTime < windowStart) {\n return false;\n }\n return true;\n }\n\n private static copyRequestHeaders(request: SDK.NetworkRequest.NetworkRequest): void {\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(request.requestHeadersText());\n }\n\n private static copyResponseHeaders(request: SDK.NetworkRequest.NetworkRequest): void {\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(request.responseHeadersText);\n }\n\n private static async copyResponse(request: SDK.NetworkRequest.NetworkRequest): Promise {\n const contentData = await request.contentData();\n let content: (string|null)|string = contentData.content || '';\n if (!request.contentType().isTextType()) {\n content = TextUtils.ContentProvider.contentAsDataURL(content, request.mimeType, contentData.encoded);\n } else if (contentData.encoded && content) {\n content = window.atob(content);\n }\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(content);\n }\n\n private handleDrop(dataTransfer: DataTransfer): void {\n const items = dataTransfer.items;\n if (!items.length) {\n return;\n }\n const file = items[0].getAsFile();\n if (file) {\n void this.onLoadFromFile(file);\n }\n }\n\n async onLoadFromFile(file: File): Promise {\n const outputStream = new Common.StringOutputStream.StringOutputStream();\n const reader = new Bindings.FileUtils.ChunkedFileReader(file, /* chunkSize */ 10000000);\n const success = await reader.read(outputStream);\n if (!success) {\n const error = reader.error();\n if (error) {\n this.harLoadFailed(error.message);\n }\n return;\n }\n let harRoot;\n try {\n // HARRoot and JSON.parse might throw.\n harRoot = new HAR.HARFormat.HARRoot(JSON.parse(outputStream.data()));\n } catch (e) {\n this.harLoadFailed(e);\n return;\n }\n Logs.NetworkLog.NetworkLog.instance().importRequests(HAR.Importer.Importer.requestsFromHARLog(harRoot.log));\n }\n\n private harLoadFailed(message: string): void {\n Common.Console.Console.instance().error('Failed to load HAR file with following error: ' + message);\n }\n\n private setGrouping(groupKey: string|null): void {\n if (this.activeGroupLookup) {\n this.activeGroupLookup.reset();\n }\n const groupLookup = groupKey ? this.groupLookups.get(groupKey) || null : null;\n this.activeGroupLookup = groupLookup;\n this.invalidateAllItems();\n }\n\n private computeRowHeight(): number {\n return Math.round(this.rawRowHeight * window.devicePixelRatio) / window.devicePixelRatio;\n }\n\n nodeForRequest(request: SDK.NetworkRequest.NetworkRequest): NetworkRequestNode|null {\n return networkRequestToNode.get(request) || null;\n }\n\n headerHeight(): number {\n return this.headerHeightInternal;\n }\n\n setRecording(recording: boolean): void {\n this.recording = recording;\n this.updateSummaryBar();\n }\n\n columns(): NetworkLogViewColumns {\n return this.columnsInternal;\n }\n\n summaryToolbar(): UI.Toolbar.Toolbar {\n return this.summaryToolbarInternal;\n }\n\n modelAdded(networkManager: SDK.NetworkManager.NetworkManager): void {\n // TODO(allada) Remove dependency on networkManager and instead use NetworkLog and PageLoad for needed data.\n const target = networkManager.target();\n if (target.outermostTarget() !== target) {\n return;\n }\n const resourceTreeModel = target.model(SDK.ResourceTreeModel.ResourceTreeModel);\n if (resourceTreeModel) {\n resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.Load, this.loadEventFired, this);\n resourceTreeModel.addEventListener(\n SDK.ResourceTreeModel.Events.DOMContentLoaded, this.domContentLoadedEventFired, this);\n }\n for (const request of Logs.NetworkLog.NetworkLog.instance().requests()) {\n if (this.isInScope(request)) {\n this.refreshRequest(request);\n }\n }\n }\n\n modelRemoved(networkManager: SDK.NetworkManager.NetworkManager): void {\n const target = networkManager.target();\n if (target.outermostTarget() !== target) {\n return;\n }\n const resourceTreeModel = target.model(SDK.ResourceTreeModel.ResourceTreeModel);\n if (resourceTreeModel) {\n resourceTreeModel.removeEventListener(SDK.ResourceTreeModel.Events.Load, this.loadEventFired, this);\n resourceTreeModel.removeEventListener(\n SDK.ResourceTreeModel.Events.DOMContentLoaded, this.domContentLoadedEventFired, this);\n }\n const preserveLog = Common.Settings.Settings.instance().moduleSetting('network_log.preserve-log').get();\n if (!preserveLog) {\n this.reset();\n }\n }\n\n linkifier(): Components.Linkifier.Linkifier {\n return this.linkifierInternal;\n }\n\n setWindow(start: number, end: number): void {\n if (!start && !end) {\n this.timeFilter = null;\n this.timeCalculatorInternal.setWindow(null);\n } else {\n this.timeFilter = NetworkLogView.requestTimeFilter.bind(null, start, end);\n this.timeCalculatorInternal.setWindow(new NetworkTimeBoundary(start, end));\n }\n this.filterRequests();\n }\n\n resetFocus(): void {\n this.dataGrid.element.focus();\n }\n\n private resetSuggestionBuilder(): void {\n this.suggestionBuilder.clear();\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Is, NetworkForward.UIFilter.IsFilterType.Running);\n this.suggestionBuilder.addItem(\n NetworkForward.UIFilter.FilterType.Is, NetworkForward.UIFilter.IsFilterType.FromCache);\n this.suggestionBuilder.addItem(\n NetworkForward.UIFilter.FilterType.Is, NetworkForward.UIFilter.IsFilterType.ServiceWorkerIntercepted);\n this.suggestionBuilder.addItem(\n NetworkForward.UIFilter.FilterType.Is, NetworkForward.UIFilter.IsFilterType.ServiceWorkerInitiated);\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.LargerThan, '100');\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.LargerThan, '10k');\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.LargerThan, '1M');\n this.textFilterUI.setSuggestionProvider(this.suggestionBuilder.completions.bind(this.suggestionBuilder));\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasOverrides, overrideFilter.yes);\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasOverrides, overrideFilter.no);\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasOverrides, overrideFilter.content);\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasOverrides, overrideFilter.headers);\n }\n\n private filterChanged(): void {\n this.removeAllNodeHighlights();\n this.parseFilterQuery(this.textFilterUI.value(), this.invertFilterUI.checked());\n this.filterRequests();\n this.textFilterSetting.set(this.textFilterUI.value());\n this.moreFiltersDropDownUI?.updateActiveFiltersCount();\n this.moreFiltersDropDownUI?.updateTooltip();\n }\n\n async resetFilter(): Promise {\n this.textFilterUI.clear();\n }\n\n private showRecordingHint(): void {\n this.hideRecordingHint();\n this.recordingHint = this.element.createChild('div', 'network-status-pane fill');\n const hintText = this.recordingHint.createChild('div', 'recording-hint');\n\n if (this.recording) {\n let reloadShortcutNode: Element|null = null;\n const reloadShortcut =\n UI.ShortcutRegistry.ShortcutRegistry.instance().shortcutsForAction('inspector_main.reload')[0];\n if (reloadShortcut) {\n reloadShortcutNode = this.recordingHint.createChild('b');\n reloadShortcutNode.textContent = reloadShortcut.title();\n }\n\n const recordingText = hintText.createChild('span');\n recordingText.textContent = i18nString(UIStrings.recordingNetworkActivity);\n if (reloadShortcutNode) {\n hintText.createChild('br');\n hintText.appendChild(i18n.i18n.getFormatLocalizedString(\n str_, UIStrings.performARequestOrHitSToRecordThe, {PH1: reloadShortcutNode}));\n }\n } else {\n const recordNode = hintText.createChild('b');\n recordNode.textContent =\n UI.ShortcutRegistry.ShortcutRegistry.instance().shortcutTitleForAction('network.toggle-recording') || '';\n hintText.appendChild(\n i18n.i18n.getFormatLocalizedString(str_, UIStrings.recordToDisplayNetworkActivity, {PH1: recordNode}));\n }\n hintText.createChild('br');\n hintText.appendChild(UI.XLink.XLink.create(\n 'https://developer.chrome.com/docs/devtools/network/?utm_source=devtools&utm_campaign=2019Q1',\n i18nString(UIStrings.learnMore)));\n\n this.setHidden(true);\n }\n\n private hideRecordingHint(): void {\n this.setHidden(false);\n if (this.recordingHint) {\n this.recordingHint.remove();\n }\n UI.ARIAUtils.alert(i18nString(UIStrings.networkDataAvailable));\n this.recordingHint = null;\n }\n\n private setHidden(value: boolean): void {\n this.columnsInternal.setHidden(value);\n UI.ARIAUtils.setHidden(this.summaryToolbarInternal.element, value);\n }\n\n override elementsToRestoreScrollPositionsFor(): Element[] {\n if (!this.dataGrid) // Not initialized yet.\n {\n return [];\n }\n return [this.dataGrid.scrollContainer];\n }\n\n columnExtensionResolved(): void {\n this.invalidateAllItems(true);\n }\n\n private setupDataGrid(): DataGrid.SortableDataGrid.SortableDataGrid {\n this.dataGrid.setRowContextMenuCallback((contextMenu, node) => {\n const request = (node as NetworkNode).request();\n if (request) {\n this.handleContextMenuForRequest(contextMenu, request);\n }\n });\n this.dataGrid.setStickToBottom(true);\n this.dataGrid.setName('networkLog');\n this.dataGrid.setResizeMethod(DataGrid.DataGrid.ResizeMethod.Last);\n this.dataGrid.element.classList.add('network-log-grid');\n this.dataGrid.element.addEventListener('mousedown', this.dataGridMouseDown.bind(this), true);\n this.dataGrid.element.addEventListener('mousemove', this.dataGridMouseMove.bind(this), true);\n this.dataGrid.element.addEventListener('mouseleave', () => this.setHoveredNode(null), true);\n this.dataGrid.element.addEventListener('keydown', event => {\n if (event.key === 'ArrowRight' && this.dataGrid.selectedNode) {\n const initiatorLink = this.dataGrid.selectedNode.element().querySelector('span.devtools-link');\n if (initiatorLink) {\n (initiatorLink as HTMLElement).focus();\n }\n }\n\n if (Platform.KeyboardUtilities.isEnterOrSpaceKey(event)) {\n this.dispatchEventToListeners(Events.RequestActivated, {showPanel: true, takeFocus: true});\n event.consume(true);\n }\n });\n this.dataGrid.element.addEventListener('keyup', event => {\n if ((event.key === 'r' || event.key === 'R') && this.dataGrid.selectedNode) {\n const request = (this.dataGrid.selectedNode as NetworkNode).request();\n if (!request) {\n return;\n }\n\n if (SDK.NetworkManager.NetworkManager.canReplayRequest(request)) {\n SDK.NetworkManager.NetworkManager.replayRequest(request);\n }\n }\n });\n this.dataGrid.element.addEventListener('focus', this.onDataGridFocus.bind(this), true);\n this.dataGrid.element.addEventListener('blur', this.onDataGridBlur.bind(this), true);\n return this.dataGrid;\n }\n\n private dataGridMouseMove(event: Event): void {\n const mouseEvent = (event as MouseEvent);\n const node = (this.dataGrid.dataGridNodeFromNode((mouseEvent.target as Node)));\n const highlightInitiatorChain = mouseEvent.shiftKey;\n this.setHoveredNode(node as NetworkNode, highlightInitiatorChain);\n }\n\n hoveredNode(): NetworkNode|null {\n return this.hoveredNodeInternal;\n }\n\n private setHoveredNode(node: NetworkNode|null, highlightInitiatorChain?: boolean): void {\n if (this.hoveredNodeInternal) {\n this.hoveredNodeInternal.setHovered(false, false);\n }\n this.hoveredNodeInternal = node;\n if (this.hoveredNodeInternal) {\n this.hoveredNodeInternal.setHovered(true, Boolean(highlightInitiatorChain));\n }\n }\n\n private dataGridMouseDown(event: Event): void {\n const mouseEvent = (event as MouseEvent);\n if (!this.dataGrid.selectedNode && mouseEvent.button) {\n mouseEvent.consume();\n }\n }\n\n private updateSummaryBar(): void {\n this.hideRecordingHint();\n\n let transferSize = 0;\n let resourceSize = 0;\n let selectedNodeNumber = 0;\n let selectedTransferSize = 0;\n let selectedResourceSize = 0;\n let baseTime = -1;\n let maxTime = -1;\n\n let nodeCount = 0;\n for (const request of Logs.NetworkLog.NetworkLog.instance().requests()) {\n const node = networkRequestToNode.get(request);\n if (!node) {\n continue;\n }\n nodeCount++;\n const requestTransferSize = request.transferSize;\n transferSize += requestTransferSize;\n const requestResourceSize = request.resourceSize;\n resourceSize += requestResourceSize;\n if (!filteredNetworkRequests.has(node)) {\n selectedNodeNumber++;\n selectedTransferSize += requestTransferSize;\n selectedResourceSize += requestResourceSize;\n }\n const networkManager = SDK.NetworkManager.NetworkManager.forRequest(request);\n // TODO(allada) inspectedURL should be stored in PageLoad used instead of target so HAR requests can have an\n // inspected url.\n if (networkManager && request.url() === networkManager.target().inspectedURL() &&\n request.resourceType() === Common.ResourceType.resourceTypes.Document &&\n networkManager.target().parentTarget()?.type() !== SDK.Target.Type.Frame) {\n baseTime = request.startTime;\n }\n if (request.endTime > maxTime) {\n maxTime = request.endTime;\n }\n }\n\n if (!nodeCount) {\n this.showRecordingHint();\n return;\n }\n\n this.summaryToolbarInternal.removeToolbarItems();\n const appendChunk = (chunk: string, title?: string): HTMLDivElement => {\n const toolbarText = new UI.Toolbar.ToolbarText(chunk);\n toolbarText.setTitle(title ? title : chunk);\n this.summaryToolbarInternal.appendToolbarItem(toolbarText);\n return toolbarText.element as HTMLDivElement;\n };\n\n if (selectedNodeNumber !== nodeCount) {\n appendChunk(i18nString(UIStrings.sSRequests, {PH1: selectedNodeNumber, PH2: nodeCount}));\n this.summaryToolbarInternal.appendSeparator();\n appendChunk(\n i18nString(UIStrings.sSTransferred, {\n PH1: Platform.NumberUtilities.bytesToString(selectedTransferSize),\n PH2: Platform.NumberUtilities.bytesToString(transferSize),\n }),\n i18nString(UIStrings.sBSBTransferredOverNetwork, {PH1: selectedTransferSize, PH2: transferSize}));\n this.summaryToolbarInternal.appendSeparator();\n appendChunk(\n i18nString(UIStrings.sSResources, {\n PH1: Platform.NumberUtilities.bytesToString(selectedResourceSize),\n PH2: Platform.NumberUtilities.bytesToString(resourceSize),\n }),\n i18nString(UIStrings.sBSBResourcesLoadedByThePage, {PH1: selectedResourceSize, PH2: resourceSize}));\n } else {\n appendChunk(i18nString(UIStrings.sRequests, {PH1: nodeCount}));\n this.summaryToolbarInternal.appendSeparator();\n appendChunk(\n i18nString(UIStrings.sTransferred, {PH1: Platform.NumberUtilities.bytesToString(transferSize)}),\n i18nString(UIStrings.sBTransferredOverNetwork, {PH1: transferSize}));\n this.summaryToolbarInternal.appendSeparator();\n appendChunk(\n i18nString(UIStrings.sResources, {PH1: Platform.NumberUtilities.bytesToString(resourceSize)}),\n i18nString(UIStrings.sBResourcesLoadedByThePage, {PH1: resourceSize}));\n }\n\n if (baseTime !== -1 && maxTime !== -1) {\n this.summaryToolbarInternal.appendSeparator();\n appendChunk(i18nString(UIStrings.finishS, {PH1: i18n.TimeUtilities.secondsToString(maxTime - baseTime)}));\n if (this.mainRequestDOMContentLoadedTime !== -1 && this.mainRequestDOMContentLoadedTime > baseTime) {\n this.summaryToolbarInternal.appendSeparator();\n const domContentLoadedText = i18nString(\n UIStrings.domcontentloadedS,\n {PH1: i18n.TimeUtilities.secondsToString(this.mainRequestDOMContentLoadedTime - baseTime)});\n appendChunk(domContentLoadedText).style.color = `var(${NetworkLogView.getDCLEventColor()})`;\n }\n if (this.mainRequestLoadTime !== -1) {\n this.summaryToolbarInternal.appendSeparator();\n const loadText =\n i18nString(UIStrings.loadS, {PH1: i18n.TimeUtilities.secondsToString(this.mainRequestLoadTime - baseTime)});\n appendChunk(loadText).style.color = `var(${NetworkLogView.getLoadEventColor()})`;\n }\n }\n }\n\n scheduleRefresh(): void {\n if (this.needsRefresh) {\n return;\n }\n\n this.needsRefresh = true;\n\n if (this.isShowing()) {\n void coordinator.write('NetworkLogView.render', this.refresh.bind(this));\n }\n }\n\n addFilmStripFrames(times: number[]): void {\n this.columnsInternal.addEventDividers(times, 'network-frame-divider');\n }\n\n selectFilmStripFrame(time: number): void {\n this.columnsInternal.selectFilmStripFrame(time);\n }\n\n clearFilmStripFrame(): void {\n this.columnsInternal.clearFilmStripFrame();\n }\n\n private refreshIfNeeded(): void {\n if (this.needsRefresh) {\n this.refresh();\n }\n }\n\n private invalidateAllItems(deferUpdate?: boolean): void {\n this.staleRequests = new Set(Logs.NetworkLog.NetworkLog.instance().requests().filter(this.isInScope));\n if (deferUpdate) {\n this.scheduleRefresh();\n } else {\n this.refresh();\n }\n }\n\n timeCalculator(): NetworkTimeCalculator {\n return this.timeCalculatorInternal;\n }\n\n calculator(): NetworkTimeCalculator {\n return this.calculatorInternal;\n }\n\n setCalculator(x: NetworkTimeCalculator): void {\n if (!x || this.calculatorInternal === x) {\n return;\n }\n\n if (this.calculatorInternal !== x) {\n this.calculatorInternal = x;\n this.columnsInternal.setCalculator(this.calculatorInternal);\n }\n this.calculatorInternal.reset();\n\n if (this.calculatorInternal.startAtZero) {\n this.columnsInternal.hideEventDividers();\n } else {\n this.columnsInternal.showEventDividers();\n }\n\n this.invalidateAllItems();\n }\n\n private loadEventFired(\n event: Common.EventTarget\n .EventTargetEvent<{resourceTreeModel: SDK.ResourceTreeModel.ResourceTreeModel, loadTime: number}>): void {\n if (!this.recording) {\n return;\n }\n\n const time = event.data.loadTime;\n if (time) {\n this.mainRequestLoadTime = time;\n this.columnsInternal.addEventDividers([time], 'network-load-divider');\n }\n }\n\n private domContentLoadedEventFired(event: Common.EventTarget.EventTargetEvent): void {\n if (!this.recording) {\n return;\n }\n const {data} = event;\n if (data) {\n this.mainRequestDOMContentLoadedTime = data;\n this.columnsInternal.addEventDividers([data], 'network-dcl-divider');\n }\n }\n\n override wasShown(): void {\n this.refreshIfNeeded();\n this.registerCSSFiles([networkLogViewStyles]);\n this.columnsInternal.wasShown();\n }\n\n override willHide(): void {\n this.columnsInternal.willHide();\n }\n\n override onResize(): void {\n this.rowHeightInternal = this.computeRowHeight();\n }\n\n flatNodesList(): NetworkNode[] {\n const rootNode =\n (this.dataGrid.rootNode() as\n DataGrid.ViewportDataGrid.ViewportDataGridNode>);\n return rootNode.flatChildren() as NetworkNode[];\n }\n\n private onDataGridFocus(): void {\n if (this.dataGrid.element.matches(':focus-visible')) {\n this.element.classList.add('grid-focused');\n }\n this.updateNodeBackground();\n }\n\n private onDataGridBlur(): void {\n this.element.classList.remove('grid-focused');\n this.updateNodeBackground();\n }\n\n updateNodeBackground(): void {\n if (this.dataGrid.selectedNode) {\n (this.dataGrid.selectedNode as NetworkNode).updateBackgroundColor();\n }\n }\n\n updateNodeSelectedClass(isSelected: boolean): void {\n if (isSelected) {\n this.element.classList.remove('no-node-selected');\n } else {\n this.element.classList.add('no-node-selected');\n }\n }\n\n stylesChanged(): void {\n this.columnsInternal.scheduleRefresh();\n }\n\n private removeNodeAndMaybeAncestors(node: NetworkRequestNode): void {\n let parent: NetworkNode|\n (DataGrid.DataGrid.DataGridNode>>|\n null) = node.parent;\n if (!parent) {\n return;\n }\n parent.removeChild(node);\n while (parent && !parent.hasChildren() && parent.dataGrid && parent.dataGrid.rootNode() !== parent) {\n const grandparent = (parent.parent as NetworkNode);\n grandparent.removeChild(parent);\n parent = grandparent;\n }\n }\n\n private refresh(): void {\n this.needsRefresh = false;\n\n this.removeAllNodeHighlights();\n\n this.timeCalculatorInternal.updateBoundariesForEventTime(this.mainRequestLoadTime);\n this.durationCalculator.updateBoundariesForEventTime(this.mainRequestLoadTime);\n this.timeCalculatorInternal.updateBoundariesForEventTime(this.mainRequestDOMContentLoadedTime);\n this.durationCalculator.updateBoundariesForEventTime(this.mainRequestDOMContentLoadedTime);\n\n const nodesToInsert = new Map();\n const nodesToRefresh: NetworkNode[] = [];\n\n const staleNodes = new Set();\n\n // While creating nodes it may add more entries into staleRequests because redirect request nodes update the parent\n // node so we loop until we have no more stale requests.\n while (this.staleRequests.size) {\n const request = this.staleRequests.values().next().value;\n this.staleRequests.delete(request);\n let node = networkRequestToNode.get(request);\n if (!node) {\n node = this.createNodeForRequest(request);\n }\n staleNodes.add(node);\n }\n\n for (const node of staleNodes) {\n const isFilteredOut = !this.applyFilter(node);\n if (isFilteredOut && node === this.hoveredNodeInternal) {\n this.setHoveredNode(null);\n }\n\n if (!isFilteredOut) {\n nodesToRefresh.push(node);\n }\n const request = node.request();\n this.timeCalculatorInternal.updateBoundaries(request);\n this.durationCalculator.updateBoundaries(request);\n const newParent = this.parentNodeForInsert(node);\n const wasAlreadyFiltered = filteredNetworkRequests.has(node);\n if (wasAlreadyFiltered === isFilteredOut && node.parent === newParent) {\n continue;\n }\n if (isFilteredOut) {\n filteredNetworkRequests.add(node);\n } else {\n filteredNetworkRequests.delete(node);\n }\n const removeFromParent = node.parent && (isFilteredOut || node.parent !== newParent);\n if (removeFromParent) {\n this.removeNodeAndMaybeAncestors(node);\n }\n\n if (!newParent || isFilteredOut) {\n continue;\n }\n\n if (!newParent.dataGrid && !nodesToInsert.has(newParent)) {\n nodesToInsert.set(newParent, (this.dataGrid.rootNode() as NetworkNode));\n nodesToRefresh.push(newParent);\n }\n nodesToInsert.set(node, newParent);\n }\n\n for (const node of nodesToInsert.keys()) {\n (nodesToInsert.get(node) as NetworkNode).appendChild(node);\n }\n\n for (const node of nodesToRefresh) {\n node.refresh();\n }\n\n this.updateSummaryBar();\n\n if (nodesToInsert.size) {\n this.columnsInternal.sortByCurrentColumn();\n }\n\n this.dataGrid.updateInstantly();\n this.didRefreshForTest();\n }\n\n private didRefreshForTest(): void {\n }\n\n private parentNodeForInsert(node: NetworkRequestNode): NetworkNode|null {\n if (!this.activeGroupLookup) {\n return this.dataGrid.rootNode() as NetworkNode;\n }\n\n const groupNode = this.activeGroupLookup.groupNodeForRequest(node.request());\n if (!groupNode) {\n return this.dataGrid.rootNode() as NetworkNode;\n }\n return groupNode;\n }\n\n private reset(): void {\n this.dispatchEventToListeners(Events.RequestActivated, {showPanel: false});\n\n this.setHoveredNode(null);\n this.columnsInternal.reset();\n\n this.timeFilter = null;\n this.calculatorInternal.reset();\n\n this.timeCalculatorInternal.setWindow(null);\n this.linkifierInternal.reset();\n\n if (this.activeGroupLookup) {\n this.activeGroupLookup.reset();\n }\n this.staleRequests.clear();\n this.resetSuggestionBuilder();\n\n this.mainRequestLoadTime = -1;\n this.mainRequestDOMContentLoadedTime = -1;\n\n this.dataGrid.rootNode().removeChildren();\n this.updateSummaryBar();\n this.dataGrid.setStickToBottom(true);\n this.scheduleRefresh();\n }\n\n // TODO(crbug.com/1477668)\n setTextFilterValue(filterString: string): void {\n this.textFilterUI.setValue(filterString);\n if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.NETWORK_PANEL_FILTER_BAR_REDESIGN)) {\n this.networkHideDataURLSetting.set(false);\n this.networkShowBlockedCookiesOnlySetting.set(false);\n this.networkOnlyBlockedRequestsSetting.set(false);\n this.networkOnlyThirdPartySetting.set(false);\n this.networkHideChromeExtensions.set(false);\n } else {\n this.dataURLFilterUI?.setChecked(false);\n this.onlyBlockedResponseCookiesFilterUI?.setChecked(false);\n this.onlyBlockedRequestsUI?.setChecked(false);\n this.onlyThirdPartyFilterUI?.setChecked(false);\n this.hideChromeExtensionsUI?.setChecked(false);\n }\n this.resourceCategoryFilterUI.reset();\n }\n\n private createNodeForRequest(request: SDK.NetworkRequest.NetworkRequest): NetworkRequestNode {\n const node = new NetworkRequestNode(this, request);\n networkRequestToNode.set(request, node);\n filteredNetworkRequests.add(node);\n\n for (let redirect = request.redirectSource(); redirect; redirect = redirect.redirectSource()) {\n this.refreshRequest(redirect);\n }\n return node;\n }\n\n private isInScope(request: SDK.NetworkRequest.NetworkRequest): boolean {\n const networkManager = SDK.NetworkManager.NetworkManager.forRequest(request);\n return !networkManager || SDK.TargetManager.TargetManager.instance().isInScope(networkManager);\n }\n\n private onRequestUpdated(event: Common.EventTarget.EventTargetEvent): void {\n const request = event.data;\n if (this.isInScope(request)) {\n this.refreshRequest(request);\n }\n }\n\n private onRequestRemoved(event: Common.EventTarget.EventTargetEvent): void {\n const request = event.data;\n this.staleRequests.delete(request);\n const node = networkRequestToNode.get(request);\n if (node) {\n this.removeNodeAndMaybeAncestors(node);\n }\n }\n\n private refreshRequest(request: SDK.NetworkRequest.NetworkRequest): void {\n NetworkLogView.subdomains(request.domain)\n .forEach(\n this.suggestionBuilder.addItem.bind(this.suggestionBuilder, NetworkForward.UIFilter.FilterType.Domain));\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Method, request.requestMethod);\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.MimeType, request.mimeType);\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Scheme, String(request.scheme));\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.StatusCode, String(request.statusCode));\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.ResourceType, request.resourceType().name());\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Url, request.securityOrigin());\n\n const priority = request.priority();\n if (priority) {\n this.suggestionBuilder.addItem(\n NetworkForward.UIFilter.FilterType.Priority, PerfUI.NetworkPriorities.uiLabelForNetworkPriority(priority));\n }\n\n if (request.mixedContentType !== Protocol.Security.MixedContentType.None) {\n this.suggestionBuilder.addItem(\n NetworkForward.UIFilter.FilterType.MixedContent, NetworkForward.UIFilter.MixedContentFilterValues.All);\n }\n\n if (request.mixedContentType === Protocol.Security.MixedContentType.OptionallyBlockable) {\n this.suggestionBuilder.addItem(\n NetworkForward.UIFilter.FilterType.MixedContent, NetworkForward.UIFilter.MixedContentFilterValues.Displayed);\n }\n\n if (request.mixedContentType === Protocol.Security.MixedContentType.Blockable) {\n const suggestion = request.wasBlocked() ? NetworkForward.UIFilter.MixedContentFilterValues.Blocked :\n NetworkForward.UIFilter.MixedContentFilterValues.BlockOverridden;\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.MixedContent, suggestion);\n }\n\n const responseHeaders = request.responseHeaders;\n for (const responseHeader of responseHeaders) {\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasResponseHeader, responseHeader.name);\n if (responseHeader.name === 'Set-Cookie') {\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.ResponseHeaderValueSetCookie);\n }\n }\n\n for (const cookie of request.responseCookies) {\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.SetCookieDomain, cookie.domain());\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.SetCookieName, cookie.name());\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.SetCookieValue, cookie.value());\n }\n\n for (const cookie of request.allCookiesIncludingBlockedOnes()) {\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.CookieDomain, cookie.domain());\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.CookieName, cookie.name());\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.CookiePath, cookie.path());\n this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.CookieValue, cookie.value());\n }\n\n this.staleRequests.add(request);\n this.scheduleRefresh();\n }\n\n rowHeight(): number {\n return this.rowHeightInternal;\n }\n\n switchViewMode(gridMode: boolean): void {\n this.columnsInternal.switchViewMode(gridMode);\n }\n\n handleContextMenuForRequest(contextMenu: UI.ContextMenu.ContextMenu, request: SDK.NetworkRequest.NetworkRequest):\n void {\n contextMenu.appendApplicableItems(request);\n let copyMenu = contextMenu.clipboardSection().appendSubMenuItem(i18nString(UIStrings.copy));\n const footerSection = copyMenu.footerSection();\n if (request) {\n copyMenu.defaultSection().appendItem(\n UI.UIUtils.copyLinkAddressLabel(),\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText.bind(\n Host.InspectorFrontendHost.InspectorFrontendHostInstance, request.contentURL()));\n if (request.requestHeadersText()) {\n copyMenu.defaultSection().appendItem(\n i18nString(UIStrings.copyRequestHeaders), NetworkLogView.copyRequestHeaders.bind(null, request));\n }\n\n if (request.responseHeadersText) {\n copyMenu.defaultSection().appendItem(\n i18nString(UIStrings.copyResponseHeaders), NetworkLogView.copyResponseHeaders.bind(null, request));\n }\n\n if (request.finished) {\n copyMenu.defaultSection().appendItem(\n i18nString(UIStrings.copyResponse), NetworkLogView.copyResponse.bind(null, request));\n }\n\n const initiator = request.initiator();\n\n if (initiator) {\n const stack = initiator.stack;\n if (stack) {\n // We proactively compute the stacktrace text, as we can't determine whether the stacktrace\n // has any context solely based on the top frame. Sometimes, the top frame does not have\n // any callFrames, but its parent frames do.\n const stackTraceText = computeStackTraceText(stack);\n if (stackTraceText !== '') {\n copyMenu.defaultSection().appendItem(i18nString(UIStrings.copyStacktrace), () => {\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(stackTraceText);\n });\n }\n }\n }\n\n const disableIfBlob = request.isBlobRequest();\n if (Host.Platform.isWin()) {\n footerSection.appendItem(\n i18nString(UIStrings.copyAsPowershell), this.copyPowerShellCommand.bind(this, request),\n {disabled: disableIfBlob});\n footerSection.appendItem(\n i18nString(UIStrings.copyAsFetch), this.copyFetchCall.bind(this, request, FetchStyle.Browser),\n {disabled: disableIfBlob});\n footerSection.appendItem(\n i18nString(UIStrings.copyAsNodejsFetch), this.copyFetchCall.bind(this, request, FetchStyle.NodeJs),\n {disabled: disableIfBlob});\n footerSection.appendItem(\n i18nString(UIStrings.copyAsCurlCmd), this.copyCurlCommand.bind(this, request, 'win'),\n {disabled: disableIfBlob});\n footerSection.appendItem(\n i18nString(UIStrings.copyAsCurlBash), this.copyCurlCommand.bind(this, request, 'unix'),\n {disabled: disableIfBlob});\n footerSection.appendItem(i18nString(UIStrings.copyAllAsPowershell), this.copyAllPowerShellCommand.bind(this));\n footerSection.appendItem(\n i18nString(UIStrings.copyAllAsFetch), this.copyAllFetchCall.bind(this, FetchStyle.Browser));\n footerSection.appendItem(\n i18nString(UIStrings.copyAllAsNodejsFetch), this.copyAllFetchCall.bind(this, FetchStyle.NodeJs));\n footerSection.appendItem(i18nString(UIStrings.copyAllAsCurlCmd), this.copyAllCurlCommand.bind(this, 'win'));\n footerSection.appendItem(i18nString(UIStrings.copyAllAsCurlBash), this.copyAllCurlCommand.bind(this, 'unix'));\n } else {\n footerSection.appendItem(\n i18nString(UIStrings.copyAsPowershell), this.copyPowerShellCommand.bind(this, request),\n {disabled: disableIfBlob});\n footerSection.appendItem(\n i18nString(UIStrings.copyAsFetch), this.copyFetchCall.bind(this, request, FetchStyle.Browser),\n {disabled: disableIfBlob});\n footerSection.appendItem(\n i18nString(UIStrings.copyAsNodejsFetch), this.copyFetchCall.bind(this, request, FetchStyle.NodeJs),\n {disabled: disableIfBlob});\n footerSection.appendItem(\n i18nString(UIStrings.copyAsCurl), this.copyCurlCommand.bind(this, request, 'unix'),\n {disabled: disableIfBlob});\n footerSection.appendItem(i18nString(UIStrings.copyAllAsPowershell), this.copyAllPowerShellCommand.bind(this));\n footerSection.appendItem(\n i18nString(UIStrings.copyAllAsFetch), this.copyAllFetchCall.bind(this, FetchStyle.Browser));\n footerSection.appendItem(\n i18nString(UIStrings.copyAllAsNodejsFetch), this.copyAllFetchCall.bind(this, FetchStyle.NodeJs));\n footerSection.appendItem(i18nString(UIStrings.copyAllAsCurl), this.copyAllCurlCommand.bind(this, 'unix'));\n }\n } else {\n copyMenu = contextMenu.clipboardSection().appendSubMenuItem(i18nString(UIStrings.copy));\n }\n footerSection.appendItem(i18nString(UIStrings.copyAllAsHar), this.copyAll.bind(this));\n\n contextMenu.saveSection().appendItem(i18nString(UIStrings.saveAllAsHarWithContent), this.exportAll.bind(this));\n contextMenu.overrideSection().appendItem(\n i18nString(UIStrings.overrideHeaders), this.#handleCreateResponseHeaderOverrideClick.bind(this, request));\n\n contextMenu.editSection().appendItem(i18nString(UIStrings.clearBrowserCache), this.clearBrowserCache.bind(this));\n contextMenu.editSection().appendItem(\n i18nString(UIStrings.clearBrowserCookies), this.clearBrowserCookies.bind(this));\n\n if (request) {\n const maxBlockedURLLength = 20;\n const manager = SDK.NetworkManager.MultitargetNetworkManager.instance();\n let patterns = manager.blockedPatterns();\n\n function addBlockedURL(url: string): void {\n patterns.push({enabled: true, url: url as Platform.DevToolsPath.UrlString});\n manager.setBlockedPatterns(patterns);\n manager.setBlockingEnabled(true);\n void UI.ViewManager.ViewManager.instance().showView('network.blocked-urls');\n }\n\n function removeBlockedURL(url: string): void {\n patterns = patterns.filter(pattern => pattern.url !== url);\n manager.setBlockedPatterns(patterns);\n void UI.ViewManager.ViewManager.instance().showView('network.blocked-urls');\n }\n\n const urlWithoutScheme = request.parsedURL.urlWithoutScheme();\n if (urlWithoutScheme && !patterns.find(pattern => pattern.url === urlWithoutScheme)) {\n contextMenu.debugSection().appendItem(\n i18nString(UIStrings.blockRequestUrl), addBlockedURL.bind(null, urlWithoutScheme));\n } else if (urlWithoutScheme) {\n const croppedURL = Platform.StringUtilities.trimMiddle(urlWithoutScheme, maxBlockedURLLength);\n contextMenu.debugSection().appendItem(\n i18nString(UIStrings.unblockS, {PH1: croppedURL}), removeBlockedURL.bind(null, urlWithoutScheme));\n }\n\n const domain = request.parsedURL.domain();\n if (domain && !patterns.find(pattern => pattern.url === domain)) {\n contextMenu.debugSection().appendItem(\n i18nString(UIStrings.blockRequestDomain), addBlockedURL.bind(null, domain));\n } else if (domain) {\n const croppedDomain = Platform.StringUtilities.trimMiddle(domain, maxBlockedURLLength);\n contextMenu.debugSection().appendItem(\n i18nString(UIStrings.unblockS, {PH1: croppedDomain}), removeBlockedURL.bind(null, domain));\n }\n\n if (SDK.NetworkManager.NetworkManager.canReplayRequest(request)) {\n contextMenu.debugSection().appendItem(\n i18nString(UIStrings.replayXhr), SDK.NetworkManager.NetworkManager.replayRequest.bind(null, request));\n }\n }\n }\n\n private harRequests(): SDK.NetworkRequest.NetworkRequest[] {\n return Logs.NetworkLog.NetworkLog.instance()\n .requests()\n .filter(NetworkLogView.getHTTPRequestsFilter)\n .filter(request => {\n return request.finished ||\n (request.resourceType() === Common.ResourceType.resourceTypes.WebSocket && request.responseReceivedTime);\n });\n }\n\n private async copyAll(): Promise {\n const harArchive = {log: await HAR.Log.Log.build(this.harRequests())};\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(JSON.stringify(harArchive, null, 2));\n }\n\n private async copyCurlCommand(request: SDK.NetworkRequest.NetworkRequest, platform: string): Promise {\n const command = await NetworkLogView.generateCurlCommand(request, platform);\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(command);\n }\n\n private async copyAllCurlCommand(platform: string): Promise {\n const commands = await this.generateAllCurlCommand(Logs.NetworkLog.NetworkLog.instance().requests(), platform);\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(commands);\n }\n\n private async copyFetchCall(request: SDK.NetworkRequest.NetworkRequest, style: FetchStyle): Promise {\n const command = await this.generateFetchCall(request, style);\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(command);\n }\n\n private async copyAllFetchCall(style: FetchStyle): Promise {\n const commands = await this.generateAllFetchCall(Logs.NetworkLog.NetworkLog.instance().requests(), style);\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(commands);\n }\n\n private async copyPowerShellCommand(request: SDK.NetworkRequest.NetworkRequest): Promise {\n const command = await this.generatePowerShellCommand(request);\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(command);\n }\n\n private async copyAllPowerShellCommand(): Promise {\n const commands = await this.generateAllPowerShellCommand(Logs.NetworkLog.NetworkLog.instance().requests());\n Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(commands);\n }\n\n async exportAll(): Promise {\n const mainTarget = SDK.TargetManager.TargetManager.instance().scopeTarget();\n if (!mainTarget) {\n return;\n }\n const url = mainTarget.inspectedURL();\n const parsedURL = Common.ParsedURL.ParsedURL.fromString(url);\n const filename = (parsedURL ? parsedURL.host : 'network-log') as Platform.DevToolsPath.RawPathString;\n const stream = new Bindings.FileUtils.FileOutputStream();\n\n if (!await stream.open(Common.ParsedURL.ParsedURL.concatenate(filename, '.har'))) {\n return;\n }\n\n const progressIndicator = new UI.ProgressIndicator.ProgressIndicator();\n this.progressBarContainer.appendChild(progressIndicator.element);\n await HAR.Writer.Writer.write(stream, this.harRequests(), progressIndicator);\n progressIndicator.done();\n void stream.close();\n }\n\n async #handleCreateResponseHeaderOverrideClick(request: SDK.NetworkRequest.NetworkRequest): Promise {\n const requestLocation =\n NetworkForward.UIRequestLocation.UIRequestLocation.responseHeaderMatch(request, {name: '', value: ''});\n const networkPersistanceManager = Persistence.NetworkPersistenceManager.NetworkPersistenceManager.instance();\n if (networkPersistanceManager.project()) {\n Common.Settings.Settings.instance().moduleSetting('persistenceNetworkOverridesEnabled').set(true);\n await networkPersistanceManager.getOrCreateHeadersUISourceCodeFromUrl(request.url());\n await Common.Revealer.reveal(requestLocation);\n } else { // If folder for local overrides has not been provided yet\n UI.InspectorView.InspectorView.instance().displaySelectOverrideFolderInfobar(async(): Promise