chrome-devtools-frontend 1.0.1526630 → 1.0.1528866
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/ui_engineering.md +159 -0
- package/eslint.config.mjs +6 -1
- package/front_end/core/i18n/i18nImpl.ts +6 -1
- package/front_end/core/protocol_client/protocol_client.ts +1 -1
- package/front_end/core/root/Runtime.ts +28 -4
- package/front_end/core/sdk/CSSMatchedStyles.ts +50 -7
- package/front_end/core/sdk/CSSRule.ts +35 -6
- package/front_end/core/sdk/Connections.ts +2 -1
- package/front_end/core/sdk/DOMModel.ts +4 -0
- package/front_end/core/sdk/DebuggerModel.ts +5 -1
- package/front_end/core/sdk/NetworkManager.ts +214 -31
- package/front_end/core/sdk/PreloadingModel.ts +82 -17
- package/front_end/core/sdk/RehydratingConnection.snapshot.txt +1 -1
- package/front_end/core/sdk/RehydratingConnection.ts +29 -4
- package/front_end/core/sdk/ScopeTreeCache.ts +8 -3
- package/front_end/core/sdk/SourceMap.ts +37 -11
- package/front_end/core/sdk/SourceMapManager.ts +13 -2
- package/front_end/core/sdk/SourceMapScopesInfo.ts +17 -0
- package/front_end/core/sdk/TargetManager.ts +0 -22
- package/front_end/core/sdk/TraceObject.ts +8 -7
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +81 -0
- package/front_end/entrypoints/inspector_main/InspectorMain.ts +3 -1
- package/front_end/entrypoints/main/GlobalAiButton.ts +1 -0
- package/front_end/entrypoints/main/MainImpl.ts +20 -25
- package/front_end/generated/InspectorBackendCommands.js +3 -2
- package/front_end/generated/protocol.ts +17 -3
- package/front_end/models/ai_assistance/BuiltInAi.ts +111 -0
- package/front_end/models/ai_assistance/ai_assistance.ts +53 -24
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +105 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +6 -1
- package/front_end/models/extensions/ExtensionView.ts +3 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +23 -27
- package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +31 -29
- package/front_end/models/persistence/EditFileSystemView.ts +1 -0
- package/front_end/models/source_map_scopes/NamesResolver.ts +5 -11
- package/front_end/models/stack_trace/Trie.ts +9 -0
- package/front_end/models/trace/lantern/types/Lantern.ts +1 -1
- package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +1 -0
- package/front_end/panels/accessibility/AccessibilitySidebarView.ts +1 -0
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +120 -113
- package/front_end/panels/ai_assistance/PatchWidget.ts +9 -8
- package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +2 -0
- package/front_end/panels/ai_assistance/components/ChatView.ts +29 -29
- package/front_end/panels/ai_assistance/components/UserActionRow.ts +1 -0
- package/front_end/panels/animation/AnimationTimeline.ts +1 -0
- package/front_end/panels/application/CookieItemsView.ts +1 -0
- package/front_end/panels/application/KeyValueStorageItemsView.ts +1 -0
- package/front_end/panels/application/ServiceWorkerCacheViews.ts +2 -0
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +11 -5
- package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +2 -2
- package/front_end/panels/application/preloading/components/PreloadingString.ts +7 -5
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +22 -10
- package/front_end/panels/changes/CombinedDiffView.ts +1 -0
- package/front_end/panels/console/ConsoleInsightTeaser.ts +106 -0
- package/front_end/panels/console/ConsolePanel.ts +2 -0
- package/front_end/panels/console/ConsolePrompt.ts +12 -2
- package/front_end/panels/console/ConsoleSidebar.ts +1 -1
- package/front_end/panels/console/ConsoleView.ts +12 -0
- package/front_end/panels/console/ConsoleViewMessage.ts +27 -0
- package/front_end/panels/{explain → console}/PromptBuilder.ts +12 -7
- package/front_end/panels/console/console.ts +6 -0
- package/front_end/panels/console/consoleInsightTeaser.css +55 -0
- package/front_end/panels/coverage/CoverageListView.ts +29 -11
- package/front_end/panels/coverage/CoverageView.ts +292 -284
- package/front_end/panels/coverage/coverageView.css +17 -0
- package/front_end/panels/elements/ComputedStyleWidget.ts +1 -0
- package/front_end/panels/elements/LayoutPane.ts +1 -0
- package/front_end/panels/elements/NodeStackTraceWidget.ts +1 -0
- package/front_end/panels/elements/StylePropertyTreeElement.ts +5 -1
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +17 -0
- package/front_end/panels/emulation/DeviceModeView.ts +2 -0
- package/front_end/panels/explain/ActionDelegate.ts +1 -2
- package/front_end/panels/explain/components/ConsoleInsight.ts +14 -12
- package/front_end/panels/explain/explain.ts +0 -1
- package/front_end/panels/js_timeline/js_timeline-meta.ts +1 -1
- package/front_end/panels/layer_viewer/Layers3DView.ts +2 -0
- package/front_end/panels/lighthouse/LighthouseReportSelector.ts +1 -0
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +1 -0
- package/front_end/panels/media/MainView.ts +1 -0
- package/front_end/panels/media/TickingFlameChart.ts +2 -0
- package/front_end/panels/network/BlockedURLsPane.ts +111 -85
- package/front_end/panels/network/EventSourceMessagesView.ts +1 -0
- package/front_end/panels/network/NetworkItemView.ts +1 -0
- package/front_end/panels/network/NetworkLogView.ts +9 -7
- package/front_end/panels/network/NetworkOverview.ts +1 -0
- package/front_end/panels/network/RequestCookiesView.ts +1 -0
- package/front_end/panels/network/RequestHTMLView.ts +1 -0
- package/front_end/panels/network/RequestInitiatorView.ts +1 -0
- package/front_end/panels/network/RequestPayloadView.ts +1 -0
- package/front_end/panels/network/RequestPreviewView.ts +1 -0
- package/front_end/panels/network/RequestResponseView.ts +1 -0
- package/front_end/panels/network/RequestTimingView.ts +2 -0
- package/front_end/panels/network/ResourceDirectSocketChunkView.ts +1 -0
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +1 -0
- package/front_end/panels/network/components/RequestHeadersView.ts +2 -0
- package/front_end/panels/network/components/RequestTrustTokensView.ts +2 -0
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +2 -0
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +2 -0
- package/front_end/panels/profiler/HeapSnapshotView.ts +7 -0
- package/front_end/panels/profiler/IsolateSelector.ts +1 -0
- package/front_end/panels/profiler/LiveHeapProfileView.ts +1 -0
- package/front_end/panels/profiler/ProfileView.ts +1 -0
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +1 -0
- package/front_end/panels/recorder/RecorderPanel.ts +2 -0
- package/front_end/panels/screencast/ScreencastView.ts +1 -0
- package/front_end/panels/search/SearchView.ts +1 -0
- package/front_end/panels/settings/AISettingsTab.ts +3 -3
- package/front_end/panels/settings/WorkspaceSettingsTab.ts +2 -0
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +2 -2
- package/front_end/panels/sources/AiCodeCompletionPlugin.ts +12 -0
- package/front_end/panels/sources/BreakpointsView.ts +1 -0
- package/front_end/panels/sources/DebuggerPlugin.ts +1 -0
- package/front_end/panels/sources/UISourceCodeFrame.ts +17 -2
- package/front_end/panels/timeline/README.md +2 -2
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +1 -1
- package/front_end/panels/timeline/TimelineFlameChartView.ts +4 -3
- package/front_end/panels/timeline/TimelineLayersView.ts +1 -0
- package/front_end/panels/timeline/TimelinePaintProfilerView.ts +114 -37
- package/front_end/panels/timeline/TimelinePanel.ts +43 -62
- package/front_end/panels/timeline/TimelineTreeView.ts +1 -0
- package/front_end/panels/timeline/components/LiveMetricsView.ts +4 -8
- package/front_end/panels/timeline/components/Sidebar.ts +2 -0
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +1 -1
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +7 -7
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +1 -1
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +4 -4
- package/front_end/panels/web_audio/WebAudioView.ts +1 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/lighthouse/README.chromium +2 -2
- package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1530 -2426
- package/front_end/third_party/lighthouse/locales/ar-XB.json +107 -455
- package/front_end/third_party/lighthouse/locales/ar.json +107 -455
- package/front_end/third_party/lighthouse/locales/bg.json +96 -444
- package/front_end/third_party/lighthouse/locales/ca.json +96 -444
- package/front_end/third_party/lighthouse/locales/cs.json +96 -444
- package/front_end/third_party/lighthouse/locales/da.json +96 -444
- package/front_end/third_party/lighthouse/locales/de.json +96 -444
- package/front_end/third_party/lighthouse/locales/el.json +96 -444
- package/front_end/third_party/lighthouse/locales/en-GB.json +96 -444
- package/front_end/third_party/lighthouse/locales/en-US.json +116 -467
- package/front_end/third_party/lighthouse/locales/en-XA.json +93 -441
- package/front_end/third_party/lighthouse/locales/en-XL.json +116 -467
- package/front_end/third_party/lighthouse/locales/es-419.json +96 -444
- package/front_end/third_party/lighthouse/locales/es.json +96 -444
- package/front_end/third_party/lighthouse/locales/fi.json +96 -444
- package/front_end/third_party/lighthouse/locales/fil.json +96 -444
- package/front_end/third_party/lighthouse/locales/fr.json +96 -444
- package/front_end/third_party/lighthouse/locales/he.json +118 -466
- package/front_end/third_party/lighthouse/locales/hi.json +96 -444
- package/front_end/third_party/lighthouse/locales/hr.json +100 -448
- package/front_end/third_party/lighthouse/locales/hu.json +96 -444
- package/front_end/third_party/lighthouse/locales/id.json +96 -444
- package/front_end/third_party/lighthouse/locales/it.json +96 -444
- package/front_end/third_party/lighthouse/locales/ja.json +96 -444
- package/front_end/third_party/lighthouse/locales/ko.json +97 -445
- package/front_end/third_party/lighthouse/locales/lt.json +96 -444
- package/front_end/third_party/lighthouse/locales/lv.json +97 -445
- package/front_end/third_party/lighthouse/locales/nl.json +96 -444
- package/front_end/third_party/lighthouse/locales/no.json +96 -444
- package/front_end/third_party/lighthouse/locales/pl.json +96 -444
- package/front_end/third_party/lighthouse/locales/pt-PT.json +96 -444
- package/front_end/third_party/lighthouse/locales/pt.json +97 -445
- package/front_end/third_party/lighthouse/locales/ro.json +97 -445
- package/front_end/third_party/lighthouse/locales/ru.json +96 -444
- package/front_end/third_party/lighthouse/locales/sk.json +96 -444
- package/front_end/third_party/lighthouse/locales/sl.json +96 -444
- package/front_end/third_party/lighthouse/locales/sr-Latn.json +96 -444
- package/front_end/third_party/lighthouse/locales/sr.json +96 -444
- package/front_end/third_party/lighthouse/locales/sv.json +96 -444
- package/front_end/third_party/lighthouse/locales/ta.json +96 -444
- package/front_end/third_party/lighthouse/locales/te.json +97 -445
- package/front_end/third_party/lighthouse/locales/th.json +96 -444
- package/front_end/third_party/lighthouse/locales/tr.json +96 -444
- package/front_end/third_party/lighthouse/locales/uk.json +96 -444
- package/front_end/third_party/lighthouse/locales/vi.json +96 -444
- package/front_end/third_party/lighthouse/locales/zh-HK.json +96 -444
- package/front_end/third_party/lighthouse/locales/zh-TW.json +97 -445
- package/front_end/third_party/lighthouse/locales/zh.json +96 -444
- package/front_end/third_party/lighthouse/report/bundle.d.ts +8 -14
- package/front_end/third_party/lighthouse/report/bundle.js +10 -49
- package/front_end/third_party/lighthouse/report-assets/report-generator.mjs +1 -1
- package/front_end/third_party/web-vitals/README.chromium +5 -8
- package/front_end/third_party/web-vitals/package/README.md +191 -152
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/index.d.ts +0 -1
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/index.js +0 -1
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onCLS.d.ts +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onCLS.js +45 -26
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFCP.d.ts +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFCP.js +3 -3
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.d.ts +10 -10
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +307 -206
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.d.ts +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.js +69 -49
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onTTFB.d.ts +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onTTFB.js +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/index.d.ts +0 -1
- package/front_end/third_party/web-vitals/package/dist/modules/index.js +0 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.d.ts +33 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.js +111 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/LCPEntryManager.d.ts +4 -0
- package/front_end/third_party/web-vitals/package/dist/modules/{attribution/deprecated.js → lib/LCPEntryManager.js} +6 -7
- package/front_end/third_party/web-vitals/package/dist/modules/lib/LayoutShiftManager.d.ts +6 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/LayoutShiftManager.js +44 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/bindReporter.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/generateUniqueID.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getActivationStart.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getNavigationEntry.js +5 -7
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getSelector.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getSelector.js +9 -12
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getVisibilityWatcher.d.ts +1 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getVisibilityWatcher.js +52 -33
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +0 -2
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.js +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initUnique.d.ts +6 -0
- package/front_end/third_party/web-vitals/package/dist/modules/{deprecated.js → lib/initUnique.js} +11 -4
- package/front_end/third_party/web-vitals/package/dist/modules/lib/observe.js +3 -6
- package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/interactionCountPolyfill.js +6 -6
- package/front_end/third_party/web-vitals/package/dist/modules/lib/{whenIdle.d.ts → whenIdleOrHidden.d.ts} +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/{whenIdle.js → whenIdleOrHidden.js} +10 -8
- package/front_end/third_party/web-vitals/package/dist/modules/onCLS.js +17 -35
- package/front_end/third_party/web-vitals/package/dist/modules/onFCP.js +3 -5
- package/front_end/third_party/web-vitals/package/dist/modules/onINP.d.ts +9 -7
- package/front_end/third_party/web-vitals/package/dist/modules/onINP.js +27 -19
- package/front_end/third_party/web-vitals/package/dist/modules/onLCP.js +33 -26
- package/front_end/third_party/web-vitals/package/dist/modules/onTTFB.js +2 -4
- package/front_end/third_party/web-vitals/package/dist/modules/types/base.d.ts +6 -5
- package/front_end/third_party/web-vitals/package/dist/modules/types/cls.d.ts +5 -3
- package/front_end/third_party/web-vitals/package/dist/modules/types/inp.d.ts +80 -33
- package/front_end/third_party/web-vitals/package/dist/modules/types/lcp.d.ts +6 -2
- package/front_end/third_party/web-vitals/package/dist/modules/types.d.ts +28 -4
- package/front_end/third_party/web-vitals/package/dist/modules/types.js +0 -1
- package/front_end/third_party/web-vitals/package/package.json +4 -10
- package/front_end/third_party/web-vitals/package/src/attribution/index.ts +0 -1
- package/front_end/third_party/web-vitals/package/src/attribution/onCLS.ts +58 -33
- package/front_end/third_party/web-vitals/package/src/attribution/onFCP.ts +4 -4
- package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +382 -258
- package/front_end/third_party/web-vitals/package/src/attribution/onLCP.ts +96 -69
- package/front_end/third_party/web-vitals/package/src/attribution/onTTFB.ts +3 -3
- package/front_end/third_party/web-vitals/package/src/index.ts +0 -1
- package/front_end/third_party/web-vitals/package/src/lib/InteractionManager.ts +146 -0
- package/front_end/third_party/web-vitals/package/src/{attribution/deprecated.ts → lib/LCPEntryManager.ts} +6 -9
- package/front_end/third_party/web-vitals/package/src/lib/LayoutShiftManager.ts +50 -0
- package/front_end/third_party/web-vitals/package/src/lib/bindReporter.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/generateUniqueID.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/getActivationStart.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/getNavigationEntry.ts +5 -8
- package/front_end/third_party/web-vitals/package/src/lib/getSelector.ts +12 -12
- package/front_end/third_party/web-vitals/package/src/lib/getVisibilityWatcher.ts +57 -35
- package/front_end/third_party/web-vitals/package/src/lib/initMetric.ts +2 -2
- package/front_end/third_party/web-vitals/package/src/{deprecated.ts → lib/initUnique.ts} +14 -8
- package/front_end/third_party/web-vitals/package/src/lib/observe.ts +3 -11
- package/front_end/third_party/web-vitals/package/src/lib/polyfills/interactionCountPolyfill.ts +12 -6
- package/front_end/third_party/web-vitals/package/src/lib/{whenIdle.ts → whenIdleOrHidden.ts} +10 -8
- package/front_end/third_party/web-vitals/package/src/onCLS.ts +17 -38
- package/front_end/third_party/web-vitals/package/src/onFCP.ts +3 -6
- package/front_end/third_party/web-vitals/package/src/onINP.ts +33 -28
- package/front_end/third_party/web-vitals/package/src/onLCP.ts +36 -29
- package/front_end/third_party/web-vitals/package/src/onTTFB.ts +2 -5
- package/front_end/third_party/web-vitals/package/src/types/base.ts +5 -5
- package/front_end/third_party/web-vitals/package/src/types/cls.ts +5 -3
- package/front_end/third_party/web-vitals/package/src/types/inp.ts +88 -33
- package/front_end/third_party/web-vitals/package/src/types/lcp.ts +6 -2
- package/front_end/third_party/web-vitals/package/src/types.ts +47 -4
- package/front_end/third_party/web-vitals/patches/0001-Add-onEachInteraction-to-onINP-options.patch +75 -0
- package/front_end/third_party/web-vitals/rebuild.sh +32 -18
- package/front_end/third_party/web-vitals/web-vitals-tsconfig.json +5 -10
- package/front_end/third_party/web-vitals/web-vitals.ts +0 -2
- package/front_end/ui/components/docs/console_insight/basic.ts +3 -2
- package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +2 -0
- package/front_end/ui/components/text_editor/TextEditor.ts +0 -2
- package/front_end/ui/legacy/InspectorView.ts +2 -0
- package/front_end/ui/legacy/SplitWidget.ts +2 -0
- package/front_end/ui/legacy/TabbedPane.ts +1 -0
- package/front_end/ui/legacy/TargetCrashedScreen.ts +1 -0
- package/front_end/ui/legacy/UIUtils.ts +8 -19
- package/front_end/ui/legacy/ViewManager.ts +1 -0
- package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +7 -20
- package/front_end/ui/legacy/components/color_picker/Spectrum.ts +2 -0
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +1 -0
- package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +1 -0
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +1 -0
- package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +1 -0
- package/front_end/ui/legacy/components/source_frame/FontView.ts +1 -0
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -0
- package/front_end/ui/legacy/components/source_frame/JSONView.ts +1 -0
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +1 -0
- package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +2 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +17 -0
- package/mcp/README.md +7 -0
- package/mcp/mcp.ts +8 -0
- package/package.json +1 -1
- package/front_end/models/live-metrics/web-vitals-injected/OnEachInteraction.ts +0 -34
- package/front_end/third_party/web-vitals/package/attribution.d.ts +0 -16
- package/front_end/third_party/web-vitals/package/attribution.js +0 -18
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/deprecated.d.ts +0 -7
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFID.d.ts +0 -11
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFID.js +0 -46
- package/front_end/third_party/web-vitals/package/dist/modules/deprecated.d.ts +0 -5
- package/front_end/third_party/web-vitals/package/dist/modules/lib/interactions.d.ts +0 -31
- package/front_end/third_party/web-vitals/package/dist/modules/lib/interactions.js +0 -107
- package/front_end/third_party/web-vitals/package/dist/modules/lib/onHidden.d.ts +0 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/onHidden.js +0 -22
- package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/firstInputPolyfill.d.ts +0 -7
- package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/firstInputPolyfill.js +0 -147
- package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/getFirstHiddenTimePolyfill.d.ts +0 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/getFirstHiddenTimePolyfill.js +0 -25
- package/front_end/third_party/web-vitals/package/dist/modules/onFID.d.ts +0 -13
- package/front_end/third_party/web-vitals/package/dist/modules/onFID.js +0 -70
- package/front_end/third_party/web-vitals/package/dist/modules/types/fid.d.ts +0 -46
- package/front_end/third_party/web-vitals/package/dist/modules/types/fid.js +0 -16
- package/front_end/third_party/web-vitals/package/src/attribution/onFID.ts +0 -62
- package/front_end/third_party/web-vitals/package/src/lib/interactions.ts +0 -139
- package/front_end/third_party/web-vitals/package/src/lib/onHidden.ts +0 -23
- package/front_end/third_party/web-vitals/package/src/lib/polyfills/firstInputPolyfill.ts +0 -174
- package/front_end/third_party/web-vitals/package/src/onFID.ts +0 -105
- package/front_end/third_party/web-vitals/package/src/types/fid.ts +0 -65
- package/front_end/ui/components/text_editor/textEditor.css +0 -18
- package/front_end/ui/legacy/inlineButton.css +0 -22
- /package/front_end/entrypoints/{rehydrated_devtools_app/rehydrated_devtools_app.ts → trace_app/trace_app.ts} +0 -0
|
@@ -53,3 +53,20 @@
|
|
|
53
53
|
white-space: pre-line;
|
|
54
54
|
text-align: center;
|
|
55
55
|
}
|
|
56
|
+
|
|
57
|
+
.inline-button {
|
|
58
|
+
display: inline-flex;
|
|
59
|
+
border: 1px solid var(--sys-color-neutral-outline);
|
|
60
|
+
border-radius: 4px;
|
|
61
|
+
position: relative;
|
|
62
|
+
vertical-align: sub;
|
|
63
|
+
margin: 2px;
|
|
64
|
+
background-color: var(--sys-color-cdt-base-container);
|
|
65
|
+
justify-content: center;
|
|
66
|
+
width: 28px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.inline-button:hover {
|
|
70
|
+
border-color: transparent;
|
|
71
|
+
background-color: var(--sys-color-state-hover-on-subtle);
|
|
72
|
+
}
|
|
@@ -501,6 +501,7 @@ export class LayoutPane extends UI.Widget.Widget {
|
|
|
501
501
|
}
|
|
502
502
|
|
|
503
503
|
override willHide(): void {
|
|
504
|
+
super.willHide();
|
|
504
505
|
for (const setting of this.#settings) {
|
|
505
506
|
Common.Settings.Settings.instance().moduleSetting(setting.name).removeChangeListener(this.requestUpdate, this);
|
|
506
507
|
}
|
|
@@ -1136,7 +1136,11 @@ export class BezierRenderer extends rendererBase(SDK.CSSPropertyParserMatchers.B
|
|
|
1136
1136
|
const bezierText = document.createElement('span');
|
|
1137
1137
|
bezierText.append(...nodes);
|
|
1138
1138
|
new BezierPopoverIcon({treeElement: this.#treeElement, swatchPopoverHelper, swatch: icon, bezierText});
|
|
1139
|
-
|
|
1139
|
+
const iconAndTextContainer = document.createElement('span');
|
|
1140
|
+
iconAndTextContainer.classList.add('bezier-icon-and-text');
|
|
1141
|
+
iconAndTextContainer.append(icon);
|
|
1142
|
+
iconAndTextContainer.append(bezierText);
|
|
1143
|
+
return [iconAndTextContainer];
|
|
1140
1144
|
}
|
|
1141
1145
|
}
|
|
1142
1146
|
|
|
@@ -303,3 +303,20 @@ devtools-icon.open-in-animations-panel {
|
|
|
303
303
|
.tracing-anchor {
|
|
304
304
|
text-decoration: underline dotted var(--sys-color-token-meta);
|
|
305
305
|
}
|
|
306
|
+
|
|
307
|
+
devtools-icon.bezier-swatch-icon {
|
|
308
|
+
position: relative;
|
|
309
|
+
transform: scale(0.7);
|
|
310
|
+
margin: -5px -2px -3px -4px;
|
|
311
|
+
user-select: none;
|
|
312
|
+
color: var(--icon-css);
|
|
313
|
+
cursor: default;
|
|
314
|
+
|
|
315
|
+
&:hover {
|
|
316
|
+
color: var(--icon-css-hover);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
span.bezier-icon-and-text {
|
|
321
|
+
white-space: nowrap;
|
|
322
|
+
}
|
|
@@ -442,11 +442,13 @@ export class DeviceModeView extends UI.Widget.VBox {
|
|
|
442
442
|
}
|
|
443
443
|
|
|
444
444
|
override wasShown(): void {
|
|
445
|
+
super.wasShown();
|
|
445
446
|
this.measureHandles();
|
|
446
447
|
this.toolbar.restore();
|
|
447
448
|
}
|
|
448
449
|
|
|
449
450
|
override willHide(): void {
|
|
451
|
+
super.willHide();
|
|
450
452
|
this.model.emulate(EmulationModel.DeviceModeModel.Type.None, null, null);
|
|
451
453
|
}
|
|
452
454
|
|
|
@@ -7,7 +7,6 @@ import type * as UI from '../../ui/legacy/legacy.js';
|
|
|
7
7
|
import * as Console from '../console/console.js';
|
|
8
8
|
|
|
9
9
|
import {ConsoleInsight} from './components/ConsoleInsight.js';
|
|
10
|
-
import {PromptBuilder} from './PromptBuilder.js';
|
|
11
10
|
|
|
12
11
|
export class ActionDelegate implements UI.ActionRegistration.ActionDelegate {
|
|
13
12
|
handleAction(context: UI.Context.Context, actionId: string): boolean {
|
|
@@ -24,7 +23,7 @@ export class ActionDelegate implements UI.ActionRegistration.ActionDelegate {
|
|
|
24
23
|
} else if (actionId === 'explain.console-message.hover') {
|
|
25
24
|
Host.userMetrics.actionTaken(Host.UserMetrics.Action.InsightRequestedViaHoverButton);
|
|
26
25
|
}
|
|
27
|
-
const promptBuilder = new PromptBuilder(consoleViewMessage);
|
|
26
|
+
const promptBuilder = new Console.PromptBuilder.PromptBuilder(consoleViewMessage);
|
|
28
27
|
const aidaClient = new Host.AidaClient.AidaClient();
|
|
29
28
|
void ConsoleInsight.create(promptBuilder, aidaClient).then(insight => {
|
|
30
29
|
consoleViewMessage.setInsight(insight);
|
|
@@ -17,7 +17,7 @@ import * as MarkdownView from '../../../ui/components/markdown_view/markdown_vie
|
|
|
17
17
|
import * as UI from '../../../ui/legacy/legacy.js';
|
|
18
18
|
import * as Lit from '../../../ui/lit/lit.js';
|
|
19
19
|
import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
|
|
20
|
-
import
|
|
20
|
+
import * as Console from '../../console/console.js';
|
|
21
21
|
|
|
22
22
|
import styles from './consoleInsight.css.js';
|
|
23
23
|
import listStyles from './consoleInsightSourcesList.css.js';
|
|
@@ -163,18 +163,18 @@ export class CloseEvent extends Event {
|
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
type PublicPromptBuilder = Pick<PromptBuilder, 'buildPrompt'|'getSearchQuery'>;
|
|
166
|
+
type PublicPromptBuilder = Pick<Console.PromptBuilder.PromptBuilder, 'buildPrompt'|'getSearchQuery'>;
|
|
167
167
|
type PublicAidaClient = Pick<Host.AidaClient.AidaClient, 'doConversation'|'registerClientEvent'>;
|
|
168
168
|
|
|
169
|
-
function localizeType(sourceType: SourceType): string {
|
|
169
|
+
function localizeType(sourceType: Console.PromptBuilder.SourceType): string {
|
|
170
170
|
switch (sourceType) {
|
|
171
|
-
case SourceType.MESSAGE:
|
|
171
|
+
case Console.PromptBuilder.SourceType.MESSAGE:
|
|
172
172
|
return i18nString(UIStrings.consoleMessage);
|
|
173
|
-
case SourceType.STACKTRACE:
|
|
173
|
+
case Console.PromptBuilder.SourceType.STACKTRACE:
|
|
174
174
|
return i18nString(UIStrings.stackTrace);
|
|
175
|
-
case SourceType.NETWORK_REQUEST:
|
|
175
|
+
case Console.PromptBuilder.SourceType.NETWORK_REQUEST:
|
|
176
176
|
return i18nString(UIStrings.networkRequest);
|
|
177
|
-
case SourceType.RELATED_CODE:
|
|
177
|
+
case Console.PromptBuilder.SourceType.RELATED_CODE:
|
|
178
178
|
return i18nString(UIStrings.relatedCode);
|
|
179
179
|
}
|
|
180
180
|
}
|
|
@@ -205,7 +205,7 @@ type StateData = {
|
|
|
205
205
|
type: State.INSIGHT,
|
|
206
206
|
tokens: MarkdownView.MarkdownView.MarkdownViewData['tokens'],
|
|
207
207
|
validMarkdown: boolean,
|
|
208
|
-
sources: Source[],
|
|
208
|
+
sources: Console.PromptBuilder.Source[],
|
|
209
209
|
isPageReloadRecommended: boolean,
|
|
210
210
|
completed: boolean,
|
|
211
211
|
directCitationUrls: string[],
|
|
@@ -215,7 +215,7 @@ type StateData = {
|
|
|
215
215
|
error: string,
|
|
216
216
|
}|{
|
|
217
217
|
type: State.CONSENT_REMINDER,
|
|
218
|
-
sources: Source[],
|
|
218
|
+
sources: Console.PromptBuilder.Source[],
|
|
219
219
|
isPageReloadRecommended: boolean,
|
|
220
220
|
}|{
|
|
221
221
|
type: State.SETTING_IS_NOT_TRUE,
|
|
@@ -631,7 +631,9 @@ export class ConsoleInsight extends HTMLElement {
|
|
|
631
631
|
|
|
632
632
|
async *
|
|
633
633
|
#getInsight(): AsyncGenerator<
|
|
634
|
-
{sources: Source[], isPageReloadRecommended: boolean}&
|
|
634
|
+
{sources: Console.PromptBuilder.Source[], isPageReloadRecommended: boolean}&
|
|
635
|
+
Host.AidaClient.DoConversationResponse,
|
|
636
|
+
void, void> {
|
|
635
637
|
const {prompt, sources, isPageReloadRecommended} = await this.#promptBuilder.buildPrompt();
|
|
636
638
|
try {
|
|
637
639
|
for await (const response of this.#aidaClient.doConversation(
|
|
@@ -1142,7 +1144,7 @@ export class ConsoleInsight extends HTMLElement {
|
|
|
1142
1144
|
|
|
1143
1145
|
class ConsoleInsightSourcesList extends HTMLElement {
|
|
1144
1146
|
readonly #shadow = this.attachShadow({mode: 'open'});
|
|
1145
|
-
#sources: Source[] = [];
|
|
1147
|
+
#sources: Console.PromptBuilder.Source[] = [];
|
|
1146
1148
|
#isPageReloadRecommended = false;
|
|
1147
1149
|
|
|
1148
1150
|
#render(): void {
|
|
@@ -1167,7 +1169,7 @@ class ConsoleInsightSourcesList extends HTMLElement {
|
|
|
1167
1169
|
// clang-format on
|
|
1168
1170
|
}
|
|
1169
1171
|
|
|
1170
|
-
set sources(values: Source[]) {
|
|
1172
|
+
set sources(values: Console.PromptBuilder.Source[]) {
|
|
1171
1173
|
this.#sources = values;
|
|
1172
1174
|
this.#render();
|
|
1173
1175
|
}
|
|
@@ -63,7 +63,7 @@ UI.ViewManager.registerViewExtension({
|
|
|
63
63
|
isPreviewFeature: true,
|
|
64
64
|
async loadView() {
|
|
65
65
|
const Timeline = await loadTimelineModule();
|
|
66
|
-
return Timeline.TimelinePanel.TimelinePanel.instance({forceNew: null
|
|
66
|
+
return Timeline.TimelinePanel.TimelinePanel.instance({forceNew: null});
|
|
67
67
|
},
|
|
68
68
|
});
|
|
69
69
|
|
|
@@ -193,10 +193,12 @@ export class Layers3DView extends Common.ObjectWrapper.eventMixin<EventTypes, ty
|
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
override willHide(): void {
|
|
196
|
+
super.willHide();
|
|
196
197
|
this.textureManager.suspend();
|
|
197
198
|
}
|
|
198
199
|
|
|
199
200
|
override wasShown(): void {
|
|
201
|
+
super.wasShown();
|
|
200
202
|
this.textureManager.resume();
|
|
201
203
|
if (!this.needsUpdate) {
|
|
202
204
|
return;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright 2018 The Chromium Authors
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
|
+
/* eslint-disable rulesdir/no-imperative-dom-api */
|
|
4
5
|
|
|
5
6
|
import * as Common from '../../core/common/common.js';
|
|
6
7
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
@@ -215,6 +215,7 @@ export class MainView extends UI.Panel.PanelWithSidebar implements SDK.TargetMan
|
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
override willHide(): void {
|
|
218
|
+
super.willHide();
|
|
218
219
|
for (const model of SDK.TargetManager.TargetManager.instance().models(MediaModel, {scoped: true})) {
|
|
219
220
|
this.removeEventListeners(model);
|
|
220
221
|
}
|
|
@@ -281,6 +281,7 @@ export class TickingFlameChart extends UI.Widget.VBox {
|
|
|
281
281
|
}
|
|
282
282
|
|
|
283
283
|
override willHide(): void {
|
|
284
|
+
super.willHide();
|
|
284
285
|
this.isShown = false;
|
|
285
286
|
if (this.ticking) {
|
|
286
287
|
this.stop();
|
|
@@ -288,6 +289,7 @@ export class TickingFlameChart extends UI.Widget.VBox {
|
|
|
288
289
|
}
|
|
289
290
|
|
|
290
291
|
override wasShown(): void {
|
|
292
|
+
super.wasShown();
|
|
291
293
|
this.isShown = true;
|
|
292
294
|
if (this.#canTick && !this.ticking) {
|
|
293
295
|
this.start();
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright 2015 The Chromium Authors
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
|
+
/* eslint-disable rulesdir/no-lit-render-outside-of-view */
|
|
4
5
|
/* eslint-disable rulesdir/no-imperative-dom-api */
|
|
5
6
|
|
|
6
7
|
import '../../ui/legacy/legacy.js';
|
|
@@ -12,10 +13,13 @@ import * as SDK from '../../core/sdk/sdk.js';
|
|
|
12
13
|
import * as Logs from '../../models/logs/logs.js';
|
|
13
14
|
import * as Buttons from '../../ui/components/buttons/buttons.js';
|
|
14
15
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
16
|
+
import {Directives, html, render} from '../../ui/lit/lit.js';
|
|
15
17
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
16
18
|
|
|
17
19
|
import blockedURLsPaneStyles from './blockedURLsPane.css.js';
|
|
18
20
|
|
|
21
|
+
const {ref} = Directives;
|
|
22
|
+
|
|
19
23
|
const UIStrings = {
|
|
20
24
|
/**
|
|
21
25
|
* @description Text to enable blocking of network requests
|
|
@@ -70,45 +74,81 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
|
70
74
|
const NETWORK_REQUEST_BLOCKING_EXPLANATION_URL =
|
|
71
75
|
'https://developer.chrome.com/docs/devtools/network-request-blocking' as Platform.DevToolsPath.UrlString;
|
|
72
76
|
|
|
77
|
+
const {bindToAction} = UI.UIUtils;
|
|
78
|
+
|
|
79
|
+
interface ViewInput {
|
|
80
|
+
list: UI.ListWidget.ListWidget<SDK.NetworkManager.RequestCondition>;
|
|
81
|
+
enabled: boolean;
|
|
82
|
+
toggleEnabled: () => void;
|
|
83
|
+
addPattern: () => void;
|
|
84
|
+
}
|
|
85
|
+
type View = (input: ViewInput, output: object, target: HTMLElement) => void;
|
|
86
|
+
export const DEFAULT_VIEW: View = (input, output, target) => {
|
|
87
|
+
render(
|
|
88
|
+
// clang-format off
|
|
89
|
+
html`
|
|
90
|
+
<style>${blockedURLsPaneStyles}</style>
|
|
91
|
+
<devtools-toolbar jslog=${VisualLogging.toolbar()}>
|
|
92
|
+
<devtools-checkbox
|
|
93
|
+
?checked=${input.enabled}
|
|
94
|
+
@click=${input.toggleEnabled}
|
|
95
|
+
.jslogContext=${'network.enable-request-blocking'}>
|
|
96
|
+
${i18nString(UIStrings.enableNetworkRequestBlocking)}
|
|
97
|
+
</devtools-checkbox>
|
|
98
|
+
<div class="toolbar-divider"></div>
|
|
99
|
+
<devtools-button ${bindToAction('network.add-network-request-blocking-pattern')}></devtools-button>
|
|
100
|
+
<devtools-button ${bindToAction('network.remove-all-network-request-blocking-patterns')}></devtools-button>
|
|
101
|
+
</devtools-toolbar>
|
|
102
|
+
<div class=empty-state ${ref(e => input.list.setEmptyPlaceholder(e ?? null))}>
|
|
103
|
+
<span class=empty-state-header>${i18nString(UIStrings.noNetworkRequestsBlocked)}</span>
|
|
104
|
+
<div class=empty-state-description>
|
|
105
|
+
<span>${i18nString(UIStrings.addPatternToBlock, {PH1: i18nString(UIStrings.addPattern)})}</span>
|
|
106
|
+
<x-link
|
|
107
|
+
href=${NETWORK_REQUEST_BLOCKING_EXPLANATION_URL}
|
|
108
|
+
tabindex=0
|
|
109
|
+
class=devtools-link
|
|
110
|
+
jslog=${VisualLogging.link().track({click: true, keydown:'Enter|Space'}).context('learn-more')}>
|
|
111
|
+
${i18nString(UIStrings.learnMore)}
|
|
112
|
+
</x-link>
|
|
113
|
+
</div>
|
|
114
|
+
<devtools-button
|
|
115
|
+
@click=${input.addPattern}
|
|
116
|
+
class=add-button
|
|
117
|
+
.jslogContext=${'network.add-network-request-blocking-pattern'}
|
|
118
|
+
aria-label=${i18nString(UIStrings.addNetworkRequestBlockingPattern)}
|
|
119
|
+
.variant=${Buttons.Button.Variant.TONAL}>
|
|
120
|
+
${i18nString(UIStrings.addPattern)}
|
|
121
|
+
</devtools-button>
|
|
122
|
+
</div>
|
|
123
|
+
<devtools-widget .widgetConfig=${UI.Widget.widgetConfig(UI.Widget.VBox)}>${input.list.element}</devtools-widget>
|
|
124
|
+
`,
|
|
125
|
+
// clang-format on
|
|
126
|
+
target);
|
|
127
|
+
};
|
|
128
|
+
|
|
73
129
|
export class BlockedURLsPane extends UI.Widget.VBox implements
|
|
74
|
-
UI.ListWidget.Delegate<SDK.NetworkManager.
|
|
130
|
+
UI.ListWidget.Delegate<SDK.NetworkManager.RequestCondition> {
|
|
75
131
|
private manager: SDK.NetworkManager.MultitargetNetworkManager;
|
|
76
|
-
private readonly
|
|
77
|
-
private
|
|
78
|
-
private readonly list: UI.ListWidget.ListWidget<SDK.NetworkManager.BlockedPattern>;
|
|
79
|
-
private editor: UI.ListWidget.Editor<SDK.NetworkManager.BlockedPattern>|null;
|
|
132
|
+
private readonly list: UI.ListWidget.ListWidget<SDK.NetworkManager.RequestCondition>;
|
|
133
|
+
private editor: UI.ListWidget.Editor<SDK.NetworkManager.RequestCondition>|null;
|
|
80
134
|
private blockedCountForUrl: Map<string, number>;
|
|
135
|
+
#view: View;
|
|
81
136
|
|
|
82
|
-
constructor() {
|
|
83
|
-
super({
|
|
137
|
+
constructor(target?: HTMLElement, view = DEFAULT_VIEW) {
|
|
138
|
+
super(target, {
|
|
84
139
|
jslog: `${VisualLogging.panel('network.blocked-urls').track({resize: true})}`,
|
|
85
140
|
useShadowDom: true,
|
|
86
141
|
});
|
|
87
|
-
this
|
|
142
|
+
this.#view = view;
|
|
88
143
|
|
|
89
144
|
this.manager = SDK.NetworkManager.MultitargetNetworkManager.instance();
|
|
90
145
|
this.manager.addEventListener(
|
|
91
146
|
SDK.NetworkManager.MultitargetNetworkManager.Events.BLOCKED_PATTERNS_CHANGED, this.update, this);
|
|
92
147
|
|
|
93
|
-
this.toolbar = this.contentElement.createChild('devtools-toolbar');
|
|
94
|
-
this.enabledCheckbox = new UI.Toolbar.ToolbarCheckbox(
|
|
95
|
-
i18nString(UIStrings.enableNetworkRequestBlocking), undefined, this.toggleEnabled.bind(this),
|
|
96
|
-
'network.enable-request-blocking');
|
|
97
|
-
this.toolbar.appendToolbarItem(this.enabledCheckbox);
|
|
98
|
-
this.toolbar.appendSeparator();
|
|
99
|
-
this.toolbar.appendToolbarItem(
|
|
100
|
-
UI.Toolbar.Toolbar.createActionButton('network.add-network-request-blocking-pattern'));
|
|
101
|
-
this.toolbar.appendToolbarItem(
|
|
102
|
-
UI.Toolbar.Toolbar.createActionButton('network.remove-all-network-request-blocking-patterns'));
|
|
103
|
-
this.toolbar.setAttribute('jslog', `${VisualLogging.toolbar()}`);
|
|
104
|
-
|
|
105
148
|
this.list = new UI.ListWidget.ListWidget(this);
|
|
106
149
|
this.list.registerRequiredCSS(blockedURLsPaneStyles);
|
|
107
150
|
this.list.element.classList.add('blocked-urls');
|
|
108
151
|
|
|
109
|
-
this.list.setEmptyPlaceholder(this.createEmptyPlaceholder());
|
|
110
|
-
this.list.show(this.contentElement);
|
|
111
|
-
|
|
112
152
|
this.editor = null;
|
|
113
153
|
|
|
114
154
|
this.blockedCountForUrl = new Map();
|
|
@@ -120,104 +160,92 @@ export class BlockedURLsPane extends UI.Widget.VBox implements
|
|
|
120
160
|
Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.Reset, this.onNetworkLogReset, this);
|
|
121
161
|
}
|
|
122
162
|
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const addButton = UI.UIUtils.createTextButton(i18nString(UIStrings.addPattern), this.addPattern.bind(this), {
|
|
135
|
-
className: 'add-button',
|
|
136
|
-
jslogContext: 'network.add-network-request-blocking-pattern',
|
|
137
|
-
variant: Buttons.Button.Variant.TONAL,
|
|
138
|
-
});
|
|
139
|
-
UI.ARIAUtils.setLabel(addButton, i18nString(UIStrings.addNetworkRequestBlockingPattern));
|
|
140
|
-
placeholder.appendChild(addButton);
|
|
141
|
-
return placeholder;
|
|
163
|
+
override performUpdate(): void {
|
|
164
|
+
const enabled = this.manager.blockingEnabled();
|
|
165
|
+
this.list.element.classList.toggle('blocking-disabled', !enabled && Boolean(this.manager.requestConditions.count));
|
|
166
|
+
|
|
167
|
+
const input: ViewInput = {
|
|
168
|
+
addPattern: this.addPattern.bind(this),
|
|
169
|
+
toggleEnabled: this.toggleEnabled.bind(this),
|
|
170
|
+
enabled,
|
|
171
|
+
list: this.list,
|
|
172
|
+
};
|
|
173
|
+
this.#view(input, {}, this.contentElement);
|
|
142
174
|
}
|
|
143
175
|
|
|
144
176
|
addPattern(): void {
|
|
145
177
|
this.manager.setBlockingEnabled(true);
|
|
146
|
-
this.list.addNewItem(
|
|
178
|
+
this.list.addNewItem(
|
|
179
|
+
0, new SDK.NetworkManager.RequestCondition({url: Platform.DevToolsPath.EmptyUrlString, enabled: true}));
|
|
147
180
|
}
|
|
148
181
|
|
|
149
182
|
removeAllPatterns(): void {
|
|
150
|
-
this.manager.
|
|
183
|
+
this.manager.requestConditions.clear();
|
|
151
184
|
}
|
|
152
185
|
|
|
153
|
-
renderItem(
|
|
154
|
-
const count = this.blockedRequestsCount(
|
|
186
|
+
renderItem(condition: SDK.NetworkManager.RequestCondition, editable: boolean): Element {
|
|
187
|
+
const count = this.blockedRequestsCount(condition.url);
|
|
155
188
|
const element = document.createElement('div');
|
|
156
189
|
element.classList.add('blocked-url');
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
190
|
+
const toggle = (e: Event): void => {
|
|
191
|
+
if (editable) {
|
|
192
|
+
e.consume(true);
|
|
193
|
+
condition.enabled = !condition.enabled;
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
render(
|
|
197
|
+
// clang-format off
|
|
198
|
+
html`
|
|
199
|
+
<input class=blocked-url-checkbox
|
|
200
|
+
@click=${toggle}
|
|
201
|
+
type=checkbox
|
|
202
|
+
?checked=${condition.enabled}
|
|
203
|
+
?disabled=${!editable}
|
|
204
|
+
.jslog=${VisualLogging.toggle().track({ change: true })}>
|
|
205
|
+
<div @click=${toggle} class=blocked-url-label>${condition.url}</div>
|
|
206
|
+
<div class=blocked-url-count>${i18nString(UIStrings.dBlocked, {PH1: count})}</div>`,
|
|
207
|
+
// clang-format off
|
|
208
|
+
element);
|
|
168
209
|
return element;
|
|
169
210
|
}
|
|
170
211
|
|
|
171
|
-
private togglePattern(pattern: SDK.NetworkManager.BlockedPattern, event: Event): void {
|
|
172
|
-
event.consume(true);
|
|
173
|
-
const patterns = this.manager.blockedPatterns();
|
|
174
|
-
patterns.splice(patterns.indexOf(pattern), 1, {enabled: !pattern.enabled, url: pattern.url});
|
|
175
|
-
this.manager.setBlockedPatterns(patterns);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
212
|
private toggleEnabled(): void {
|
|
179
213
|
this.manager.setBlockingEnabled(!this.manager.blockingEnabled());
|
|
180
214
|
this.update();
|
|
181
215
|
}
|
|
182
216
|
|
|
183
|
-
removeItemRequested(
|
|
184
|
-
|
|
185
|
-
patterns.splice(index, 1);
|
|
186
|
-
this.manager.setBlockedPatterns(patterns);
|
|
217
|
+
removeItemRequested(condition: SDK.NetworkManager.RequestCondition): void {
|
|
218
|
+
this.manager.requestConditions.delete(condition);
|
|
187
219
|
UI.ARIAUtils.LiveAnnouncer.alert(UIStrings.itemDeleted);
|
|
188
220
|
}
|
|
189
221
|
|
|
190
|
-
beginEdit(pattern: SDK.NetworkManager.
|
|
222
|
+
beginEdit(pattern: SDK.NetworkManager.RequestCondition): UI.ListWidget.Editor<SDK.NetworkManager.RequestCondition> {
|
|
191
223
|
this.editor = this.createEditor();
|
|
192
224
|
this.editor.control('url').value = pattern.url;
|
|
193
225
|
return this.editor;
|
|
194
226
|
}
|
|
195
227
|
|
|
196
228
|
commitEdit(
|
|
197
|
-
item: SDK.NetworkManager.
|
|
229
|
+
item: SDK.NetworkManager.RequestCondition, editor: UI.ListWidget.Editor<SDK.NetworkManager.RequestCondition>,
|
|
198
230
|
isNew: boolean): void {
|
|
199
|
-
|
|
200
|
-
|
|
231
|
+
item.url =
|
|
232
|
+
editor.control('url').value as Platform.DevToolsPath.UrlString;
|
|
201
233
|
if (isNew) {
|
|
202
|
-
|
|
203
|
-
} else {
|
|
204
|
-
patterns.splice(patterns.indexOf(item), 1, {enabled: true, url});
|
|
234
|
+
this.manager.requestConditions.add(item);
|
|
205
235
|
}
|
|
206
|
-
|
|
207
|
-
this.manager.setBlockedPatterns(patterns);
|
|
208
236
|
}
|
|
209
237
|
|
|
210
|
-
private createEditor(): UI.ListWidget.Editor<SDK.NetworkManager.
|
|
238
|
+
private createEditor(): UI.ListWidget.Editor<SDK.NetworkManager.RequestCondition> {
|
|
211
239
|
if (this.editor) {
|
|
212
240
|
return this.editor;
|
|
213
241
|
}
|
|
214
242
|
|
|
215
|
-
const editor = new UI.ListWidget.Editor<SDK.NetworkManager.
|
|
243
|
+
const editor = new UI.ListWidget.Editor<SDK.NetworkManager.RequestCondition>();
|
|
216
244
|
const content = editor.contentElement();
|
|
217
245
|
const titles = content.createChild('div', 'blocked-url-edit-row');
|
|
218
246
|
titles.createChild('div').textContent = i18nString(UIStrings.textPatternToBlockMatching);
|
|
219
247
|
const fields = content.createChild('div', 'blocked-url-edit-row');
|
|
220
|
-
const validator = (_item: SDK.NetworkManager.
|
|
248
|
+
const validator = (_item: SDK.NetworkManager.RequestCondition, _index: number, input: UI.ListWidget.EditorControl): {
|
|
221
249
|
valid: boolean,
|
|
222
250
|
errorMessage: Common.UIString.LocalizedString|undefined,
|
|
223
251
|
} => {
|
|
@@ -226,7 +254,7 @@ export class BlockedURLsPane extends UI.Widget.VBox implements
|
|
|
226
254
|
if (!input.value) {
|
|
227
255
|
errorMessage = i18nString(UIStrings.patternInputCannotBeEmpty);
|
|
228
256
|
valid = false;
|
|
229
|
-
} else if (this.manager.
|
|
257
|
+
} else if (this.manager.requestConditions.has(input.value)) {
|
|
230
258
|
errorMessage = i18nString(UIStrings.patternAlreadyExists);
|
|
231
259
|
valid = false;
|
|
232
260
|
}
|
|
@@ -239,13 +267,11 @@ export class BlockedURLsPane extends UI.Widget.VBox implements
|
|
|
239
267
|
|
|
240
268
|
update(): void {
|
|
241
269
|
const enabled = this.manager.blockingEnabled();
|
|
242
|
-
this.list.element.classList.toggle('blocking-disabled', !enabled && Boolean(this.manager.blockedPatterns().length));
|
|
243
|
-
|
|
244
|
-
this.enabledCheckbox.setChecked(enabled);
|
|
245
270
|
this.list.clear();
|
|
246
|
-
for (const pattern of this.manager.
|
|
271
|
+
for (const pattern of this.manager.requestConditions.conditions) {
|
|
247
272
|
this.list.appendItem(pattern, enabled);
|
|
248
273
|
}
|
|
274
|
+
this.requestUpdate();
|
|
249
275
|
}
|
|
250
276
|
|
|
251
277
|
private blockedRequestsCount(url: string): number {
|
|
@@ -268,6 +268,7 @@ export class NetworkItemView extends UI.TabbedPane.TabbedPane {
|
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
override willHide(): void {
|
|
271
|
+
super.willHide();
|
|
271
272
|
this.#request.removeEventListener(
|
|
272
273
|
SDK.NetworkRequest.Events.REQUEST_HEADERS_CHANGED, this.requestHeadersChanged, this);
|
|
273
274
|
this.#request.removeEventListener(
|
|
@@ -1390,6 +1390,7 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
|
|
|
1390
1390
|
}
|
|
1391
1391
|
|
|
1392
1392
|
override willHide(): void {
|
|
1393
|
+
super.willHide();
|
|
1393
1394
|
this.columnsInternal.willHide();
|
|
1394
1395
|
}
|
|
1395
1396
|
|
|
@@ -1847,23 +1848,24 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
|
|
|
1847
1848
|
if (request) {
|
|
1848
1849
|
const maxBlockedURLLength = 20;
|
|
1849
1850
|
const manager = SDK.NetworkManager.MultitargetNetworkManager.instance();
|
|
1850
|
-
let patterns = manager.blockedPatterns();
|
|
1851
1851
|
|
|
1852
1852
|
function addBlockedURL(url: string): void {
|
|
1853
|
-
|
|
1854
|
-
|
|
1853
|
+
manager.requestConditions.add(
|
|
1854
|
+
new SDK.NetworkManager.RequestCondition({enabled: true, url: url as Platform.DevToolsPath.UrlString}));
|
|
1855
1855
|
manager.setBlockingEnabled(true);
|
|
1856
1856
|
void UI.ViewManager.ViewManager.instance().showView('network.blocked-urls');
|
|
1857
1857
|
}
|
|
1858
1858
|
|
|
1859
1859
|
function removeBlockedURL(url: string): void {
|
|
1860
|
-
|
|
1861
|
-
|
|
1860
|
+
const entry = manager.requestConditions.conditions.find(condition => condition.url === url);
|
|
1861
|
+
if (entry) {
|
|
1862
|
+
manager.requestConditions.delete(entry);
|
|
1863
|
+
}
|
|
1862
1864
|
void UI.ViewManager.ViewManager.instance().showView('network.blocked-urls');
|
|
1863
1865
|
}
|
|
1864
1866
|
|
|
1865
1867
|
const urlWithoutScheme = request.parsedURL.urlWithoutScheme();
|
|
1866
|
-
if (urlWithoutScheme && !
|
|
1868
|
+
if (urlWithoutScheme && !manager.requestConditions.has(urlWithoutScheme)) {
|
|
1867
1869
|
contextMenu.debugSection().appendItem(
|
|
1868
1870
|
i18nString(UIStrings.blockRequestUrl), addBlockedURL.bind(null, urlWithoutScheme),
|
|
1869
1871
|
{jslogContext: 'block-request-url'});
|
|
@@ -1875,7 +1877,7 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
|
|
|
1875
1877
|
}
|
|
1876
1878
|
|
|
1877
1879
|
const domain = request.parsedURL.domain();
|
|
1878
|
-
if (domain && !
|
|
1880
|
+
if (domain && !manager.requestConditions.has(domain)) {
|
|
1879
1881
|
contextMenu.debugSection().appendItem(
|
|
1880
1882
|
i18nString(UIStrings.blockRequestDomain), addBlockedURL.bind(null, domain),
|
|
1881
1883
|
{jslogContext: 'block-request-domain'});
|
|
@@ -317,6 +317,7 @@ export class RequestCookiesView extends UI.Widget.Widget {
|
|
|
317
317
|
}
|
|
318
318
|
|
|
319
319
|
override willHide(): void {
|
|
320
|
+
super.willHide();
|
|
320
321
|
this.request.removeEventListener(
|
|
321
322
|
SDK.NetworkRequest.Events.REQUEST_HEADERS_CHANGED, this.refreshRequestCookiesView, this);
|
|
322
323
|
this.request.removeEventListener(
|