@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 51.7 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as Host from"../../core/host/host.js";import*as i18n from"../../core/i18n/i18n.js";import*as Platform from"../../core/platform/platform.js";import*as Root from"../../core/root/root.js";import*as SDK from"../../core/sdk/sdk.js";import*as Bindings from"../../models/bindings/bindings.js";import*as HAR from"../../models/har/har.js";import*as Logs from"../../models/logs/logs.js";import*as Persistence from"../../models/persistence/persistence.js";import*as TextUtils from"../../models/text_utils/text_utils.js";import*as NetworkForward from"../../panels/network/forward/forward.js";import*as Sources from"../../panels/sources/sources.js";import*as Coordinator from"../../ui/components/render_coordinator/render_coordinator.js";import*as DataGrid from"../../ui/legacy/components/data_grid/data_grid.js";import*as PerfUI from"../../ui/legacy/components/perf_ui/perf_ui.js";import*as Components from"../../ui/legacy/components/utils/utils.js";import*as UI from"../../ui/legacy/legacy.js";import networkLogViewStyles from"./networkLogView.css.js";import{Events,NetworkGroupNode,NetworkRequestNode}from"./NetworkDataGridNode.js";import{NetworkFrameGrouper}from"./NetworkFrameGrouper.js";import{NetworkLogViewColumns}from"./NetworkLogViewColumns.js";import{NetworkTimeBoundary,NetworkTransferDurationCalculator,NetworkTransferTimeCalculator}from"./NetworkTimeCalculator.js";const UIStrings={invertFilter:"Invert",invertsFilter:"Inverts the search filter",hideDataUrls:"Hide data URLs",hidesDataAndBlobUrls:"Hide 'data:' and 'blob:' URLs",chromeExtensions:"Hide extension URLs",hideChromeExtension:"Hide 'chrome-extension://' URLs",resourceTypesToInclude:"Resource types to include",hasBlockedCookies:"Blocked response cookies",onlyShowRequestsWithBlockedCookies:"Show only the requests with blocked response cookies",blockedRequests:"Blocked requests",onlyShowBlockedRequests:"Show only blocked requests",thirdParty:"3rd-party requests",onlyShowThirdPartyRequests:"Show only requests with origin different from page origin",dropHarFilesHere:"Drop HAR files here",recordingNetworkActivity:"Recording network activity…",performARequestOrHitSToRecordThe:"Perform a request or hit {PH1} to record the reload.",recordToDisplayNetworkActivity:"Record network log ({PH1}) to display network activity.",learnMore:"Learn more",networkDataAvailable:"Network Data Available",sSRequests:"{PH1} / {PH2} requests",sSTransferred:"{PH1} / {PH2} transferred",sBSBTransferredOverNetwork:"{PH1} B / {PH2} B transferred over network",sSResources:"{PH1} / {PH2} resources",sBSBResourcesLoadedByThePage:"{PH1} B / {PH2} B resources loaded by the page",sRequests:"{PH1} requests",sTransferred:"{PH1} transferred",sBTransferredOverNetwork:"{PH1} B transferred over network",sResources:"{PH1} resources",sBResourcesLoadedByThePage:"{PH1} B resources loaded by the page",finishS:"Finish: {PH1}",domcontentloadedS:"DOMContentLoaded: {PH1}",loadS:"Load: {PH1}",copy:"Copy",copyRequestHeaders:"Copy request headers",copyResponseHeaders:"Copy response headers",copyResponse:"Copy response",copyStacktrace:"Copy stack trace",copyAsPowershell:"Copy as `PowerShell`",copyAsFetch:"Copy as `fetch`",copyAsNodejsFetch:"Copy as `Node.js` `fetch`",copyAsCurlCmd:"Copy as `cURL` (`cmd`)",copyAsCurlBash:"Copy as `cURL` (`bash`)",copyAllAsPowershell:"Copy all as `PowerShell`",copyAllAsFetch:"Copy all as `fetch`",copyAllAsNodejsFetch:"Copy all as `Node.js` `fetch`",copyAllAsCurlCmd:"Copy all as `cURL` (`cmd`)",copyAllAsCurlBash:"Copy all as `cURL` (`bash`)",copyAsCurl:"Copy as `cURL`",copyAllAsCurl:"Copy all as `cURL`",copyAllAsHar:"Copy all as `HAR`",saveAllAsHarWithContent:"Save all as `HAR` with content",clearBrowserCache:"Clear browser cache",clearBrowserCookies:"Clear browser cookies",blockRequestUrl:"Block request URL",unblockS:"Unblock {PH1}",blockRequestDomain:"Block request domain",replayXhr:"Replay XHR",areYouSureYouWantToClearBrowser:"Are you sure you want to clear browser cache?",areYouSureYouWantToClearBrowserCookies:"Are you sure you want to clear browser cookies?",overrideHeaders:"Override headers"},str_=i18n.i18n.registerUIStrings("panels/network/NetworkLogView.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_),coordinator=Coordinator.RenderCoordinator.RenderCoordinator.instance();export class NetworkLogView extends(Common.ObjectWrapper.eventMixin(UI.Widget.VBox)){networkInvertFilterSetting;networkHideDataURLSetting;networkHideChromeExtensions;networkShowBlockedCookiesOnlySetting;networkOnlyBlockedRequestsSetting;networkOnlyThirdPartySetting;networkResourceTypeFiltersSetting;rawRowHeight;progressBarContainer;networkLogLargeRowsSetting;rowHeightInternal;timeCalculatorInternal;durationCalculator;calculatorInternal;columnsInternal;staleRequests;mainRequestLoadTime;mainRequestDOMContentLoadedTime;filters;timeFilter;hoveredNodeInternal;recordingHint;highlightedNode;linkifierInternal;recording;needsRefresh;headerHeightInternal;groupLookups;activeGroupLookup;textFilterUI;invertFilterUI;dataURLFilterUI;resourceCategoryFilterUI;onlyBlockedResponseCookiesFilterUI;onlyBlockedRequestsUI;onlyThirdPartyFilterUI;hideChromeExtensionsUI;filterParser;suggestionBuilder;dataGrid;summaryToolbarInternal;filterBar;textFilterSetting;constructor(e,t,r){function i(){this.rawRowHeight=Boolean(this.networkLogLargeRowsSetting.get())?41:21,this.rowHeightInternal=this.computeRowHeight()}super(),this.setMinimumSize(50,64),this.element.id="network-container",this.element.classList.add("no-node-selected"),this.networkInvertFilterSetting=Common.Settings.Settings.instance().createSetting("networkInvertFilter",!1),this.networkHideDataURLSetting=Common.Settings.Settings.instance().createSetting("networkHideDataURL",!1),this.networkHideChromeExtensions=Common.Settings.Settings.instance().createSetting("networkHideChromeExtensions",!1),this.networkShowBlockedCookiesOnlySetting=Common.Settings.Settings.instance().createSetting("networkShowBlockedCookiesOnlySetting",!1),this.networkOnlyBlockedRequestsSetting=Common.Settings.Settings.instance().createSetting("networkOnlyBlockedRequests",!1),this.networkOnlyThirdPartySetting=Common.Settings.Settings.instance().createSetting("networkOnlyThirdPartySetting",!1),this.networkResourceTypeFiltersSetting=Common.Settings.Settings.instance().createSetting("networkResourceTypeFilters",{}),this.rawRowHeight=0,this.progressBarContainer=t,this.networkLogLargeRowsSetting=r,this.networkLogLargeRowsSetting.addChangeListener(i.bind(this),this),this.rawRowHeight=0,this.rowHeightInternal=0,i.call(this),this.timeCalculatorInternal=new NetworkTransferTimeCalculator,this.durationCalculator=new NetworkTransferDurationCalculator,this.calculatorInternal=this.timeCalculatorInternal,this.columnsInternal=new NetworkLogViewColumns(this,this.timeCalculatorInternal,this.durationCalculator,r),this.columnsInternal.show(this.element),this.staleRequests=new Set,this.mainRequestLoadTime=-1,this.mainRequestDOMContentLoadedTime=-1,this.filters=[],this.timeFilter=null,this.hoveredNodeInternal=null,this.recordingHint=null,this.highlightedNode=null,this.linkifierInternal=new Components.Linkifier.Linkifier,this.recording=!1,this.needsRefresh=!1,this.headerHeightInternal=0,this.groupLookups=new Map,this.groupLookups.set("Frame",new NetworkFrameGrouper(this)),this.activeGroupLookup=null,this.textFilterUI=new UI.FilterBar.TextFilterUI,this.textFilterUI.addEventListener("FilterChanged",this.filterChanged,this),e.addFilter(this.textFilterUI),this.invertFilterUI=new UI.FilterBar.CheckboxFilterUI("invert-filter",i18nString(UIStrings.invertFilter),!0,this.networkInvertFilterSetting),this.invertFilterUI.addEventListener("FilterChanged",this.filterChanged.bind(this),this),UI.Tooltip.Tooltip.install(this.invertFilterUI.element(),i18nString(UIStrings.invertsFilter)),e.addFilter(this.invertFilterUI),this.dataURLFilterUI=new UI.FilterBar.CheckboxFilterUI("hide-data-url",i18nString(UIStrings.hideDataUrls),!0,this.networkHideDataURLSetting),this.dataURLFilterUI.addEventListener("FilterChanged",this.filterChanged.bind(this),this),UI.Tooltip.Tooltip.install(this.dataURLFilterUI.element(),i18nString(UIStrings.hidesDataAndBlobUrls)),e.addFilter(this.dataURLFilterUI),this.hideChromeExtensionsUI=new UI.FilterBar.CheckboxFilterUI("chrome-extension",i18nString(UIStrings.chromeExtensions),!0,this.networkHideChromeExtensions),this.hideChromeExtensionsUI.addEventListener("FilterChanged",this.filterChanged.bind(this),this),UI.Tooltip.Tooltip.install(this.hideChromeExtensionsUI.element(),i18nString(UIStrings.hideChromeExtension)),e.addFilter(this.hideChromeExtensionsUI);const o=Object.values(Common.ResourceType.resourceCategories).map((e=>({name:e.title(),label:()=>e.shortTitle(),title:e.title()})));this.resourceCategoryFilterUI=new UI.FilterBar.NamedBitSetFilterUI(o,this.networkResourceTypeFiltersSetting),UI.ARIAUtils.setLabel(this.resourceCategoryFilterUI.element(),i18nString(UIStrings.resourceTypesToInclude)),this.resourceCategoryFilterUI.addEventListener("FilterChanged",this.filterChanged.bind(this),this),e.addFilter(this.resourceCategoryFilterUI),this.onlyBlockedResponseCookiesFilterUI=new UI.FilterBar.CheckboxFilterUI("only-show-blocked-cookies",i18nString(UIStrings.hasBlockedCookies),!0,this.networkShowBlockedCookiesOnlySetting),this.onlyBlockedResponseCookiesFilterUI.addEventListener("FilterChanged",this.filterChanged.bind(this),this),UI.Tooltip.Tooltip.install(this.onlyBlockedResponseCookiesFilterUI.element(),i18nString(UIStrings.onlyShowRequestsWithBlockedCookies)),e.addFilter(this.onlyBlockedResponseCookiesFilterUI),this.onlyBlockedRequestsUI=new UI.FilterBar.CheckboxFilterUI("only-show-blocked-requests",i18nString(UIStrings.blockedRequests),!0,this.networkOnlyBlockedRequestsSetting),this.onlyBlockedRequestsUI.addEventListener("FilterChanged",this.filterChanged.bind(this),this),UI.Tooltip.Tooltip.install(this.onlyBlockedRequestsUI.element(),i18nString(UIStrings.onlyShowBlockedRequests)),e.addFilter(this.onlyBlockedRequestsUI),this.onlyThirdPartyFilterUI=new UI.FilterBar.CheckboxFilterUI("only-show-third-party",i18nString(UIStrings.thirdParty),!0,this.networkOnlyThirdPartySetting),this.onlyThirdPartyFilterUI.addEventListener("FilterChanged",this.filterChanged.bind(this),this),UI.Tooltip.Tooltip.install(this.onlyThirdPartyFilterUI.element(),i18nString(UIStrings.onlyShowThirdPartyRequests)),e.addFilter(this.onlyThirdPartyFilterUI),this.filterParser=new TextUtils.TextUtils.FilterParser(searchKeys),this.suggestionBuilder=new UI.FilterSuggestionBuilder.FilterSuggestionBuilder(searchKeys,NetworkLogView.sortSearchValues),this.resetSuggestionBuilder(),this.dataGrid=this.columnsInternal.dataGrid(),this.setupDataGrid(),this.columnsInternal.sortByCurrentColumn(),e.filterButton().addEventListener(UI.Toolbar.ToolbarButton.Events.Click,this.dataGrid.scheduleUpdate.bind(this.dataGrid,!0)),this.summaryToolbarInternal=new UI.Toolbar.Toolbar("network-summary-bar",this.element),this.summaryToolbarInternal.element.setAttribute("role","status"),new UI.DropTarget.DropTarget(this.element,[UI.DropTarget.Type.File],i18nString(UIStrings.dropHarFilesHere),this.handleDrop.bind(this)),Common.Settings.Settings.instance().moduleSetting("networkColorCodeResourceTypes").addChangeListener(this.invalidateAllItems.bind(this,!1),this),SDK.TargetManager.TargetManager.instance().observeModels(SDK.NetworkManager.NetworkManager,this,{scoped:!0}),Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.RequestAdded,this.onRequestUpdated,this),Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.RequestUpdated,this.onRequestUpdated,this),Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.RequestRemoved,this.onRequestRemoved,this),Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.Reset,this.reset,this),this.updateGroupByFrame(),Common.Settings.Settings.instance().moduleSetting("network.group-by-frame").addChangeListener((()=>this.updateGroupByFrame())),this.filterBar=e,this.textFilterSetting=Common.Settings.Settings.instance().createSetting("networkTextFilter",""),this.textFilterSetting.get()&&this.textFilterUI.setValue(this.textFilterSetting.get())}updateGroupByFrame(){const e=Common.Settings.Settings.instance().moduleSetting("network.group-by-frame").get();this.setGrouping(e?"Frame":null)}static sortSearchValues(e,t){e===NetworkForward.UIFilter.FilterType.Priority?t.sort(((e,t)=>{const r=PerfUI.NetworkPriorities.uiLabelToNetworkPriority(e),i=PerfUI.NetworkPriorities.uiLabelToNetworkPriority(t);return PerfUI.NetworkPriorities.networkPriorityWeight(r)-PerfUI.NetworkPriorities.networkPriorityWeight(i)})):t.sort()}static negativeFilter(e,t){return!e(t)}static requestPathFilter(e,t){return!!e&&e.test(t.path()+"/"+t.name())}static subdomains(e){const t=[e];let r=e.indexOf(".");for(;-1!==r;)t.push("*"+e.substring(r)),r=e.indexOf(".",r+1);return t}static createRequestDomainFilter(e){const t=e.split("*").map(Platform.StringUtilities.escapeForRegExp).join(".*");return NetworkLogView.requestDomainFilter.bind(null,new RegExp("^"+t+"$","i"))}static requestDomainFilter(e,t){return e.test(t.domain)}static runningRequestFilter(e){return!e.finished}static fromCacheRequestFilter(e){return e.cached()}static interceptedByServiceWorkerFilter(e){return e.fetchedViaServiceWorker}static initiatedByServiceWorkerFilter(e){return e.initiatedByServiceWorker()}static requestResponseHeaderFilter(e,t){return void 0!==t.responseHeaderValue(e)}static requestResponseHeaderSetCookieFilter(e,t){return Boolean(t.responseHeaderValue("Set-Cookie")?.includes(e))}static requestMethodFilter(e,t){return t.requestMethod===e}static requestPriorityFilter(e,t){return t.priority()===e}static requestMimeTypeFilter(e,t){return t.mimeType===e}static requestMixedContentFilter(e,t){return e===NetworkForward.UIFilter.MixedContentFilterValues.Displayed?"optionally-blockable"===t.mixedContentType:e===NetworkForward.UIFilter.MixedContentFilterValues.Blocked?"blockable"===t.mixedContentType&&t.wasBlocked():e===NetworkForward.UIFilter.MixedContentFilterValues.BlockOverridden?"blockable"===t.mixedContentType&&!t.wasBlocked():e===NetworkForward.UIFilter.MixedContentFilterValues.All&&"none"!==t.mixedContentType}static requestSchemeFilter(e,t){return t.scheme===e}static requestCookieDomainFilter(e,t){return t.allCookiesIncludingBlockedOnes().some((t=>t.domain()===e))}static requestCookieNameFilter(e,t){return t.allCookiesIncludingBlockedOnes().some((t=>t.name()===e))}static requestCookiePathFilter(e,t){return t.allCookiesIncludingBlockedOnes().some((t=>t.path()===e))}static requestCookieValueFilter(e,t){return t.allCookiesIncludingBlockedOnes().some((t=>t.value()===e))}static requestSetCookieDomainFilter(e,t){return t.responseCookies.some((t=>t.domain()===e))}static requestSetCookieNameFilter(e,t){return t.responseCookies.some((t=>t.name()===e))}static requestSetCookieValueFilter(e,t){return t.responseCookies.some((t=>t.value()===e))}static requestSizeLargerThanFilter(e,t){return t.transferSize>=e}static statusCodeFilter(e,t){return String(t.statusCode)===e}static hasOverridesFilter(e,t){return!!e&&(e===overrideFilter.no?0===t.overrideTypes.length:e===overrideFilter.yes?t.overrideTypes.length>0:e===overrideFilter.content?t.overrideTypes.includes("content"):e===overrideFilter.headers?t.overrideTypes.includes("headers"):t.overrideTypes.join(",").includes(e))}static getHTTPRequestsFilter(e){return e.parsedURL.isValid&&e.scheme in HTTPSchemas}static resourceTypeFilter(e,t){return t.resourceType().name()===e}static requestUrlFilter(e,t){return new RegExp(Platform.StringUtilities.escapeForRegExp(e),"i").test(t.url())}static requestTimeFilter(e,t,r){return!(r.issueTime()>t)&&!(-1!==r.endTime&&r.endTime<e)}static copyRequestHeaders(e){Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(e.requestHeadersText())}static copyResponseHeaders(e){Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(e.responseHeadersText)}static async copyResponse(e){const t=await e.contentData();let r=t.content||"";e.contentType().isTextType()?t.encoded&&r&&(r=window.atob(r)):r=TextUtils.ContentProvider.contentAsDataURL(r,e.mimeType,t.encoded),Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(r)}handleDrop(e){const t=e.items;if(!t.length)return;const r=t[0].getAsFile();r&&this.onLoadFromFile(r)}async onLoadFromFile(e){const t=new Common.StringOutputStream.StringOutputStream,r=new Bindings.FileUtils.ChunkedFileReader(e,1e7);if(!await r.read(t)){const e=r.error();return void(e&&this.harLoadFailed(e.message))}let i;try{i=new HAR.HARFormat.HARRoot(JSON.parse(t.data()))}catch(e){return void this.harLoadFailed(e)}Logs.NetworkLog.NetworkLog.instance().importRequests(HAR.Importer.Importer.requestsFromHARLog(i.log))}harLoadFailed(e){Common.Console.Console.instance().error("Failed to load HAR file with following error: "+e)}setGrouping(e){this.activeGroupLookup&&this.activeGroupLookup.reset();const t=e&&this.groupLookups.get(e)||null;this.activeGroupLookup=t,this.invalidateAllItems()}computeRowHeight(){return Math.round(this.rawRowHeight*window.devicePixelRatio)/window.devicePixelRatio}nodeForRequest(e){return networkRequestToNode.get(e)||null}headerHeight(){return this.headerHeightInternal}setRecording(e){this.recording=e,this.updateSummaryBar()}columns(){return this.columnsInternal}summaryToolbar(){return this.summaryToolbarInternal}modelAdded(e){const t=e.target();if(t.outermostTarget()!==t)return;const r=t.model(SDK.ResourceTreeModel.ResourceTreeModel);r&&(r.addEventListener(SDK.ResourceTreeModel.Events.Load,this.loadEventFired,this),r.addEventListener(SDK.ResourceTreeModel.Events.DOMContentLoaded,this.domContentLoadedEventFired,this));for(const e of Logs.NetworkLog.NetworkLog.instance().requests())this.isInScope(e)&&this.refreshRequest(e)}modelRemoved(e){const t=e.target();if(t.outermostTarget()!==t)return;const r=t.model(SDK.ResourceTreeModel.ResourceTreeModel);r&&(r.removeEventListener(SDK.ResourceTreeModel.Events.Load,this.loadEventFired,this),r.removeEventListener(SDK.ResourceTreeModel.Events.DOMContentLoaded,this.domContentLoadedEventFired,this));Common.Settings.Settings.instance().moduleSetting("network_log.preserve-log").get()||this.reset()}linkifier(){return this.linkifierInternal}setWindow(e,t){e||t?(this.timeFilter=NetworkLogView.requestTimeFilter.bind(null,e,t),this.timeCalculatorInternal.setWindow(new NetworkTimeBoundary(e,t))):(this.timeFilter=null,this.timeCalculatorInternal.setWindow(null)),this.filterRequests()}resetFocus(){this.dataGrid.element.focus()}resetSuggestionBuilder(){this.suggestionBuilder.clear(),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Is,NetworkForward.UIFilter.IsFilterType.Running),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Is,NetworkForward.UIFilter.IsFilterType.FromCache),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Is,NetworkForward.UIFilter.IsFilterType.ServiceWorkerIntercepted),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Is,NetworkForward.UIFilter.IsFilterType.ServiceWorkerInitiated),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.LargerThan,"100"),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.LargerThan,"10k"),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.LargerThan,"1M"),this.textFilterUI.setSuggestionProvider(this.suggestionBuilder.completions.bind(this.suggestionBuilder)),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasOverrides,overrideFilter.yes),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasOverrides,overrideFilter.no),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasOverrides,overrideFilter.content),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasOverrides,overrideFilter.headers)}filterChanged(){this.removeAllNodeHighlights(),this.parseFilterQuery(this.textFilterUI.value(),this.invertFilterUI.checked()),this.filterRequests(),this.textFilterSetting.set(this.textFilterUI.value())}async resetFilter(){this.textFilterUI.clear()}showRecordingHint(){this.hideRecordingHint(),this.recordingHint=this.element.createChild("div","network-status-pane fill");const e=this.recordingHint.createChild("div","recording-hint");if(this.recording){let t=null;const r=UI.ShortcutRegistry.ShortcutRegistry.instance().shortcutsForAction("inspector_main.reload")[0];r&&(t=this.recordingHint.createChild("b"),t.textContent=r.title());e.createChild("span").textContent=i18nString(UIStrings.recordingNetworkActivity),t&&(e.createChild("br"),e.appendChild(i18n.i18n.getFormatLocalizedString(str_,UIStrings.performARequestOrHitSToRecordThe,{PH1:t})))}else{const t=e.createChild("b");t.textContent=UI.ShortcutRegistry.ShortcutRegistry.instance().shortcutTitleForAction("network.toggle-recording")||"",e.appendChild(i18n.i18n.getFormatLocalizedString(str_,UIStrings.recordToDisplayNetworkActivity,{PH1:t}))}e.createChild("br"),e.appendChild(UI.XLink.XLink.create("https://developer.chrome.com/docs/devtools/network/?utm_source=devtools&utm_campaign=2019Q1",i18nString(UIStrings.learnMore))),this.setHidden(!0)}hideRecordingHint(){this.setHidden(!1),this.recordingHint&&this.recordingHint.remove(),UI.ARIAUtils.alert(i18nString(UIStrings.networkDataAvailable)),this.recordingHint=null}setHidden(e){this.columnsInternal.setHidden(e),UI.ARIAUtils.setHidden(this.summaryToolbarInternal.element,e)}elementsToRestoreScrollPositionsFor(){return this.dataGrid?[this.dataGrid.scrollContainer]:[]}columnExtensionResolved(){this.invalidateAllItems(!0)}setupDataGrid(){return this.dataGrid.setRowContextMenuCallback(((e,t)=>{const r=t.request();r&&this.handleContextMenuForRequest(e,r)})),this.dataGrid.setStickToBottom(!0),this.dataGrid.setName("networkLog"),this.dataGrid.setResizeMethod(DataGrid.DataGrid.ResizeMethod.Last),this.dataGrid.element.classList.add("network-log-grid"),this.dataGrid.element.addEventListener("mousedown",this.dataGridMouseDown.bind(this),!0),this.dataGrid.element.addEventListener("mousemove",this.dataGridMouseMove.bind(this),!0),this.dataGrid.element.addEventListener("mouseleave",(()=>this.setHoveredNode(null)),!0),this.dataGrid.element.addEventListener("keydown",(e=>{if("ArrowRight"===e.key&&this.dataGrid.selectedNode){const e=this.dataGrid.selectedNode.element().querySelector("span.devtools-link");e&&e.focus()}Platform.KeyboardUtilities.isEnterOrSpaceKey(e)&&(this.dispatchEventToListeners(Events.RequestActivated,{showPanel:!0,takeFocus:!0}),e.consume(!0))})),this.dataGrid.element.addEventListener("keyup",(e=>{if(("r"===e.key||"R"===e.key)&&this.dataGrid.selectedNode){const e=this.dataGrid.selectedNode.request();if(!e)return;SDK.NetworkManager.NetworkManager.canReplayRequest(e)&&SDK.NetworkManager.NetworkManager.replayRequest(e)}})),this.dataGrid.element.addEventListener("focus",this.onDataGridFocus.bind(this),!0),this.dataGrid.element.addEventListener("blur",this.onDataGridBlur.bind(this),!0),this.dataGrid}dataGridMouseMove(e){const t=e,r=this.dataGrid.dataGridNodeFromNode(t.target),i=t.shiftKey;this.setHoveredNode(r,i)}hoveredNode(){return this.hoveredNodeInternal}setHoveredNode(e,t){this.hoveredNodeInternal&&this.hoveredNodeInternal.setHovered(!1,!1),this.hoveredNodeInternal=e,this.hoveredNodeInternal&&this.hoveredNodeInternal.setHovered(!0,Boolean(t))}dataGridMouseDown(e){const t=e;!this.dataGrid.selectedNode&&t.button&&t.consume()}updateSummaryBar(){this.hideRecordingHint();let e=0,t=0,r=0,i=0,o=0,s=-1,n=-1,a=0;for(const l of Logs.NetworkLog.NetworkLog.instance().requests()){const d=networkRequestToNode.get(l);if(!d)continue;a++;const c=l.transferSize;e+=c;const u=l.resourceSize;t+=u,filteredNetworkRequests.has(d)||(r++,i+=c,o+=u);const h=SDK.NetworkManager.NetworkManager.forRequest(l);h&&l.url()===h.target().inspectedURL()&&l.resourceType()===Common.ResourceType.resourceTypes.Document&&h.target().parentTarget()?.type()!==SDK.Target.Type.Frame&&(s=l.startTime),l.endTime>n&&(n=l.endTime)}if(!a)return void this.showRecordingHint();this.summaryToolbarInternal.removeToolbarItems();const l=(e,t)=>{const r=new UI.Toolbar.ToolbarText(e);return r.setTitle(t||e),this.summaryToolbarInternal.appendToolbarItem(r),r.element};if(r!==a?(l(i18nString(UIStrings.sSRequests,{PH1:r,PH2:a})),this.summaryToolbarInternal.appendSeparator(),l(i18nString(UIStrings.sSTransferred,{PH1:Platform.NumberUtilities.bytesToString(i),PH2:Platform.NumberUtilities.bytesToString(e)}),i18nString(UIStrings.sBSBTransferredOverNetwork,{PH1:i,PH2:e})),this.summaryToolbarInternal.appendSeparator(),l(i18nString(UIStrings.sSResources,{PH1:Platform.NumberUtilities.bytesToString(o),PH2:Platform.NumberUtilities.bytesToString(t)}),i18nString(UIStrings.sBSBResourcesLoadedByThePage,{PH1:o,PH2:t}))):(l(i18nString(UIStrings.sRequests,{PH1:a})),this.summaryToolbarInternal.appendSeparator(),l(i18nString(UIStrings.sTransferred,{PH1:Platform.NumberUtilities.bytesToString(e)}),i18nString(UIStrings.sBTransferredOverNetwork,{PH1:e})),this.summaryToolbarInternal.appendSeparator(),l(i18nString(UIStrings.sResources,{PH1:Platform.NumberUtilities.bytesToString(t)}),i18nString(UIStrings.sBResourcesLoadedByThePage,{PH1:t}))),-1!==s&&-1!==n){if(this.summaryToolbarInternal.appendSeparator(),l(i18nString(UIStrings.finishS,{PH1:i18n.TimeUtilities.secondsToString(n-s)})),-1!==this.mainRequestDOMContentLoadedTime&&this.mainRequestDOMContentLoadedTime>s){this.summaryToolbarInternal.appendSeparator();l(i18nString(UIStrings.domcontentloadedS,{PH1:i18n.TimeUtilities.secondsToString(this.mainRequestDOMContentLoadedTime-s)})).style.color=`var(${NetworkLogView.getDCLEventColor()})`}if(-1!==this.mainRequestLoadTime){this.summaryToolbarInternal.appendSeparator();l(i18nString(UIStrings.loadS,{PH1:i18n.TimeUtilities.secondsToString(this.mainRequestLoadTime-s)})).style.color=`var(${NetworkLogView.getLoadEventColor()})`}}}scheduleRefresh(){this.needsRefresh||(this.needsRefresh=!0,this.isShowing()&&coordinator.write("NetworkLogView.render",this.refresh.bind(this)))}addFilmStripFrames(e){this.columnsInternal.addEventDividers(e,"network-frame-divider")}selectFilmStripFrame(e){this.columnsInternal.selectFilmStripFrame(e)}clearFilmStripFrame(){this.columnsInternal.clearFilmStripFrame()}refreshIfNeeded(){this.needsRefresh&&this.refresh()}invalidateAllItems(e){this.staleRequests=new Set(Logs.NetworkLog.NetworkLog.instance().requests().filter(this.isInScope)),e?this.scheduleRefresh():this.refresh()}timeCalculator(){return this.timeCalculatorInternal}calculator(){return this.calculatorInternal}setCalculator(e){e&&this.calculatorInternal!==e&&(this.calculatorInternal!==e&&(this.calculatorInternal=e,this.columnsInternal.setCalculator(this.calculatorInternal)),this.calculatorInternal.reset(),this.calculatorInternal.startAtZero?this.columnsInternal.hideEventDividers():this.columnsInternal.showEventDividers(),this.invalidateAllItems())}loadEventFired(e){if(!this.recording)return;const t=e.data.loadTime;t&&(this.mainRequestLoadTime=t,this.columnsInternal.addEventDividers([t],"network-load-divider"))}domContentLoadedEventFired(e){if(!this.recording)return;const{data:t}=e;t&&(this.mainRequestDOMContentLoadedTime=t,this.columnsInternal.addEventDividers([t],"network-dcl-divider"))}wasShown(){this.refreshIfNeeded(),this.registerCSSFiles([networkLogViewStyles]),this.columnsInternal.wasShown()}willHide(){this.columnsInternal.willHide()}onResize(){this.rowHeightInternal=this.computeRowHeight()}flatNodesList(){return this.dataGrid.rootNode().flatChildren()}onDataGridFocus(){this.dataGrid.element.matches(":focus-visible")&&this.element.classList.add("grid-focused"),this.updateNodeBackground()}onDataGridBlur(){this.element.classList.remove("grid-focused"),this.updateNodeBackground()}updateNodeBackground(){this.dataGrid.selectedNode&&this.dataGrid.selectedNode.updateBackgroundColor()}updateNodeSelectedClass(e){e?this.element.classList.remove("no-node-selected"):this.element.classList.add("no-node-selected")}stylesChanged(){this.columnsInternal.scheduleRefresh()}removeNodeAndMaybeAncestors(e){let t=e.parent;if(t)for(t.removeChild(e);t&&!t.hasChildren()&&t.dataGrid&&t.dataGrid.rootNode()!==t;){const e=t.parent;e.removeChild(t),t=e}}refresh(){this.needsRefresh=!1,this.removeAllNodeHighlights(),this.timeCalculatorInternal.updateBoundariesForEventTime(this.mainRequestLoadTime),this.durationCalculator.updateBoundariesForEventTime(this.mainRequestLoadTime),this.timeCalculatorInternal.updateBoundariesForEventTime(this.mainRequestDOMContentLoadedTime),this.durationCalculator.updateBoundariesForEventTime(this.mainRequestDOMContentLoadedTime);const e=new Map,t=[],r=new Set;for(;this.staleRequests.size;){const e=this.staleRequests.values().next().value;this.staleRequests.delete(e);let t=networkRequestToNode.get(e);t||(t=this.createNodeForRequest(e)),r.add(t)}for(const i of r){const r=!this.applyFilter(i);r&&i===this.hoveredNodeInternal&&this.setHoveredNode(null),r||t.push(i);const o=i.request();this.timeCalculatorInternal.updateBoundaries(o),this.durationCalculator.updateBoundaries(o);const s=this.parentNodeForInsert(i);if(filteredNetworkRequests.has(i)===r&&i.parent===s)continue;r?filteredNetworkRequests.add(i):filteredNetworkRequests.delete(i);i.parent&&(r||i.parent!==s)&&this.removeNodeAndMaybeAncestors(i),s&&!r&&(s.dataGrid||e.has(s)||(e.set(s,this.dataGrid.rootNode()),t.push(s)),e.set(i,s))}for(const t of e.keys())e.get(t).appendChild(t);for(const e of t)e.refresh();this.updateSummaryBar(),e.size&&this.columnsInternal.sortByCurrentColumn(),this.dataGrid.updateInstantly(),this.didRefreshForTest()}didRefreshForTest(){}parentNodeForInsert(e){if(!this.activeGroupLookup)return this.dataGrid.rootNode();const t=this.activeGroupLookup.groupNodeForRequest(e.request());return t||this.dataGrid.rootNode()}reset(){this.dispatchEventToListeners(Events.RequestActivated,{showPanel:!1}),this.setHoveredNode(null),this.columnsInternal.reset(),this.timeFilter=null,this.calculatorInternal.reset(),this.timeCalculatorInternal.setWindow(null),this.linkifierInternal.reset(),this.activeGroupLookup&&this.activeGroupLookup.reset(),this.staleRequests.clear(),this.resetSuggestionBuilder(),this.mainRequestLoadTime=-1,this.mainRequestDOMContentLoadedTime=-1,this.dataGrid.rootNode().removeChildren(),this.updateSummaryBar(),this.dataGrid.setStickToBottom(!0),this.scheduleRefresh()}setTextFilterValue(e){this.textFilterUI.setValue(e),this.dataURLFilterUI.setChecked(!1),this.onlyBlockedResponseCookiesFilterUI.setChecked(!1),this.onlyBlockedRequestsUI.setChecked(!1),this.hideChromeExtensionsUI.setChecked(!1),this.resourceCategoryFilterUI.reset()}createNodeForRequest(e){const t=new NetworkRequestNode(this,e);networkRequestToNode.set(e,t),filteredNetworkRequests.add(t);for(let t=e.redirectSource();t;t=t.redirectSource())this.refreshRequest(t);return t}isInScope(e){const t=SDK.NetworkManager.NetworkManager.forRequest(e);return!t||SDK.TargetManager.TargetManager.instance().isInScope(t)}onRequestUpdated(e){const t=e.data;this.isInScope(t)&&this.refreshRequest(t)}onRequestRemoved(e){const t=e.data;this.staleRequests.delete(t);const r=networkRequestToNode.get(t);r&&this.removeNodeAndMaybeAncestors(r)}refreshRequest(e){NetworkLogView.subdomains(e.domain).forEach(this.suggestionBuilder.addItem.bind(this.suggestionBuilder,NetworkForward.UIFilter.FilterType.Domain)),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Method,e.requestMethod),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.MimeType,e.mimeType),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Scheme,String(e.scheme)),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.StatusCode,String(e.statusCode)),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.ResourceType,e.resourceType().name()),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Url,e.securityOrigin());const t=e.priority();if(t&&this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.Priority,PerfUI.NetworkPriorities.uiLabelForNetworkPriority(t)),"none"!==e.mixedContentType&&this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.MixedContent,NetworkForward.UIFilter.MixedContentFilterValues.All),"optionally-blockable"===e.mixedContentType&&this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.MixedContent,NetworkForward.UIFilter.MixedContentFilterValues.Displayed),"blockable"===e.mixedContentType){const t=e.wasBlocked()?NetworkForward.UIFilter.MixedContentFilterValues.Blocked:NetworkForward.UIFilter.MixedContentFilterValues.BlockOverridden;this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.MixedContent,t)}const r=e.responseHeaders;for(const e of r)this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasResponseHeader,e.name),"Set-Cookie"===e.name&&this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.ResponseHeaderValueSetCookie);for(const t of e.responseCookies)this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.SetCookieDomain,t.domain()),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.SetCookieName,t.name()),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.SetCookieValue,t.value());for(const t of e.allCookiesIncludingBlockedOnes())this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.CookieDomain,t.domain()),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.CookieName,t.name()),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.CookiePath,t.path()),this.suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.CookieValue,t.value());this.staleRequests.add(e),this.scheduleRefresh()}rowHeight(){return this.rowHeightInternal}switchViewMode(e){this.columnsInternal.switchViewMode(e)}handleContextMenuForRequest(e,t){e.appendApplicableItems(t);let r=e.clipboardSection().appendSubMenuItem(i18nString(UIStrings.copy));const i=r.footerSection();if(t){r.defaultSection().appendItem(UI.UIUtils.copyLinkAddressLabel(),Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText.bind(Host.InspectorFrontendHost.InspectorFrontendHostInstance,t.contentURL())),t.requestHeadersText()&&r.defaultSection().appendItem(i18nString(UIStrings.copyRequestHeaders),NetworkLogView.copyRequestHeaders.bind(null,t)),t.responseHeadersText&&r.defaultSection().appendItem(i18nString(UIStrings.copyResponseHeaders),NetworkLogView.copyResponseHeaders.bind(null,t)),t.finished&&r.defaultSection().appendItem(i18nString(UIStrings.copyResponse),NetworkLogView.copyResponse.bind(null,t));const o=t.initiator();if(o){const n=o.stack;if(n){const a=computeStackTraceText(n);""!==a&&r.defaultSection().appendItem(i18nString(UIStrings.copyStacktrace),(()=>{Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(a)}))}}const s=t.isBlobRequest();Host.Platform.isWin()?(i.appendItem(i18nString(UIStrings.copyAsPowershell),this.copyPowerShellCommand.bind(this,t),s),i.appendItem(i18nString(UIStrings.copyAsFetch),this.copyFetchCall.bind(this,t,0),s),i.appendItem(i18nString(UIStrings.copyAsNodejsFetch),this.copyFetchCall.bind(this,t,1),s),i.appendItem(i18nString(UIStrings.copyAsCurlCmd),this.copyCurlCommand.bind(this,t,"win"),s),i.appendItem(i18nString(UIStrings.copyAsCurlBash),this.copyCurlCommand.bind(this,t,"unix"),s),i.appendItem(i18nString(UIStrings.copyAllAsPowershell),this.copyAllPowerShellCommand.bind(this)),i.appendItem(i18nString(UIStrings.copyAllAsFetch),this.copyAllFetchCall.bind(this,0)),i.appendItem(i18nString(UIStrings.copyAllAsNodejsFetch),this.copyAllFetchCall.bind(this,1)),i.appendItem(i18nString(UIStrings.copyAllAsCurlCmd),this.copyAllCurlCommand.bind(this,"win")),i.appendItem(i18nString(UIStrings.copyAllAsCurlBash),this.copyAllCurlCommand.bind(this,"unix"))):(i.appendItem(i18nString(UIStrings.copyAsPowershell),this.copyPowerShellCommand.bind(this,t),s),i.appendItem(i18nString(UIStrings.copyAsFetch),this.copyFetchCall.bind(this,t,0),s),i.appendItem(i18nString(UIStrings.copyAsNodejsFetch),this.copyFetchCall.bind(this,t,1),s),i.appendItem(i18nString(UIStrings.copyAsCurl),this.copyCurlCommand.bind(this,t,"unix"),s),i.appendItem(i18nString(UIStrings.copyAllAsPowershell),this.copyAllPowerShellCommand.bind(this)),i.appendItem(i18nString(UIStrings.copyAllAsFetch),this.copyAllFetchCall.bind(this,0)),i.appendItem(i18nString(UIStrings.copyAllAsNodejsFetch),this.copyAllFetchCall.bind(this,1)),i.appendItem(i18nString(UIStrings.copyAllAsCurl),this.copyAllCurlCommand.bind(this,"unix")))}else r=e.clipboardSection().appendSubMenuItem(i18nString(UIStrings.copy));if(i.appendItem(i18nString(UIStrings.copyAllAsHar),this.copyAll.bind(this)),e.saveSection().appendItem(i18nString(UIStrings.saveAllAsHarWithContent),this.exportAll.bind(this)),Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.HEADER_OVERRIDES)&&e.overrideSection().appendItem(i18nString(UIStrings.overrideHeaders),this.#e.bind(this,t)),e.editSection().appendItem(i18nString(UIStrings.clearBrowserCache),this.clearBrowserCache.bind(this)),e.editSection().appendItem(i18nString(UIStrings.clearBrowserCookies),this.clearBrowserCookies.bind(this)),t){const l=20,d=SDK.NetworkManager.MultitargetNetworkManager.instance();let c=d.blockedPatterns();function u(e){c.push({enabled:!0,url:e}),d.setBlockedPatterns(c),d.setBlockingEnabled(!0),UI.ViewManager.ViewManager.instance().showView("network.blocked-urls")}function h(e){c=c.filter((t=>t.url!==e)),d.setBlockedPatterns(c),UI.ViewManager.ViewManager.instance().showView("network.blocked-urls")}const g=t.parsedURL.urlWithoutScheme();if(g&&!c.find((e=>e.url===g)))e.debugSection().appendItem(i18nString(UIStrings.blockRequestUrl),u.bind(null,g));else if(g){const m=Platform.StringUtilities.trimMiddle(g,l);e.debugSection().appendItem(i18nString(UIStrings.unblockS,{PH1:m}),h.bind(null,g))}const p=t.parsedURL.domain();if(p&&!c.find((e=>e.url===p)))e.debugSection().appendItem(i18nString(UIStrings.blockRequestDomain),u.bind(null,p));else if(p){const w=Platform.StringUtilities.trimMiddle(p,l);e.debugSection().appendItem(i18nString(UIStrings.unblockS,{PH1:w}),h.bind(null,p))}SDK.NetworkManager.NetworkManager.canReplayRequest(t)&&e.debugSection().appendItem(i18nString(UIStrings.replayXhr),SDK.NetworkManager.NetworkManager.replayRequest.bind(null,t))}}harRequests(){return Logs.NetworkLog.NetworkLog.instance().requests().filter(NetworkLogView.getHTTPRequestsFilter).filter((e=>e.finished||e.resourceType()===Common.ResourceType.resourceTypes.WebSocket&&e.responseReceivedTime))}async copyAll(){const e={log:await HAR.Log.Log.build(this.harRequests())};Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(JSON.stringify(e,null,2))}async copyCurlCommand(e,t){const r=await NetworkLogView.generateCurlCommand(e,t);Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(r)}async copyAllCurlCommand(e){const t=await this.generateAllCurlCommand(Logs.NetworkLog.NetworkLog.instance().requests(),e);Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(t)}async copyFetchCall(e,t){const r=await this.generateFetchCall(e,t);Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(r)}async copyAllFetchCall(e){const t=await this.generateAllFetchCall(Logs.NetworkLog.NetworkLog.instance().requests(),e);Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(t)}async copyPowerShellCommand(e){const t=await this.generatePowerShellCommand(e);Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(t)}async copyAllPowerShellCommand(){const e=await this.generateAllPowerShellCommand(Logs.NetworkLog.NetworkLog.instance().requests());Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(e)}async exportAll(){const e=SDK.TargetManager.TargetManager.instance().scopeTarget();if(!e)return;const t=e.inspectedURL(),r=Common.ParsedURL.ParsedURL.fromString(t),i=r?r.host:"network-log",o=new Bindings.FileUtils.FileOutputStream;if(!await o.open(Common.ParsedURL.ParsedURL.concatenate(i,".har")))return;const s=new UI.ProgressIndicator.ProgressIndicator;this.progressBarContainer.appendChild(s.element),await HAR.Writer.Writer.write(o,this.harRequests(),s),s.done(),o.close()}async#e(e){const t=NetworkForward.UIRequestLocation.UIRequestLocation.responseHeaderMatch(e,{name:"",value:""}),r=Persistence.NetworkPersistenceManager.NetworkPersistenceManager.instance();r.project()?(Common.Settings.Settings.instance().moduleSetting("persistenceNetworkOverridesEnabled").set(!0),await r.getOrCreateHeadersUISourceCodeFromUrl(e.url()),await Common.Revealer.reveal(t)):UI.InspectorView.InspectorView.instance().displaySelectOverrideFolderInfobar((async()=>{await Sources.SourcesNavigator.OverridesNavigatorView.instance().setupNewWorkspace(),await r.getOrCreateHeadersUISourceCodeFromUrl(e.url()),await Common.Revealer.reveal(t)}))}clearBrowserCache(){confirm(i18nString(UIStrings.areYouSureYouWantToClearBrowser))&&SDK.NetworkManager.MultitargetNetworkManager.instance().clearBrowserCache()}clearBrowserCookies(){confirm(i18nString(UIStrings.areYouSureYouWantToClearBrowserCookies))&&SDK.NetworkManager.MultitargetNetworkManager.instance().clearBrowserCookies()}removeAllHighlights(){this.removeAllNodeHighlights()}applyFilter(e){const t=e.request();if(this.timeFilter&&!this.timeFilter(t))return!1;const r=t.resourceType().category().title();if(!this.resourceCategoryFilterUI.accept(r))return!1;if(this.dataURLFilterUI.checked()&&(t.parsedURL.isDataURL()||t.parsedURL.isBlobURL()))return!1;if(this.onlyBlockedResponseCookiesFilterUI.checked()&&!t.blockedResponseCookies().length)return!1;if(this.onlyBlockedRequestsUI.checked()&&!t.wasBlocked()&&!t.corsErrorStatus())return!1;if(this.onlyThirdPartyFilterUI.checked()&&t.isSameSite())return!1;if(this.hideChromeExtensionsUI.checked()&&"chrome-extension"===t.scheme)return!1;for(let e=0;e<this.filters.length;++e)if(!this.filters[e](t))return!1;return!0}isValidUrl(e){try{return new URL(e),!0}catch(e){return!1}}parseFilterQuery(e,t){const r=this.filterParser.parse(e);this.filters=r.map((e=>{const r=e.key,i=e.text||"",o=e.regex;let s;if(r){const e=Platform.StringUtilities.escapeForRegExp(r+":"+i);s=this.createSpecialFilter(r,i)||NetworkLogView.requestPathFilter.bind(null,new RegExp(e,"i"))}else s=e.regex?NetworkLogView.requestPathFilter.bind(null,o):this.isValidUrl(i)?NetworkLogView.requestUrlFilter.bind(null,i):NetworkLogView.requestPathFilter.bind(null,new RegExp(Platform.StringUtilities.escapeForRegExp(i),"i"));return e.negative&&!t||!e.negative&&t?NetworkLogView.negativeFilter.bind(null,s):s}))}createSpecialFilter(e,t){switch(e){case NetworkForward.UIFilter.FilterType.Domain:return NetworkLogView.createRequestDomainFilter(t);case NetworkForward.UIFilter.FilterType.HasResponseHeader:return NetworkLogView.requestResponseHeaderFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.ResponseHeaderValueSetCookie:return NetworkLogView.requestResponseHeaderSetCookieFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.Is:if(t.toLowerCase()===NetworkForward.UIFilter.IsFilterType.Running)return NetworkLogView.runningRequestFilter;if(t.toLowerCase()===NetworkForward.UIFilter.IsFilterType.FromCache)return NetworkLogView.fromCacheRequestFilter;if(t.toLowerCase()===NetworkForward.UIFilter.IsFilterType.ServiceWorkerIntercepted)return NetworkLogView.interceptedByServiceWorkerFilter;if(t.toLowerCase()===NetworkForward.UIFilter.IsFilterType.ServiceWorkerInitiated)return NetworkLogView.initiatedByServiceWorkerFilter;break;case NetworkForward.UIFilter.FilterType.LargerThan:return this.createSizeFilter(t.toLowerCase());case NetworkForward.UIFilter.FilterType.Method:return NetworkLogView.requestMethodFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.MimeType:return NetworkLogView.requestMimeTypeFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.MixedContent:return NetworkLogView.requestMixedContentFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.Scheme:return NetworkLogView.requestSchemeFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.SetCookieDomain:return NetworkLogView.requestSetCookieDomainFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.SetCookieName:return NetworkLogView.requestSetCookieNameFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.SetCookieValue:return NetworkLogView.requestSetCookieValueFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.CookieDomain:return NetworkLogView.requestCookieDomainFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.CookieName:return NetworkLogView.requestCookieNameFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.CookiePath:return NetworkLogView.requestCookiePathFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.CookieValue:return NetworkLogView.requestCookieValueFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.Priority:return NetworkLogView.requestPriorityFilter.bind(null,PerfUI.NetworkPriorities.uiLabelToNetworkPriority(t));case NetworkForward.UIFilter.FilterType.StatusCode:return NetworkLogView.statusCodeFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.HasOverrides:return NetworkLogView.hasOverridesFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.ResourceType:return NetworkLogView.resourceTypeFilter.bind(null,t);case NetworkForward.UIFilter.FilterType.Url:return NetworkLogView.requestUrlFilter.bind(null,t)}return null}createSizeFilter(e){let t=1;e.endsWith("k")?(t=1e3,e=e.substring(0,e.length-1)):e.endsWith("m")&&(t=1e6,e=e.substring(0,e.length-1));const r=Number(e);return isNaN(r)?null:NetworkLogView.requestSizeLargerThanFilter.bind(null,r*t)}filterRequests(){this.removeAllHighlights(),this.invalidateAllItems()}reveal(e){this.removeAllNodeHighlights();const t=networkRequestToNode.get(e);return t&&t.dataGrid?(t.parent&&t.parent instanceof NetworkGroupNode&&(t.parent.reveal(),t.parent.expand()),t.reveal(),t):null}revealAndHighlightRequest(e){const t=this.reveal(e);t&&this.highlightNode(t)}revealAndHighlightRequestWithId(e){const t=Logs.NetworkLog.NetworkLog.instance().requestByManagerAndId(e.manager,e.requestId);t&&this.revealAndHighlightRequest(t)}selectRequest(e,t){const{clearFilter:r}=t||{clearFilter:!0};r&&this.setTextFilterValue("");const i=this.reveal(e);i&&i.select()}removeAllNodeHighlights(){this.highlightedNode&&(this.highlightedNode.element().classList.remove("highlighted-row"),this.highlightedNode=null)}highlightNode(e){UI.UIUtils.runCSSAnimationOnce(e.element(),"highlighted-row"),this.highlightedNode=e}filterOutBlobRequests(e){return e.filter((e=>!e.isBlobRequest()))}async generateFetchCall(e,t){const r=new Set(["method","path","scheme","version","accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via","user-agent"]),i=new Set(["cookie","authorization"]),o=JSON.stringify(e.url()),s=e.requestHeaders(),n=s.reduce(((e,t)=>{const i=t.name;return r.has(i.toLowerCase())||i.includes(":")||e.append(i,t.value),e}),new Headers),a={};for(const e of n)a[e[0]]=e[1];const l=e.includedRequestCookies().length||s.some((({name:e})=>i.has(e.toLowerCase())))?"include":"omit",d=s.find((({name:e})=>"referer"===e.toLowerCase())),c=d?d.value:void 0,u=e.referrerPolicy()||void 0,h=await e.requestFormData(),g={headers:Object.keys(a).length?a:void 0,referrer:c,referrerPolicy:u,body:h,method:e.requestMethod,mode:"cors"};if(1===t){const e=s.find((e=>"cookie"===e.name.toLowerCase())),t={};delete g.mode,e&&(t.cookie=e.value),c&&(delete g.referrer,t.Referer=c),c&&(delete g.referrerPolicy,t["Referrer-Policy"]=u),Object.keys(t).length&&(g.headers={...a,...t})}else g.credentials=l;return`fetch(${o}, ${JSON.stringify(g,null,2)});`}async generateAllFetchCall(e,t){const r=this.filterOutBlobRequests(e);return(await Promise.all(r.map((e=>this.generateFetchCall(e,t))))).join(" ;\n")}static async generateCurlCommand(e,t){let r=[];const i=new Set(["accept-encoding","host","method","path","scheme","version"]);const o="win"===t?function(e){const t=/[\r\n]/.test(e)?'^"':'"';return t+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/[^a-zA-Z0-9\s_\-:=+~'\/.',?;()*`&]/g,"^$&").replace(/%(?=[a-zA-Z0-9_])/g,"%^").replace(/\r?\n/g,"^\n\n")+t}:function(e){return/[\0-\x1F\x7F-\x9F!]|\'/.test(e)?"$'"+e.replace(/\\/g,"\\\\").replace(/\'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\0-\x1F\x7F-\x9F!]/g,(function(e){let t=e.charCodeAt(0).toString(16);for(;t.length<4;)t="0"+t;return"\\u"+t}))+"'":"'"+e+"'"};r.push(o(e.url()).replace(/[[{}\]]/g,"\\$&"));let s="GET";const n=[],a=await e.requestFormData();a&&(n.push("--data-raw "+o(a)),i.add("content-length"),s="POST"),e.requestMethod!==s&&r.push("-X "+o(e.requestMethod));const l=e.requestHeaders();for(let e=0;e<l.length;e++){const t=l[e],s=t.name.replace(/^:/,"");i.has(s.toLowerCase())||(t.value.trim()?r.push("-H "+o(s+": "+t.value)):r.push("-H "+o(s+";")))}return r=r.concat(n),r.push("--compressed"),"insecure"===e.securityState()&&r.push("--insecure"),"curl "+r.join(r.length>=3?"win"===t?" ^\n ":" \\\n ":" ")}async generateAllCurlCommand(e,t){const r=this.filterOutBlobRequests(e),i=await Promise.all(r.map((e=>NetworkLogView.generateCurlCommand(e,t))));return"win"===t?i.join(" &\r\n"):i.join(" ;\n")}async generatePowerShellCommand(e){const t=[],r=new Set(["host","connection","proxy-connection","content-length","expect","range","content-type","user-agent","cookie"]);function i(e){return'"'+e.replace(/[`\$"]/g,"`$&").replace(/[^\x20-\x7E]/g,(e=>"$([char]"+e.charCodeAt(0)+")"))+'"'}t.push("-Uri "+i(e.url())),"GET"!==e.requestMethod&&t.push("-Method "+i(e.requestMethod));const o=function(e){const t=[],r=e.requestHeaders().find((({name:e})=>"user-agent"===e.toLowerCase()));r&&t.push(`$session.UserAgen