@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 25.5 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 SDK from"../../core/sdk/sdk.js";import*as Bindings from"../../models/bindings/bindings.js";import*as Logs from"../../models/logs/logs.js";import*as TraceEngine from"../../models/trace/trace.js";import*as Workspace from"../../models/workspace/workspace.js";import*as NetworkForward from"../../panels/network/forward/forward.js";import*as IconButton from"../../ui/components/icon_button/icon_button.js";import*as PerfUI from"../../ui/legacy/components/perf_ui/perf_ui.js";import*as UI from"../../ui/legacy/legacy.js";import*as MobileThrottling from"../mobile_throttling/mobile_throttling.js";import*as Search from"../search/search.js";import{BlockedURLsPane}from"./BlockedURLsPane.js";import{Events}from"./NetworkDataGridNode.js";import{NetworkItemView}from"./NetworkItemView.js";import{NetworkLogView}from"./NetworkLogView.js";import{NetworkOverview}from"./NetworkOverview.js";import networkPanelStyles from"./networkPanel.css.js";import{NetworkSearchScope}from"./NetworkSearchScope.js";import{NetworkTransferTimeCalculator}from"./NetworkTimeCalculator.js";const UIStrings={close:"Close",search:"Search",doNotClearLogOnPageReload:"Do not clear log on page reload / navigation",preserveLog:"Preserve log",disableCacheWhileDevtoolsIsOpen:"Disable cache (while DevTools is open)",disableCache:"Disable cache",networkSettings:"Network settings",showMoreInformationInRequestRows:"Show more information in request rows",useLargeRequestRows:"Big request rows",showOverviewOfNetworkRequests:"Show overview of network requests",showOverview:"Overview",groupRequestsByTopLevelRequest:"Group requests by top level request frame",groupByFrame:"Group by frame",captureScreenshotsWhenLoadingA:"Capture screenshots when loading a page",captureScreenshots:"Screenshots",importHarFile:"Import `HAR` file...",exportHar:"Export `HAR`...",throttling:"Throttling",hitSToReloadAndCaptureFilmstrip:"Hit {PH1} to reload and capture filmstrip.",revealInNetworkPanel:"Reveal in Network panel",recordingFrames:"Recording frames...",fetchingFrames:"Fetching frames...",moreNetworkConditions:"More network conditions…"},str_=i18n.i18n.registerUIStrings("panels/network/NetworkPanel.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);let networkPanelInstance,contextMenuProviderInstance,requestRevealerInstance,requestIdRevealerInstance,networkLogWithFilterRevealerInstance,networkActionDelegateInstance,requestLocationRevealerInstance,searchNetworkViewInstance;export class NetworkPanel extends UI.Panel.Panel{networkLogShowOverviewSetting;networkLogLargeRowsSetting;networkRecordFilmStripSetting;toggleRecordAction;pendingStopTimer;networkItemView;filmStripView;filmStripRecorder;currentRequest;panelToolbar;rightToolbar;filterBar;settingsPane;showSettingsPaneSetting;filmStripPlaceholderElement;overviewPane;networkOverview;overviewPlaceholderElement;calculator;splitWidget;sidebarLocation;progressBarContainer;networkLogView;fileSelectorElement;detailsWidget;closeButtonElement;preserveLogSetting;recordLogSetting;throttlingSelect;displayScreenshotDelay;constructor(e){super("network"),this.displayScreenshotDelay=e,this.networkLogShowOverviewSetting=Common.Settings.Settings.instance().createSetting("networkLogShowOverview",!0),this.networkLogLargeRowsSetting=Common.Settings.Settings.instance().createSetting("networkLogLargeRows",!1),this.networkRecordFilmStripSetting=Common.Settings.Settings.instance().createSetting("networkRecordFilmStripSetting",!1),this.toggleRecordAction=UI.ActionRegistry.ActionRegistry.instance().action("network.toggle-recording"),this.networkItemView=null,this.filmStripView=null,this.filmStripRecorder=null,this.currentRequest=null;const t=new UI.Widget.VBox,i=t.contentElement.createChild("div","network-toolbar-container");this.panelToolbar=new UI.Toolbar.Toolbar("",i),this.panelToolbar.makeWrappable(!0),this.rightToolbar=new UI.Toolbar.Toolbar("",i),this.filterBar=new UI.FilterBar.FilterBar("networkPanel",!0),this.filterBar.show(t.contentElement),this.filterBar.addEventListener("Changed",this.handleFilterChanged.bind(this)),this.settingsPane=new UI.Widget.HBox,this.settingsPane.element.classList.add("network-settings-pane"),this.settingsPane.show(t.contentElement),this.showSettingsPaneSetting=Common.Settings.Settings.instance().createSetting("networkShowSettingsToolbar",!1),this.showSettingsPaneSetting.addChangeListener(this.updateSettingsPaneVisibility.bind(this)),this.updateSettingsPaneVisibility(),this.filmStripPlaceholderElement=t.contentElement.createChild("div","network-film-strip-placeholder"),this.overviewPane=new PerfUI.TimelineOverviewPane.TimelineOverviewPane("network"),this.overviewPane.addEventListener(PerfUI.TimelineOverviewPane.Events.WindowChanged,this.onWindowChanged.bind(this)),this.overviewPane.element.id="network-overview-panel",this.networkOverview=new NetworkOverview,this.overviewPane.setOverviewControls([this.networkOverview]),this.overviewPlaceholderElement=t.contentElement.createChild("div"),this.calculator=new NetworkTransferTimeCalculator,this.splitWidget=new UI.SplitWidget.SplitWidget(!0,!1,"networkPanelSplitViewState"),this.splitWidget.hideMain(),this.splitWidget.show(t.contentElement),t.setDefaultFocusedChild(this.filterBar);const r=new UI.SplitWidget.SplitWidget(!0,!1,"networkPanelSidebarState",225);r.hideSidebar(),r.enableShowModeSaving(),r.show(this.element),this.sidebarLocation=UI.ViewManager.ViewManager.instance().createTabbedLocation((async()=>{UI.ViewManager.ViewManager.instance().showView("network"),r.showBoth()}),"network-sidebar",!0);const n=this.sidebarLocation.tabbedPane();n.setMinimumSize(100,25),n.element.classList.add("network-tabbed-pane"),n.element.addEventListener("keydown",(e=>{e.key===Platform.KeyboardUtilities.ESCAPE_KEY&&(r.hideSidebar(),e.consume())}));const o=new UI.Toolbar.ToolbarButton(i18nString(UIStrings.close),"cross");o.addEventListener(UI.Toolbar.ToolbarButton.Events.Click,(()=>r.hideSidebar())),n.rightToolbar().appendToolbarItem(o),r.setSidebarWidget(n),r.setMainWidget(t),r.setDefaultFocusedChild(t),this.setDefaultFocusedChild(r),this.progressBarContainer=document.createElement("div"),this.networkLogView=new NetworkLogView(this.filterBar,this.progressBarContainer,this.networkLogLargeRowsSetting),this.splitWidget.setSidebarWidget(this.networkLogView),this.fileSelectorElement=UI.UIUtils.createFileSelectorElement(this.networkLogView.onLoadFromFile.bind(this.networkLogView)),t.element.appendChild(this.fileSelectorElement),this.detailsWidget=new UI.Widget.VBox,this.detailsWidget.element.classList.add("network-details-view"),this.splitWidget.setMainWidget(this.detailsWidget),this.closeButtonElement=document.createElement("div",{is:"dt-close-button"}),this.closeButtonElement.addEventListener("click",(async()=>{const e=UI.ActionRegistry.ActionRegistry.instance().action("network.hide-request-details");e&&await e.execute()}),!1),this.closeButtonElement.style.margin="0 5px",this.networkLogShowOverviewSetting.addChangeListener(this.toggleShowOverview,this),this.networkLogLargeRowsSetting.addChangeListener(this.toggleLargerRequests,this),this.networkRecordFilmStripSetting.addChangeListener(this.toggleRecordFilmStrip,this),this.preserveLogSetting=Common.Settings.Settings.instance().moduleSetting("network_log.preserve-log"),this.recordLogSetting=Common.Settings.Settings.instance().moduleSetting("network_log.record-log"),this.recordLogSetting.addChangeListener((({data:e})=>this.toggleRecord(e))),this.throttlingSelect=this.createThrottlingConditionsSelect(),this.setupToolbarButtons(r),this.toggleRecord(this.recordLogSetting.get()),this.toggleShowOverview(),this.toggleLargerRequests(),this.toggleRecordFilmStrip(),this.updateUI(),SDK.TargetManager.TargetManager.instance().addModelListener(SDK.ResourceTreeModel.ResourceTreeModel,SDK.ResourceTreeModel.Events.WillReloadPage,this.willReloadPage,this,{scoped:!0}),SDK.TargetManager.TargetManager.instance().addModelListener(SDK.ResourceTreeModel.ResourceTreeModel,SDK.ResourceTreeModel.Events.Load,this.load,this,{scoped:!0}),this.networkLogView.addEventListener(Events.RequestSelected,this.onRequestSelected,this),this.networkLogView.addEventListener(Events.RequestActivated,this.onRequestActivated,this),Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.RequestAdded,this.onUpdateRequest,this),Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.RequestUpdated,this.onUpdateRequest,this),Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.Reset,this.onNetworkLogReset,this)}static instance(e){return networkPanelInstance&&!e?.forceNew||(networkPanelInstance=new NetworkPanel(e?.displayScreenshotDelay??1e3)),networkPanelInstance}static revealAndFilter(e){const t=NetworkPanel.instance();let i="";for(const t of e)t.filterType?i+=`${t.filterType}:${t.filterValue} `:i+=`${t.filterValue} `;return t.networkLogView.setTextFilterValue(i),UI.ViewManager.ViewManager.instance().showView("network")}static async selectAndShowRequest(e,t,i){const r=NetworkPanel.instance();await r.selectAndActivateRequest(e,t,i)}throttlingSelectForTest(){return this.throttlingSelect}onWindowChanged(e){const t=Math.max(this.calculator.minimumBoundary(),e.data.startTime/1e3),i=Math.min(this.calculator.maximumBoundary(),e.data.endTime/1e3);t===this.calculator.minimumBoundary()&&i===this.calculator.maximumBoundary()?this.networkLogView.setWindow(0,0):this.networkLogView.setWindow(t,i)}async searchToggleClick(){const e=UI.ActionRegistry.ActionRegistry.instance().action("network.search");e&&await e.execute()}setupToolbarButtons(e){const t=new UI.Toolbar.ToolbarToggle(i18nString(UIStrings.search),"search");function i(){const i=e.showMode()!==UI.SplitWidget.ShowMode.OnlyMain;t.setToggled(i),i||t.element.focus()}this.panelToolbar.appendToolbarItem(UI.Toolbar.Toolbar.createActionButton(this.toggleRecordAction)),this.panelToolbar.appendToolbarItem(UI.Toolbar.Toolbar.createActionButton(UI.ActionRegistry.ActionRegistry.instance().action("network.clear"))),this.panelToolbar.appendSeparator(),this.panelToolbar.appendToolbarItem(this.filterBar.filterButton()),i(),e.addEventListener(UI.SplitWidget.Events.ShowModeChanged,i),t.addEventListener(UI.Toolbar.ToolbarButton.Events.Click,(()=>{this.searchToggleClick()})),this.panelToolbar.appendToolbarItem(t),this.panelToolbar.appendSeparator(),this.panelToolbar.appendToolbarItem(new UI.Toolbar.ToolbarSettingCheckbox(this.preserveLogSetting,i18nString(UIStrings.doNotClearLogOnPageReload),i18nString(UIStrings.preserveLog))),this.panelToolbar.appendSeparator();const r=new UI.Toolbar.ToolbarSettingCheckbox(Common.Settings.Settings.instance().moduleSetting("cacheDisabled"),i18nString(UIStrings.disableCacheWhileDevtoolsIsOpen),i18nString(UIStrings.disableCache));this.panelToolbar.appendToolbarItem(r),this.panelToolbar.appendToolbarItem(this.throttlingSelect);const n=new IconButton.Icon.Icon;n.data={iconName:"network-settings",color:"var(--icon-default)",width:"20px",height:"20px"};const o=new UI.Toolbar.ToolbarButton(i18nString(UIStrings.moreNetworkConditions),n);o.addEventListener(UI.Toolbar.ToolbarButton.Events.Click,(()=>{UI.ViewManager.ViewManager.instance().showView("network.config")}),this),this.panelToolbar.appendToolbarItem(o),this.rightToolbar.appendToolbarItem(new UI.Toolbar.ToolbarItem(this.progressBarContainer)),this.rightToolbar.appendSeparator(),this.rightToolbar.appendToolbarItem(new UI.Toolbar.ToolbarSettingToggle(this.showSettingsPaneSetting,"gear",i18nString(UIStrings.networkSettings),"gear-filled"));const s=new UI.Toolbar.Toolbar("",this.settingsPane.element);s.makeVertical(),s.appendToolbarItem(new UI.Toolbar.ToolbarSettingCheckbox(this.networkLogLargeRowsSetting,i18nString(UIStrings.showMoreInformationInRequestRows),i18nString(UIStrings.useLargeRequestRows))),s.appendToolbarItem(new UI.Toolbar.ToolbarSettingCheckbox(this.networkLogShowOverviewSetting,i18nString(UIStrings.showOverviewOfNetworkRequests),i18nString(UIStrings.showOverview)));const a=new UI.Toolbar.Toolbar("",this.settingsPane.element);a.makeVertical(),a.appendToolbarItem(new UI.Toolbar.ToolbarSettingCheckbox(Common.Settings.Settings.instance().moduleSetting("network.group-by-frame"),i18nString(UIStrings.groupRequestsByTopLevelRequest),i18nString(UIStrings.groupByFrame))),a.appendToolbarItem(new UI.Toolbar.ToolbarSettingCheckbox(this.networkRecordFilmStripSetting,i18nString(UIStrings.captureScreenshotsWhenLoadingA),i18nString(UIStrings.captureScreenshots))),this.panelToolbar.appendSeparator();const l=new UI.Toolbar.ToolbarButton(i18nString(UIStrings.importHarFile),"import");l.addEventListener(UI.Toolbar.ToolbarButton.Events.Click,(()=>this.fileSelectorElement.click()),this),this.panelToolbar.appendToolbarItem(l);const c=new UI.Toolbar.ToolbarButton(i18nString(UIStrings.exportHar),"download");c.addEventListener(UI.Toolbar.ToolbarButton.Events.Click,(e=>{this.networkLogView.exportAll()}),this),this.panelToolbar.appendToolbarItem(c)}updateSettingsPaneVisibility(){this.settingsPane.element.classList.toggle("hidden",!this.showSettingsPaneSetting.get())}createThrottlingConditionsSelect(){const e=new UI.Toolbar.ToolbarComboBox(null,i18nString(UIStrings.throttling));return e.setMaxWidth(160),MobileThrottling.ThrottlingManager.throttlingManager().decorateSelectWithNetworkThrottling(e.selectElement()),e}toggleRecord(e){this.toggleRecordAction.setToggled(e),this.recordLogSetting.get()!==e&&this.recordLogSetting.set(e),this.networkLogView.setRecording(e),!e&&this.filmStripRecorder&&this.filmStripRecorder.stopRecording(this.filmStripAvailable.bind(this))}filmStripAvailable(e){this.filmStripView&&this.filmStripView.setModel(e);const t=e.frames.map((e=>TraceEngine.Helpers.Timing.microSecondsToSeconds(e.screenshotEvent.ts)));this.networkLogView.addFilmStripFrames(t)}onNetworkLogReset(e){const{clearIfPreserved:t}=e.data;BlockedURLsPane.reset(),this.preserveLogSetting.get()&&!t||(this.calculator.reset(),this.overviewPane.reset()),this.filmStripView&&this.resetFilmStripView()}willReloadPage(){this.pendingStopTimer&&(clearTimeout(this.pendingStopTimer),delete this.pendingStopTimer),this.isShowing()&&this.filmStripRecorder&&this.filmStripRecorder.startRecording()}load(){this.filmStripRecorder&&this.filmStripRecorder.isRecording()&&(this.pendingStopTimer&&window.clearTimeout(this.pendingStopTimer),this.pendingStopTimer=window.setTimeout(this.stopFilmStripRecording.bind(this),this.displayScreenshotDelay))}stopFilmStripRecording(){this.filmStripRecorder&&this.filmStripRecorder.stopRecording(this.filmStripAvailable.bind(this)),delete this.pendingStopTimer}toggleLargerRequests(){this.updateUI()}toggleShowOverview(){this.networkLogShowOverviewSetting.get()?this.overviewPane.show(this.overviewPlaceholderElement):this.overviewPane.detach(),this.doResize()}toggleRecordFilmStrip(){const e=this.networkRecordFilmStripSetting.get();e&&!this.filmStripRecorder&&(this.filmStripView=new PerfUI.FilmStripView.FilmStripView,this.filmStripView.element.classList.add("network-film-strip"),this.filmStripRecorder=new FilmStripRecorder(this.networkLogView.timeCalculator(),this.filmStripView),this.filmStripView.show(this.filmStripPlaceholderElement),this.filmStripView.addEventListener(PerfUI.FilmStripView.Events.FrameSelected,this.onFilmFrameSelected,this),this.filmStripView.addEventListener(PerfUI.FilmStripView.Events.FrameEnter,this.onFilmFrameEnter,this),this.filmStripView.addEventListener(PerfUI.FilmStripView.Events.FrameExit,this.onFilmFrameExit,this),this.resetFilmStripView()),!e&&this.filmStripRecorder&&(this.filmStripView&&this.filmStripView.detach(),this.filmStripView=null,this.filmStripRecorder=null)}resetFilmStripView(){const e=UI.ShortcutRegistry.ShortcutRegistry.instance().shortcutsForAction("inspector_main.reload")[0];this.filmStripView&&(this.filmStripView.reset(),e&&this.filmStripView.setStatusText(i18nString(UIStrings.hitSToReloadAndCaptureFilmstrip,{PH1:e.title()})))}elementsToRestoreScrollPositionsFor(){return this.networkLogView.elementsToRestoreScrollPositionsFor()}wasShown(){UI.Context.Context.instance().setFlavor(NetworkPanel,this),this.registerCSSFiles([networkPanelStyles]),Host.userMetrics.panelLoaded("network","DevTools.Launch.Network")}willHide(){UI.Context.Context.instance().setFlavor(NetworkPanel,null)}revealAndHighlightRequest(e){this.hideRequestPanel(),e&&this.networkLogView.revealAndHighlightRequest(e)}revealAndHighlightRequestWithId(e){this.hideRequestPanel(),e&&this.networkLogView.revealAndHighlightRequestWithId(e)}async selectAndActivateRequest(e,t,i){return await UI.ViewManager.ViewManager.instance().showView("network"),this.networkLogView.selectRequest(e,i),this.showRequestPanel(t),this.networkLogView.revealAndHighlightRequest(e),this.networkItemView}handleFilterChanged(){this.hideRequestPanel()}onRowSizeChanged(){this.updateUI()}onRequestSelected(e){const t=e.data;this.currentRequest=t,this.networkOverview.setHighlightedRequest(t),this.updateNetworkItemView()}onRequestActivated(e){const{showPanel:t,tab:i,takeFocus:r}=e.data;t?this.showRequestPanel(i,r):this.hideRequestPanel()}showRequestPanel(e,t){if(this.splitWidget.showMode()!==UI.SplitWidget.ShowMode.Both||e||t){if(this.clearNetworkItemView(),this.currentRequest){const i=this.createNetworkItemView(e);i&&t&&i.focus()}this.updateUI()}}hideRequestPanel(){this.clearNetworkItemView(),this.splitWidget.hideMain(),this.updateUI()}updateNetworkItemView(){this.splitWidget.showMode()===UI.SplitWidget.ShowMode.Both&&(this.clearNetworkItemView(),this.createNetworkItemView(),this.updateUI())}clearNetworkItemView(){this.networkItemView&&(this.networkItemView.detach(),this.networkItemView=null)}createNetworkItemView(e){if(this.currentRequest)return this.networkItemView=new NetworkItemView(this.currentRequest,this.networkLogView.timeCalculator(),e),this.networkItemView.leftToolbar().appendToolbarItem(new UI.Toolbar.ToolbarItem(this.closeButtonElement)),this.networkItemView.show(this.detailsWidget.element),this.splitWidget.showBoth(),this.networkItemView}updateUI(){this.detailsWidget&&this.detailsWidget.element.classList.toggle("network-details-view-tall-header",this.networkLogLargeRowsSetting.get()),this.networkLogView&&this.networkLogView.switchViewMode(!this.splitWidget.isResizable())}appendApplicableItems(e,t,i){function r(e){UI.ViewManager.ViewManager.instance().showView("network").then(this.networkLogView.resetFilter.bind(this.networkLogView)).then(this.revealAndHighlightRequest.bind(this,e))}function n(e){t.revealSection().appendItem(i18nString(UIStrings.revealInNetworkPanel),r.bind(this,e))}if(e.target.isSelfOrDescendant(this.element))return;if(i instanceof SDK.Resource.Resource){const e=i;return void(e.request&&n.call(this,e.request))}if(i instanceof Workspace.UISourceCode.UISourceCode){const e=i,t=Bindings.ResourceUtils.resourceForURL(e.url());return void(t&&t.request&&n.call(this,t.request))}if(!(i instanceof SDK.NetworkRequest.NetworkRequest))return;const o=i;this.networkItemView&&this.networkItemView.isShowing()&&this.networkItemView.request()===o||n.call(this,o)}onFilmFrameSelected(e){const t=e.data;this.overviewPane.setWindowTimes(0,t)}onFilmFrameEnter(e){const t=e.data;this.networkOverview.selectFilmStripFrame(t),this.networkLogView.selectFilmStripFrame(t/1e3)}onFilmFrameExit(){this.networkOverview.clearFilmStripFrame(),this.networkLogView.clearFilmStripFrame()}onUpdateRequest(e){const t=e.data;this.calculator.updateBoundaries(t),this.overviewPane.setBounds(TraceEngine.Types.Timing.MilliSeconds(1e3*this.calculator.minimumBoundary()),TraceEngine.Types.Timing.MilliSeconds(1e3*this.calculator.maximumBoundary())),this.networkOverview.updateRequest(t),this.overviewPane.scheduleUpdate()}resolveLocation(e){return"network-sidebar"===e?this.sidebarLocation:null}}export class ContextMenuProvider{static instance(e={forceNew:null}){const{forceNew:t}=e;return contextMenuProviderInstance&&!t||(contextMenuProviderInstance=new ContextMenuProvider),contextMenuProviderInstance}appendApplicableItems(e,t,i){NetworkPanel.instance().appendApplicableItems(e,t,i)}}export class RequestRevealer{static instance(e={forceNew:null}){const{forceNew:t}=e;return requestRevealerInstance&&!t||(requestRevealerInstance=new RequestRevealer),requestRevealerInstance}reveal(e){if(!(e instanceof SDK.NetworkRequest.NetworkRequest))return Promise.reject(new Error("Internal error: not a network request"));const t=NetworkPanel.instance();return UI.ViewManager.ViewManager.instance().showView("network").then(t.revealAndHighlightRequest.bind(t,e))}}export class RequestIdRevealer{static instance(e={forceNew:null}){const{forceNew:t}=e;return requestIdRevealerInstance&&!t||(requestIdRevealerInstance=new RequestIdRevealer),requestIdRevealerInstance}reveal(e){if(!(e instanceof NetworkForward.NetworkRequestId.NetworkRequestId))return Promise.reject(new Error("Internal error: not a network request ID"));const t=NetworkPanel.instance();return UI.ViewManager.ViewManager.instance().showView("network").then(t.revealAndHighlightRequestWithId.bind(t,e))}}export class NetworkLogWithFilterRevealer{static instance(e={forceNew:null}){const{forceNew:t}=e;return networkLogWithFilterRevealerInstance&&!t||(networkLogWithFilterRevealerInstance=new NetworkLogWithFilterRevealer),networkLogWithFilterRevealerInstance}reveal(e){return e instanceof NetworkForward.UIFilter.UIRequestFilter?NetworkPanel.revealAndFilter(e.filters):Promise.reject(new Error("Internal error: not a UIRequestFilter"))}}export class FilmStripRecorder{tracingManager;resourceTreeModel;timeCalculator;filmStripView;tracingModel;callback;#e;constructor(e,t){this.#e=new TraceEngine.TraceModel.Model({Screenshots:TraceEngine.Handlers.ModelHandlers.Screenshots}),this.tracingManager=null,this.resourceTreeModel=null,this.timeCalculator=e,this.filmStripView=t,this.tracingModel=null,this.callback=null}traceEventsCollected(e){this.tracingModel&&this.tracingModel.addEvents(e)}async tracingComplete(){if(!this.tracingModel||!this.tracingManager)return;this.tracingModel.tracingComplete(),this.tracingManager=null,await this.#e.parse(this.tracingModel.allRawEvents());const e=this.#e.traceParsedData(this.#e.size()-1);if(!e)return;const t=TraceEngine.Types.Timing.Seconds(this.timeCalculator.minimumBoundary()),i=TraceEngine.Extras.FilmStrip.fromTraceData(e,TraceEngine.Helpers.Timing.secondsToMicroseconds(t));this.callback&&this.callback(i),this.callback=null,this.#e.resetProcessor(),this.resourceTreeModel&&this.resourceTreeModel.resumeReload(),this.resourceTreeModel=null}tracingBufferUsage(){}eventsRetrievalProgress(e){}startRecording(){this.filmStripView.reset(),this.filmStripView.setStatusText(i18nString(UIStrings.recordingFrames));const e=SDK.TargetManager.TargetManager.instance().scopeTarget()?.model(TraceEngine.TracingManager.TracingManager);!this.tracingManager&&e&&(this.tracingManager=e,this.resourceTreeModel=this.tracingManager.target().model(SDK.ResourceTreeModel.ResourceTreeModel),this.tracingModel=new TraceEngine.Legacy.TracingModel,this.tracingManager.start(this,"-*,disabled-by-default-devtools.screenshot",""),Host.userMetrics.actionTaken(Host.UserMetrics.Action.FilmStripStartedRecording))}isRecording(){return Boolean(this.tracingManager)}stopRecording(e){this.tracingManager&&(this.tracingManager.stop(),this.resourceTreeModel&&this.resourceTreeModel.suspendReload(),this.callback=e,this.filmStripView.setStatusText(i18nString(UIStrings.fetchingFrames)))}}export class ActionDelegate{static instance(e={forceNew:null}){const{forceNew:t}=e;return networkActionDelegateInstance&&!t||(networkActionDelegateInstance=new ActionDelegate),networkActionDelegateInstance}handleAction(e,t){const i=UI.Context.Context.instance().flavor(NetworkPanel);if(console.assert(Boolean(i&&i instanceof NetworkPanel)),!i)return!1;switch(t){case"network.toggle-recording":return i.toggleRecord(!i.recordLogSetting.get()),!0;case"network.hide-request-details":return!!i.networkItemView&&(i.hideRequestPanel(),i.networkLogView.resetFocus(),!0);case"network.search":{const e=UI.InspectorView.InspectorView.instance().element.window().getSelection();if(!e)return!1;let t="";return e.rangeCount&&(t=e.toString().replace(/\r?\n.*/,"")),SearchNetworkView.openSearch(t),!0}case"network.clear":return Logs.NetworkLog.NetworkLog.instance().reset(!0),!0}return!1}}export class RequestLocationRevealer{static instance(e={forceNew:null}){const{forceNew:t}=e;return requestLocationRevealerInstance&&!t||(requestLocationRevealerInstance=new RequestLocationRevealer),requestLocationRevealerInstance}async reveal(e){const t=e,i=await NetworkPanel.instance().selectAndActivateRequest(t.request,t.tab,t.filterOptions);i&&(t.searchMatch&&await i.revealResponseBody(t.searchMatch.lineNumber),t.header&&i.revealHeader(t.header.section,t.header.header?.name))}}export class SearchNetworkView extends Search.SearchView.SearchView{constructor(){super("network")}static instance(e={forceNew:null}){const{forceNew:t}=e;return searchNetworkViewInstance&&!t||(searchNetworkViewInstance=new SearchNetworkView),searchNetworkViewInstance}static async openSearch(e,t){await UI.ViewManager.ViewManager.instance().showView("network.search-network-tab");const i=SearchNetworkView.instance();return i.toggle(e,Boolean(t)),i}createScope(){return new NetworkSearchScope}}