chrome-devtools-frontend 1.0.1556696 → 1.0.1559913
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/front_end/Images/src/container.svg +4 -0
- package/front_end/core/common/Gzip.ts +15 -0
- package/front_end/core/common/Object.ts +5 -1
- package/front_end/core/host/ResourceLoader.ts +1 -1
- package/front_end/core/host/UserMetrics.ts +3 -1
- package/front_end/core/sdk/CSSMetadata.ts +6 -6
- package/front_end/core/sdk/CSSModel.ts +2 -2
- package/front_end/core/sdk/DOMModel.ts +14 -3
- package/front_end/core/sdk/NetworkManager.ts +0 -7
- package/front_end/core/sdk/SourceMap.ts +16 -2
- package/front_end/core/sdk/SourceMapManager.ts +1 -1
- package/front_end/core/sdk/SourceMapScopesInfo.ts +11 -4
- package/front_end/entrypoints/formatter_worker/FormatterActions.ts +1 -0
- package/front_end/entrypoints/formatter_worker/ScopeParser.ts +51 -8
- package/front_end/entrypoints/main/GlobalAiButton.ts +5 -1
- package/front_end/generated/Deprecation.ts +0 -7
- package/front_end/generated/InspectorBackendCommands.ts +5 -4
- package/front_end/generated/SupportedCSSProperties.js +64 -32
- package/front_end/generated/protocol-mapping.d.ts +9 -0
- package/front_end/generated/protocol-proxy-api.d.ts +7 -0
- package/front_end/generated/protocol.ts +23 -1
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +1 -1
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +11 -7
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +3 -3
- package/front_end/models/bindings/CompilerScriptMapping.ts +7 -6
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +4 -4
- package/front_end/models/javascript_metadata/NativeFunctions.js +2 -2
- package/front_end/models/stack_trace/StackTraceImpl.ts +5 -3
- package/front_end/models/stack_trace/StackTraceModel.ts +53 -40
- package/front_end/models/trace/EventsSerializer.ts +8 -2
- package/front_end/models/trace/LanternComputationData.ts +4 -3
- package/front_end/models/trace/Processor.ts +6 -5
- package/front_end/models/trace/Styles.ts +10 -1
- package/front_end/models/trace/handlers/LargestImagePaintHandler.ts +2 -2
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +2 -2
- package/front_end/models/trace/handlers/MetaHandler.ts +14 -0
- package/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +54 -34
- package/front_end/models/trace/helpers/Timing.ts +8 -1
- package/front_end/models/trace/insights/Common.ts +1 -1
- package/front_end/models/trace/insights/LCPBreakdown.ts +4 -4
- package/front_end/models/trace/insights/LCPDiscovery.ts +3 -3
- package/front_end/models/trace/insights/RenderBlocking.ts +1 -1
- package/front_end/models/trace/insights/types.ts +1 -1
- package/front_end/models/trace/types/TraceEvents.ts +62 -10
- package/front_end/panels/application/AppManifestView.ts +134 -223
- package/front_end/panels/application/CookieItemsView.ts +1 -0
- package/front_end/panels/application/SharedStorageTreeElement.ts +3 -0
- package/front_end/panels/application/appManifestView.css +1 -1
- package/front_end/panels/common/AiCodeGenerationTeaser.ts +48 -12
- package/front_end/panels/common/aiCodeGenerationTeaser.css +14 -0
- package/front_end/panels/common/common.ts +1 -1
- package/front_end/panels/console/ConsoleViewMessage.ts +4 -3
- package/front_end/panels/console/consoleView.css +1 -1
- package/front_end/panels/elements/CSSRuleValidator.ts +38 -0
- package/front_end/panels/elements/ElementsTreeElement.ts +108 -58
- package/front_end/panels/elements/ElementsTreeOutline.ts +0 -17
- package/front_end/panels/elements/ElementsTreeOutlineRenderer.ts +7 -1
- package/front_end/panels/elements/StylesSidebarPane.ts +15 -4
- package/front_end/panels/elements/components/AdornerManager.ts +8 -0
- package/front_end/panels/emulation/DeviceModeToolbar.ts +3 -1
- package/front_end/panels/issues/AffectedResourcesView.ts +0 -1
- package/front_end/panels/lighthouse/LighthousePanel.ts +10 -0
- package/front_end/panels/lighthouse/lighthousePanel.css +46 -3
- package/front_end/panels/network/NetworkLogViewColumns.ts +9 -9
- package/front_end/panels/network/RequestCookiesView.ts +125 -141
- package/front_end/panels/network/components/RequestHeadersView.ts +2 -2
- package/front_end/panels/network/requestCookiesView.css +22 -20
- package/front_end/panels/recorder/components/RecordingView.ts +3 -3
- package/front_end/panels/recorder/components/StepView.ts +2 -1
- package/front_end/panels/settings/keybindsSettingsTab.css +4 -0
- package/front_end/panels/sources/CallStackSidebarPane.ts +7 -3
- package/front_end/panels/sources/DebuggerPausedMessage.ts +125 -90
- package/front_end/panels/sources/SourcesPanel.ts +10 -7
- package/front_end/panels/sources/debuggerPausedMessage.css +8 -0
- package/front_end/panels/timeline/StatusDialog.ts +4 -3
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +3 -16
- package/front_end/panels/timeline/TimelineFlameChartView.ts +64 -21
- package/front_end/panels/timeline/TimelinePanel.ts +71 -24
- package/front_end/panels/timeline/TimelineUIUtils.ts +28 -2
- package/front_end/panels/timeline/TimingsTrackAppender.ts +3 -1
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +1 -1
- package/front_end/panels/timeline/components/insights/RenderBlocking.ts +6 -4
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +2 -0
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +4 -0
- package/front_end/panels/timeline/timelinePanel.css +8 -1
- package/front_end/panels/timeline/utils/EntryNodes.ts +2 -1
- package/front_end/third_party/acorn/estree-legacy.d.ts +2 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +12 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +14 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +6 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts +0 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js +0 -20
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +10 -14
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +14 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +12 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.js +22 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +9 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +26 -0
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +72 -15
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +12 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +14 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +6 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts +0 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js +0 -20
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +11 -15
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +14 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +12 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.js +22 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +9 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +26 -0
- package/front_end/third_party/puppeteer/package/package.json +1 -1
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +18 -0
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +16 -2
- package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +13 -0
- package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +0 -33
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +14 -28
- package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +19 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +19 -0
- package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +30 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +15 -6
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/ui/components/icon_button/iconButton.css +3 -1
- package/front_end/ui/components/report_view/ReportView.ts +11 -2
- package/front_end/ui/components/report_view/report.css +16 -0
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +202 -32
- package/front_end/ui/components/text_editor/config.ts +6 -6
- package/front_end/ui/legacy/ContextMenu.ts +11 -2
- package/front_end/ui/legacy/SearchableView.ts +11 -5
- package/front_end/ui/legacy/SplitWidget.ts +1 -1
- package/front_end/ui/legacy/TextPrompt.ts +1 -1
- package/front_end/ui/legacy/Toolbar.ts +4 -0
- package/front_end/ui/legacy/UIUtils.ts +0 -2
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +18 -3
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +3 -3
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +6 -0
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +43 -9
- package/front_end/ui/visual_logging/KnownContextValues.ts +13 -0
- package/package.json +1 -1
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M4.5 17C4.08333 17 3.72933 16.854 3.438 16.562C3.146 16.2707 3 15.9167 3 15.5V4.5C3 4.08333 3.146 3.72933 3.438 3.438C3.72933 3.146 4.08333 3 4.5 3H15.5C15.9167 3 16.2707 3.146 16.562 3.438C16.854 3.72933 17 4.08333 17 4.5V15.5C17 15.9167 16.854 16.2707 16.562 16.562C16.2707 16.854 15.9167 17 15.5 17H4.5ZM4.5 15.5H15.5V4.5H4.5V15.5Z" fill="black"/>
|
|
3
|
+
<path d="M6.85714 14C6.61905 14 6.41676 13.9166 6.25029 13.7497C6.08343 13.5833 6 13.381 6 13.1429V6.85714C6 6.61905 6.08343 6.41676 6.25029 6.25029C6.41676 6.08343 6.61905 6 6.85714 6H13.1429C13.381 6 13.5833 6.08343 13.7497 6.25029C13.9166 6.41676 14 6.61905 14 6.85714V13.1429C14 13.381 13.9166 13.5833 13.7497 13.7497C13.5833 13.9166 13.381 14 13.1429 14H6.85714ZM7.5 12.5H12.5V7.5H7.5V12.5Z" fill="black"/>
|
|
4
|
+
</svg>
|
|
@@ -68,7 +68,22 @@ export function decompressStream(stream: ReadableStream): ReadableStream {
|
|
|
68
68
|
const ds = new DecompressionStream('gzip');
|
|
69
69
|
return stream.pipeThrough(ds);
|
|
70
70
|
}
|
|
71
|
+
|
|
71
72
|
export function compressStream(stream: ReadableStream): ReadableStream {
|
|
72
73
|
const cs = new CompressionStream('gzip');
|
|
73
74
|
return stream.pipeThrough(cs);
|
|
74
75
|
}
|
|
76
|
+
|
|
77
|
+
export function createMonitoredStream(stream: ReadableStream, onProgress: (bytesRead: number) => void): ReadableStream {
|
|
78
|
+
let bytesRead = 0;
|
|
79
|
+
|
|
80
|
+
const progressTransformer = new TransformStream({
|
|
81
|
+
transform(chunk, controller) {
|
|
82
|
+
bytesRead += chunk.byteLength;
|
|
83
|
+
onProgress(bytesRead);
|
|
84
|
+
controller.enqueue(chunk);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
return stream.pipeThrough(progressTransformer);
|
|
89
|
+
}
|
|
@@ -105,7 +105,11 @@ export class ObjectWrapper<Events> implements EventTarget<Events> {
|
|
|
105
105
|
// new listeners.
|
|
106
106
|
for (const listener of [...listeners]) {
|
|
107
107
|
if (!listener.disposed) {
|
|
108
|
-
|
|
108
|
+
try {
|
|
109
|
+
listener.listener.call(listener.thisObject, event);
|
|
110
|
+
} catch (err) {
|
|
111
|
+
console.error(`Event listener for ${String(eventType)} throw an error:`, err);
|
|
112
|
+
}
|
|
109
113
|
}
|
|
110
114
|
}
|
|
111
115
|
}
|
|
@@ -206,7 +206,7 @@ async function fetchToString(url: string): Promise<string> {
|
|
|
206
206
|
|
|
207
207
|
function canBeRemoteFilePath(url: string): boolean {
|
|
208
208
|
try {
|
|
209
|
-
const urlObject = new URL(url);
|
|
209
|
+
const urlObject = new URL(new URL(url).toString()); // Normalize first.
|
|
210
210
|
return urlObject.protocol === 'file:' && urlObject.host !== '';
|
|
211
211
|
} catch {
|
|
212
212
|
return false;
|
|
@@ -531,7 +531,9 @@ export enum Action {
|
|
|
531
531
|
AiCodeGenerationSuggestionAccepted = 196,
|
|
532
532
|
InsightTeaserModelDownloadStarted = 197,
|
|
533
533
|
InsightTeaserModelDownloadCompleted = 198,
|
|
534
|
-
|
|
534
|
+
AiCodeGenerationError = 199,
|
|
535
|
+
AiCodeGenerationRequestTriggered = 200,
|
|
536
|
+
MAX_VALUE = 201,
|
|
535
537
|
/* eslint-enable @typescript-eslint/naming-convention */
|
|
536
538
|
}
|
|
537
539
|
|
|
@@ -644,7 +644,7 @@ const extraPropertyValues = new Map<string, Set<string>>([
|
|
|
644
644
|
['background-repeat', new Set(['repeat', 'repeat-x', 'repeat-y', 'no-repeat', 'space', 'round'])],
|
|
645
645
|
['content', new Set(['normal', 'close-quote', 'no-close-quote', 'no-open-quote', 'open-quote'])],
|
|
646
646
|
['baseline-shift', new Set(['baseline'])],
|
|
647
|
-
['max-height', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content'])],
|
|
647
|
+
['max-height', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content', 'stretch'])],
|
|
648
648
|
['color', new Set(['black'])],
|
|
649
649
|
['background-color', new Set(['white'])],
|
|
650
650
|
['box-shadow', new Set(['inset'])],
|
|
@@ -718,7 +718,7 @@ const extraPropertyValues = new Map<string, Set<string>>([
|
|
|
718
718
|
]),
|
|
719
719
|
],
|
|
720
720
|
['zoom', new Set(['normal'])],
|
|
721
|
-
['max-width', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content'])],
|
|
721
|
+
['max-width', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content', 'stretch'])],
|
|
722
722
|
['-webkit-font-smoothing', new Set(['antialiased', 'subpixel-antialiased'])],
|
|
723
723
|
[
|
|
724
724
|
'border',
|
|
@@ -1109,7 +1109,7 @@ const extraPropertyValues = new Map<string, Set<string>>([
|
|
|
1109
1109
|
]),
|
|
1110
1110
|
],
|
|
1111
1111
|
['flex-flow', new Set(['nowrap', 'row', 'row-reverse', 'column', 'column-reverse', 'wrap', 'wrap-reverse'])],
|
|
1112
|
-
['height', new Set(['-webkit-fill-available'])],
|
|
1112
|
+
['height', new Set(['-webkit-fill-available', 'stretch'])],
|
|
1113
1113
|
['inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
|
|
1114
1114
|
[
|
|
1115
1115
|
'list-style',
|
|
@@ -1176,9 +1176,9 @@ const extraPropertyValues = new Map<string, Set<string>>([
|
|
|
1176
1176
|
['max-block-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
|
|
1177
1177
|
['max-inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
|
|
1178
1178
|
['min-block-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
|
|
1179
|
-
['min-height', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
|
|
1179
|
+
['min-height', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content', 'stretch'])],
|
|
1180
1180
|
['min-inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
|
|
1181
|
-
['min-width', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
|
|
1181
|
+
['min-width', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content', 'stretch'])],
|
|
1182
1182
|
['object-position', new Set(['top', 'bottom', 'left', 'right', 'center'])],
|
|
1183
1183
|
['shape-outside', new Set(['border-box', 'content-box', 'padding-box', 'margin-box'])],
|
|
1184
1184
|
[
|
|
@@ -1340,7 +1340,7 @@ const extraPropertyValues = new Map<string, Set<string>>([
|
|
|
1340
1340
|
['-webkit-text-stroke-width', new Set(['medium', 'thick', 'thin'])],
|
|
1341
1341
|
['-webkit-transform-origin-x', new Set(['left', 'right', 'center'])],
|
|
1342
1342
|
['-webkit-transform-origin-y', new Set(['top', 'bottom', 'center'])],
|
|
1343
|
-
['width', new Set(['-webkit-fill-available'])],
|
|
1343
|
+
['width', new Set(['-webkit-fill-available', 'stretch'])],
|
|
1344
1344
|
['contain-intrinsic-width', new Set(['auto none', 'auto 100px'])],
|
|
1345
1345
|
['contain-intrinsic-height', new Set(['auto none', 'auto 100px'])],
|
|
1346
1346
|
['contain-intrinsic-size', new Set(['auto none', 'auto 100px'])],
|
|
@@ -38,7 +38,7 @@ export interface LayoutProperties {
|
|
|
38
38
|
isGrid: boolean;
|
|
39
39
|
isSubgrid: boolean;
|
|
40
40
|
isGridLanes: boolean;
|
|
41
|
-
|
|
41
|
+
containerType?: string;
|
|
42
42
|
hasScroll: boolean;
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -402,7 +402,7 @@ export class CSSModel extends SDKModel<EventTypes> {
|
|
|
402
402
|
isGrid,
|
|
403
403
|
isSubgrid,
|
|
404
404
|
isGridLanes,
|
|
405
|
-
isContainer,
|
|
405
|
+
containerType: isContainer ? containerType : undefined,
|
|
406
406
|
hasScroll,
|
|
407
407
|
};
|
|
408
408
|
}
|
|
@@ -110,10 +110,12 @@ export const ARIA_ATTRIBUTES = new Set<string>([
|
|
|
110
110
|
|
|
111
111
|
export enum DOMNodeEvents {
|
|
112
112
|
TOP_LAYER_INDEX_CHANGED = 'TopLayerIndexChanged',
|
|
113
|
+
SCROLLABLE_FLAG_UPDATED = 'ScrollableFlagUpdated',
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
export interface DOMNodeEventTypes {
|
|
116
117
|
[DOMNodeEvents.TOP_LAYER_INDEX_CHANGED]: void;
|
|
118
|
+
[DOMNodeEvents.SCROLLABLE_FLAG_UPDATED]: void;
|
|
117
119
|
}
|
|
118
120
|
|
|
119
121
|
export class DOMNode extends Common.ObjectWrapper.ObjectWrapper<DOMNodeEventTypes> {
|
|
@@ -322,6 +324,13 @@ export class DOMNode extends Common.ObjectWrapper.ObjectWrapper<DOMNodeEventType
|
|
|
322
324
|
return false;
|
|
323
325
|
}
|
|
324
326
|
|
|
327
|
+
isRootNode(): boolean {
|
|
328
|
+
if (this.nodeType() === Node.ELEMENT_NODE && this.nodeName() === 'HTML') {
|
|
329
|
+
return true;
|
|
330
|
+
}
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
|
|
325
334
|
isSVGNode(): boolean {
|
|
326
335
|
return this.#isSVGNode;
|
|
327
336
|
}
|
|
@@ -385,6 +394,11 @@ export class DOMNode extends Common.ObjectWrapper.ObjectWrapper<DOMNodeEventType
|
|
|
385
394
|
|
|
386
395
|
setIsScrollable(isScrollable: boolean): void {
|
|
387
396
|
this.#isScrollable = isScrollable;
|
|
397
|
+
this.dispatchEventToListeners(DOMNodeEvents.SCROLLABLE_FLAG_UPDATED);
|
|
398
|
+
if (this.nodeName() === '#document') {
|
|
399
|
+
// We show the scroll badge of the document on the <html> element.
|
|
400
|
+
this.ownerDocument?.documentElement?.setIsScrollable(isScrollable);
|
|
401
|
+
}
|
|
388
402
|
}
|
|
389
403
|
|
|
390
404
|
setAffectedByStartingStyles(affectedByStartingStyles: boolean): void {
|
|
@@ -1644,7 +1658,6 @@ export class DOMModel extends SDKModel<EventTypes> {
|
|
|
1644
1658
|
return;
|
|
1645
1659
|
}
|
|
1646
1660
|
node.setIsScrollable(isScrollable);
|
|
1647
|
-
this.dispatchEventToListeners(Events.ScrollableFlagUpdated, {node});
|
|
1648
1661
|
}
|
|
1649
1662
|
|
|
1650
1663
|
affectedByStartingStylesFlagUpdated(nodeId: Protocol.DOM.NodeId, affectedByStartingStyles: boolean): void {
|
|
@@ -1900,7 +1913,6 @@ export enum Events {
|
|
|
1900
1913
|
DistributedNodesChanged = 'DistributedNodesChanged',
|
|
1901
1914
|
MarkersChanged = 'MarkersChanged',
|
|
1902
1915
|
TopLayerElementsChanged = 'TopLayerElementsChanged',
|
|
1903
|
-
ScrollableFlagUpdated = 'ScrollableFlagUpdated',
|
|
1904
1916
|
AffectedByStartingStylesFlagUpdated = 'AffectedByStartingStylesFlagUpdated',
|
|
1905
1917
|
AdoptedStyleSheetsModified = 'AdoptedStyleSheetsModified',
|
|
1906
1918
|
/* eslint-enable @typescript-eslint/naming-convention */
|
|
@@ -1918,7 +1930,6 @@ export interface EventTypes {
|
|
|
1918
1930
|
[Events.DistributedNodesChanged]: DOMNode;
|
|
1919
1931
|
[Events.MarkersChanged]: DOMNode;
|
|
1920
1932
|
[Events.TopLayerElementsChanged]: {document: DOMDocument, documentShortcuts: DOMNodeShortcut[]};
|
|
1921
|
-
[Events.ScrollableFlagUpdated]: {node: DOMNode};
|
|
1922
1933
|
[Events.AffectedByStartingStylesFlagUpdated]: {node: DOMNode};
|
|
1923
1934
|
[Events.AdoptedStyleSheetsModified]: DOMNode;
|
|
1924
1935
|
}
|
|
@@ -2716,13 +2716,6 @@ export interface Conditions {
|
|
|
2716
2716
|
packetLoss?: number;
|
|
2717
2717
|
packetQueueLength?: number;
|
|
2718
2718
|
packetReordering?: boolean;
|
|
2719
|
-
// TODO(crbug.com/1219425): In the future, it might be worthwhile to
|
|
2720
|
-
// consider avoiding mixing up presentation state (e.g.: displayed
|
|
2721
|
-
// titles) with behavioral state (e.g.: the throttling amounts). In
|
|
2722
|
-
// this particular case, the title (along with other properties)
|
|
2723
|
-
// doubles as both part of group of fields which (loosely) uniquely
|
|
2724
|
-
// identify instances, as well as the literal string displayed in the
|
|
2725
|
-
// UI, which leads to complications around persistance.
|
|
2726
2719
|
// TODO(crbug.com/422682525): make this just a function because we use lazy string everywhere.
|
|
2727
2720
|
title: string|(() => string);
|
|
2728
2721
|
// Instances may be serialized to local storage, so localized titles
|
|
@@ -138,7 +138,7 @@ export class SourceMap {
|
|
|
138
138
|
|
|
139
139
|
readonly #debugId?: DebugId;
|
|
140
140
|
|
|
141
|
-
|
|
141
|
+
#scopesFallbackPromise?: Promise<void>;
|
|
142
142
|
|
|
143
143
|
/**
|
|
144
144
|
* Implements Source Map V3 model. See https://github.com/google/closure-compiler/wiki/Source-Maps
|
|
@@ -225,6 +225,11 @@ export class SourceMap {
|
|
|
225
225
|
return this.#scopesInfo !== null && !this.#scopesInfo.isEmpty();
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
+
waitForScopeInfo(): Promise<void> {
|
|
229
|
+
this.#ensureSourceMapProcessed();
|
|
230
|
+
return this.#scopesFallbackPromise ?? Promise.resolve();
|
|
231
|
+
}
|
|
232
|
+
|
|
228
233
|
findEntry(lineNumber: number, columnNumber: number, inlineFrameIndex?: number): SourceMapEntry|null {
|
|
229
234
|
this.#ensureSourceMapProcessed();
|
|
230
235
|
if (inlineFrameIndex && this.#scopesInfo !== null) {
|
|
@@ -252,6 +257,15 @@ export class SourceMap {
|
|
|
252
257
|
return index ? mappings[index - 1] : null;
|
|
253
258
|
}
|
|
254
259
|
|
|
260
|
+
/** Returns the entry at the given position but only if an entry exists for that exact position */
|
|
261
|
+
findEntryExact(lineNumber: number, columnNumber: number): SourceMapEntry|null {
|
|
262
|
+
const entry = this.findEntry(lineNumber, columnNumber);
|
|
263
|
+
if (entry?.lineNumber === lineNumber && entry.columnNumber === columnNumber) {
|
|
264
|
+
return entry;
|
|
265
|
+
}
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
|
|
255
269
|
findEntryRanges(lineNumber: number, columnNumber: number): {
|
|
256
270
|
range: TextUtils.TextRange.TextRange,
|
|
257
271
|
sourceRange: TextUtils.TextRange.TextRange,
|
|
@@ -411,7 +425,7 @@ export class SourceMap {
|
|
|
411
425
|
try {
|
|
412
426
|
this.eachSection(this.parseMap.bind(this));
|
|
413
427
|
if (!this.hasScopeInfo()) {
|
|
414
|
-
this
|
|
428
|
+
this.#scopesFallbackPromise = this.#buildScopesFallback().then(info => {
|
|
415
429
|
this.#scopesInfo = info;
|
|
416
430
|
});
|
|
417
431
|
}
|
|
@@ -182,7 +182,7 @@ export class SourceMapManager<T extends FrameAssociated> extends Common.ObjectWr
|
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
waitForSourceMapsProcessedForTest(): Promise<unknown> {
|
|
185
|
-
return Promise.all(this.#sourceMaps.keys().map(sourceMap => sourceMap.
|
|
185
|
+
return Promise.all(this.#sourceMaps.keys().map(sourceMap => sourceMap.waitForScopeInfo()));
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
188
|
|
|
@@ -123,16 +123,23 @@ export class SourceMapScopesInfo {
|
|
|
123
123
|
sourceIndex < numSourceUrls;
|
|
124
124
|
const isStackFrame = node.kind === Formatter.FormatterWorkerPool.ScopeKind.FUNCTION ||
|
|
125
125
|
node.kind === Formatter.FormatterWorkerPool.ScopeKind.ARROW_FUNCTION;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
let name: string|undefined = undefined;
|
|
127
|
+
for (const offset of node.nameMappingLocations ?? []) {
|
|
128
|
+
const position = positionFromOffset(offset);
|
|
129
|
+
const entry = sourceMap.findEntryExact(position.line, position.column);
|
|
130
|
+
if (entry?.name !== undefined) {
|
|
131
|
+
// Only consider named mappings.
|
|
132
|
+
name = entry.name;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
129
136
|
|
|
130
137
|
let scope: ScopesCodec.OriginalScope|undefined;
|
|
131
138
|
if (canMapOriginalPosition) {
|
|
132
139
|
scope = {
|
|
133
140
|
start: {line: startEntry.sourceLineNumber, column: startEntry.sourceColumnNumber},
|
|
134
141
|
end: {line: endEntry.sourceLineNumber, column: endEntry.sourceColumnNumber},
|
|
135
|
-
name,
|
|
142
|
+
name: name ?? node.name,
|
|
136
143
|
isStackFrame,
|
|
137
144
|
variables: [],
|
|
138
145
|
children: [],
|
|
@@ -57,6 +57,7 @@ export interface ScopeTreeNode {
|
|
|
57
57
|
end: number;
|
|
58
58
|
// If present, apply source map mappings to these locations to figure out the original function name.
|
|
59
59
|
nameMappingLocations?: number[];
|
|
60
|
+
name?: string;
|
|
60
61
|
kind: ScopeKind;
|
|
61
62
|
children: ScopeTreeNode[];
|
|
62
63
|
}
|
|
@@ -37,14 +37,17 @@ export class Scope {
|
|
|
37
37
|
readonly start: number;
|
|
38
38
|
readonly end: number;
|
|
39
39
|
readonly kind: ScopeKind;
|
|
40
|
+
readonly name?: string;
|
|
40
41
|
readonly nameMappingLocations?: number[];
|
|
41
42
|
readonly children: Scope[] = [];
|
|
42
43
|
|
|
43
|
-
constructor(
|
|
44
|
+
constructor(
|
|
45
|
+
start: number, end: number, parent: Scope|null, kind: ScopeKind, name?: string, nameMappingLocations?: number[]) {
|
|
44
46
|
this.start = start;
|
|
45
47
|
this.end = end;
|
|
46
48
|
this.parent = parent;
|
|
47
49
|
this.kind = kind;
|
|
50
|
+
this.name = name;
|
|
48
51
|
this.nameMappingLocations = nameMappingLocations;
|
|
49
52
|
if (parent) {
|
|
50
53
|
parent.children.push(this);
|
|
@@ -66,6 +69,7 @@ export class Scope {
|
|
|
66
69
|
end: this.end,
|
|
67
70
|
variables,
|
|
68
71
|
kind: this.kind,
|
|
72
|
+
name: this.name,
|
|
69
73
|
nameMappingLocations: this.nameMappingLocations,
|
|
70
74
|
children,
|
|
71
75
|
};
|
|
@@ -141,6 +145,7 @@ export class ScopeVariableAnalysis {
|
|
|
141
145
|
#currentScope: Scope;
|
|
142
146
|
readonly #rootNode: Acorn.ESTree.Node;
|
|
143
147
|
readonly #sourceText: string;
|
|
148
|
+
#methodName: string|undefined;
|
|
144
149
|
#additionalMappingLocations: number[] = [];
|
|
145
150
|
|
|
146
151
|
constructor(node: Acorn.ESTree.Node, sourceText: string) {
|
|
@@ -178,7 +183,9 @@ export class ScopeVariableAnalysis {
|
|
|
178
183
|
node.elements.forEach(item => this.#processNode(item));
|
|
179
184
|
break;
|
|
180
185
|
case 'ArrowFunctionExpression': {
|
|
181
|
-
this.#pushScope(
|
|
186
|
+
this.#pushScope(
|
|
187
|
+
node.start, node.end, ScopeKind.ARROW_FUNCTION, undefined,
|
|
188
|
+
mappingLocationsForArrowFunctions(node, this.#sourceText));
|
|
182
189
|
node.params.forEach(this.#processNodeAsDefinition.bind(this, DefinitionKind.VAR, false));
|
|
183
190
|
if (node.body.type === 'BlockStatement') {
|
|
184
191
|
// Include the body of the arrow function in the same scope as the arguments.
|
|
@@ -260,7 +267,7 @@ export class ScopeVariableAnalysis {
|
|
|
260
267
|
case 'FunctionDeclaration':
|
|
261
268
|
this.#processNodeAsDefinition(DefinitionKind.VAR, false, node.id);
|
|
262
269
|
this.#pushScope(
|
|
263
|
-
node.id?.end ?? node.start, node.end, ScopeKind.FUNCTION,
|
|
270
|
+
node.id?.end ?? node.start, node.end, ScopeKind.FUNCTION, node.id.name,
|
|
264
271
|
mappingLocationsForFunctionDeclaration(node, this.#sourceText));
|
|
265
272
|
this.#addVariable('this', node.start, DefinitionKind.FIXED);
|
|
266
273
|
this.#addVariable('arguments', node.start, DefinitionKind.FIXED);
|
|
@@ -271,8 +278,10 @@ export class ScopeVariableAnalysis {
|
|
|
271
278
|
break;
|
|
272
279
|
case 'FunctionExpression':
|
|
273
280
|
this.#pushScope(
|
|
274
|
-
node.id?.end ?? node.start, node.end, ScopeKind.FUNCTION,
|
|
281
|
+
node.id?.end ?? node.start, node.end, ScopeKind.FUNCTION, this.#methodName ?? node.id?.name,
|
|
275
282
|
[...this.#additionalMappingLocations, ...mappingLocationsForFunctionExpression(node, this.#sourceText)]);
|
|
283
|
+
this.#additionalMappingLocations = [];
|
|
284
|
+
this.#methodName = undefined;
|
|
276
285
|
this.#addVariable('this', node.start, DefinitionKind.FIXED);
|
|
277
286
|
this.#addVariable('arguments', node.start, DefinitionKind.FIXED);
|
|
278
287
|
node.params.forEach(this.#processNodeAsDefinition.bind(this, DefinitionKind.LET, false));
|
|
@@ -298,9 +307,9 @@ export class ScopeVariableAnalysis {
|
|
|
298
307
|
this.#processNode(node.key);
|
|
299
308
|
} else {
|
|
300
309
|
this.#additionalMappingLocations = mappingLocationsForMethodDefinition(node);
|
|
310
|
+
this.#methodName = nameForMethodDefinition(node);
|
|
301
311
|
}
|
|
302
312
|
this.#processNode(node.value);
|
|
303
|
-
this.#additionalMappingLocations = [];
|
|
304
313
|
break;
|
|
305
314
|
case 'NewExpression':
|
|
306
315
|
this.#processNode(node.callee);
|
|
@@ -335,6 +344,9 @@ export class ScopeVariableAnalysis {
|
|
|
335
344
|
} else {
|
|
336
345
|
if (node.computed) {
|
|
337
346
|
this.#processNode(node.key);
|
|
347
|
+
} else if (node.value.type === 'FunctionExpression') {
|
|
348
|
+
this.#additionalMappingLocations = mappingLocationsForMethodDefinition(node);
|
|
349
|
+
this.#methodName = nameForMethodDefinition(node);
|
|
338
350
|
}
|
|
339
351
|
this.#processNode(node.value);
|
|
340
352
|
}
|
|
@@ -437,8 +449,8 @@ export class ScopeVariableAnalysis {
|
|
|
437
449
|
return this.#allNames;
|
|
438
450
|
}
|
|
439
451
|
|
|
440
|
-
#pushScope(start: number, end: number, kind: ScopeKind, nameMappingLocations?: number[]): void {
|
|
441
|
-
this.#currentScope = new Scope(start, end, this.#currentScope, kind, nameMappingLocations);
|
|
452
|
+
#pushScope(start: number, end: number, kind: ScopeKind, name?: string, nameMappingLocations?: number[]): void {
|
|
453
|
+
this.#currentScope = new Scope(start, end, this.#currentScope, kind, name, nameMappingLocations);
|
|
442
454
|
}
|
|
443
455
|
|
|
444
456
|
#popScope(isFunctionContext: boolean): void {
|
|
@@ -537,7 +549,7 @@ function mappingLocationsForFunctionExpression(node: Acorn.ESTree.FunctionExpres
|
|
|
537
549
|
return result;
|
|
538
550
|
}
|
|
539
551
|
|
|
540
|
-
function mappingLocationsForMethodDefinition(node: Acorn.ESTree.MethodDefinition): number[] {
|
|
552
|
+
function mappingLocationsForMethodDefinition(node: Acorn.ESTree.MethodDefinition|Acorn.ESTree.Property): number[] {
|
|
541
553
|
// Method definitions use a FunctionExpression as their "value" child. So we only
|
|
542
554
|
// record the start of the "key" here and let 'mappingLocationsForFunctionExpression' handle
|
|
543
555
|
// the parenthesis.
|
|
@@ -548,6 +560,37 @@ function mappingLocationsForMethodDefinition(node: Acorn.ESTree.MethodDefinition
|
|
|
548
560
|
return [];
|
|
549
561
|
}
|
|
550
562
|
|
|
563
|
+
function nameForMethodDefinition(node: Acorn.ESTree.MethodDefinition|Acorn.ESTree.Property): string|undefined {
|
|
564
|
+
if (node.key.type === 'Identifier') {
|
|
565
|
+
return node.key.name;
|
|
566
|
+
}
|
|
567
|
+
if (node.key.type === 'PrivateIdentifier') {
|
|
568
|
+
return '#' + node.key.name;
|
|
569
|
+
}
|
|
570
|
+
return undefined;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
function mappingLocationsForArrowFunctions(node: Acorn.ESTree.ArrowFunctionExpression, sourceText: string): number[] {
|
|
574
|
+
// For arrow functions we use the `(' parenthesis if present, and the `=>` arrow as per spec.
|
|
575
|
+
// Both are not 100% accurate as acorn doesn't tell us their location so we have to search, which is brittle.
|
|
576
|
+
const result = [];
|
|
577
|
+
|
|
578
|
+
const searchParenStartPos = node.async ? node.start + 5 : node.start;
|
|
579
|
+
const searchParenEndPos = node.params.length ? node.params[0].start : node.body.start;
|
|
580
|
+
const parenPos = indexOfCharInBounds(sourceText, '(', searchParenStartPos, searchParenEndPos);
|
|
581
|
+
if (parenPos >= 0) {
|
|
582
|
+
result.push(parenPos);
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
const searchArrowStartPos = node.params.length ? node.params[node.params.length - 1].end : node.start;
|
|
586
|
+
const arrowPos = indexOfCharInBounds(sourceText, '=', searchArrowStartPos, node.body.start);
|
|
587
|
+
if (arrowPos >= 0 && sourceText[arrowPos + 1] === '>') {
|
|
588
|
+
result.push(arrowPos);
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
return result;
|
|
592
|
+
}
|
|
593
|
+
|
|
551
594
|
function indexOfCharInBounds(str: string, needle: string, start: number, end: number): number {
|
|
552
595
|
for (let i = start; i < end; ++i) {
|
|
553
596
|
if (str[i] === needle) {
|
|
@@ -18,6 +18,10 @@ const UIStrings = {
|
|
|
18
18
|
* @description Button's string in promotion state.
|
|
19
19
|
*/
|
|
20
20
|
aiAssistance: 'AI assistance',
|
|
21
|
+
/**
|
|
22
|
+
* @description Button's tooltip text.
|
|
23
|
+
*/
|
|
24
|
+
openAiAssistance: 'Open AI assistance panel',
|
|
21
25
|
} as const;
|
|
22
26
|
const str_ = i18n.i18n.registerUIStrings('entrypoints/main/GlobalAiButton.ts', UIStrings);
|
|
23
27
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
@@ -55,7 +59,7 @@ export const DEFAULT_VIEW = (input: ViewInput, output: undefined, target: HTMLEl
|
|
|
55
59
|
render(html`
|
|
56
60
|
<style>${globalAiButtonStyles}</style>
|
|
57
61
|
<div class="global-ai-button-container">
|
|
58
|
-
<button class=${classes} @click=${input.onClick} jslog=${VisualLogging.action().track({click: true}).context('global-ai-button')}>
|
|
62
|
+
<button class=${classes} @click=${input.onClick} title=${i18nString(UIStrings.openAiAssistance)} jslog=${VisualLogging.action().track({click: true}).context('global-ai-button')}>
|
|
59
63
|
<devtools-icon name="smart-assistant"></devtools-icon>
|
|
60
64
|
<span class="button-text">${` ${i18nString(UIStrings.aiAssistance)}`}</span>
|
|
61
65
|
</button>
|
|
@@ -30,10 +30,6 @@ export const UIStrings = {
|
|
|
30
30
|
* @description This warning occurs when the website attempts to invoke the deprecated `chrome.loadTimes().wasAlternateProtocolAvailable` API.
|
|
31
31
|
*/
|
|
32
32
|
ChromeLoadTimesWasAlternateProtocolAvailable: "`chrome.loadTimes()` is deprecated, instead use standardized API: `nextHopProtocol` in Navigation Timing 2.",
|
|
33
|
-
/**
|
|
34
|
-
* @description This warning occurs when the browser attempts to store a cookie containing a banned character. Rather than the cookie string being truncated at the banned character, the entire cookie will be rejected now.
|
|
35
|
-
*/
|
|
36
|
-
CookieWithTruncatingChar: "Cookies containing a `\\(0|r|n)` character will be rejected instead of truncated.",
|
|
37
33
|
/**
|
|
38
34
|
* @description This warning occurs when a frame accesses another frame's data after having set `document.domain` without having set the `Origin-Agent-Cluster` http header. This is a companion warning to `documentDomainSettingWithoutOriginAgentClusterHeader`, where that warning occurs when `document.domain` is set, and this warning occurs when an access has been made, based on that previous `document.domain` setting.
|
|
39
35
|
*/
|
|
@@ -286,9 +282,6 @@ export const DEPRECATIONS_METADATA: Partial<Record<string, DeprecationDescriptor
|
|
|
286
282
|
"ChromeLoadTimesWasAlternateProtocolAvailable": {
|
|
287
283
|
"chromeStatusFeature": 5637885046816768
|
|
288
284
|
},
|
|
289
|
-
"CookieWithTruncatingChar": {
|
|
290
|
-
"milestone": 103
|
|
291
|
-
},
|
|
292
285
|
"CrossOriginAccessBasedOnDocumentDomain": {
|
|
293
286
|
"milestone": 115
|
|
294
287
|
},
|
|
@@ -81,7 +81,7 @@ inspectorBackend.registerEnum("Audits.AttributionReportingIssueType", {Permissio
|
|
|
81
81
|
inspectorBackend.registerEnum("Audits.SharedDictionaryError", {UseErrorCrossOriginNoCorsRequest: "UseErrorCrossOriginNoCorsRequest", UseErrorDictionaryLoadFailure: "UseErrorDictionaryLoadFailure", UseErrorMatchingDictionaryNotUsed: "UseErrorMatchingDictionaryNotUsed", UseErrorUnexpectedContentDictionaryHeader: "UseErrorUnexpectedContentDictionaryHeader", WriteErrorCossOriginNoCorsRequest: "WriteErrorCossOriginNoCorsRequest", WriteErrorDisallowedBySettings: "WriteErrorDisallowedBySettings", WriteErrorExpiredResponse: "WriteErrorExpiredResponse", WriteErrorFeatureDisabled: "WriteErrorFeatureDisabled", WriteErrorInsufficientResources: "WriteErrorInsufficientResources", WriteErrorInvalidMatchField: "WriteErrorInvalidMatchField", WriteErrorInvalidStructuredHeader: "WriteErrorInvalidStructuredHeader", WriteErrorInvalidTTLField: "WriteErrorInvalidTTLField", WriteErrorNavigationRequest: "WriteErrorNavigationRequest", WriteErrorNoMatchField: "WriteErrorNoMatchField", WriteErrorNonIntegerTTLField: "WriteErrorNonIntegerTTLField", WriteErrorNonListMatchDestField: "WriteErrorNonListMatchDestField", WriteErrorNonSecureContext: "WriteErrorNonSecureContext", WriteErrorNonStringIdField: "WriteErrorNonStringIdField", WriteErrorNonStringInMatchDestList: "WriteErrorNonStringInMatchDestList", WriteErrorNonStringMatchField: "WriteErrorNonStringMatchField", WriteErrorNonTokenTypeField: "WriteErrorNonTokenTypeField", WriteErrorRequestAborted: "WriteErrorRequestAborted", WriteErrorShuttingDown: "WriteErrorShuttingDown", WriteErrorTooLongIdField: "WriteErrorTooLongIdField", WriteErrorUnsupportedType: "WriteErrorUnsupportedType"});
|
|
82
82
|
inspectorBackend.registerEnum("Audits.SRIMessageSignatureError", {MissingSignatureHeader: "MissingSignatureHeader", MissingSignatureInputHeader: "MissingSignatureInputHeader", InvalidSignatureHeader: "InvalidSignatureHeader", InvalidSignatureInputHeader: "InvalidSignatureInputHeader", SignatureHeaderValueIsNotByteSequence: "SignatureHeaderValueIsNotByteSequence", SignatureHeaderValueIsParameterized: "SignatureHeaderValueIsParameterized", SignatureHeaderValueIsIncorrectLength: "SignatureHeaderValueIsIncorrectLength", SignatureInputHeaderMissingLabel: "SignatureInputHeaderMissingLabel", SignatureInputHeaderValueNotInnerList: "SignatureInputHeaderValueNotInnerList", SignatureInputHeaderValueMissingComponents: "SignatureInputHeaderValueMissingComponents", SignatureInputHeaderInvalidComponentType: "SignatureInputHeaderInvalidComponentType", SignatureInputHeaderInvalidComponentName: "SignatureInputHeaderInvalidComponentName", SignatureInputHeaderInvalidHeaderComponentParameter: "SignatureInputHeaderInvalidHeaderComponentParameter", SignatureInputHeaderInvalidDerivedComponentParameter: "SignatureInputHeaderInvalidDerivedComponentParameter", SignatureInputHeaderKeyIdLength: "SignatureInputHeaderKeyIdLength", SignatureInputHeaderInvalidParameter: "SignatureInputHeaderInvalidParameter", SignatureInputHeaderMissingRequiredParameters: "SignatureInputHeaderMissingRequiredParameters", ValidationFailedSignatureExpired: "ValidationFailedSignatureExpired", ValidationFailedInvalidLength: "ValidationFailedInvalidLength", ValidationFailedSignatureMismatch: "ValidationFailedSignatureMismatch", ValidationFailedIntegrityMismatch: "ValidationFailedIntegrityMismatch"});
|
|
83
83
|
inspectorBackend.registerEnum("Audits.UnencodedDigestError", {MalformedDictionary: "MalformedDictionary", UnknownAlgorithm: "UnknownAlgorithm", IncorrectDigestType: "IncorrectDigestType", IncorrectDigestLength: "IncorrectDigestLength"});
|
|
84
|
-
inspectorBackend.registerEnum("Audits.GenericIssueErrorType", {FormLabelForNameError: "FormLabelForNameError", FormDuplicateIdForInputError: "FormDuplicateIdForInputError", FormInputWithNoLabelError: "FormInputWithNoLabelError", FormAutocompleteAttributeEmptyError: "FormAutocompleteAttributeEmptyError", FormEmptyIdAndNameAttributesForInputError: "FormEmptyIdAndNameAttributesForInputError", FormAriaLabelledByToNonExistingIdError: "FormAriaLabelledByToNonExistingIdError", FormInputAssignedAutocompleteValueToIdOrNameAttributeError: "FormInputAssignedAutocompleteValueToIdOrNameAttributeError", FormLabelHasNeitherForNorNestedInputError: "FormLabelHasNeitherForNorNestedInputError", FormLabelForMatchesNonExistingIdError: "FormLabelForMatchesNonExistingIdError", FormInputHasWrongButWellIntendedAutocompleteValueError: "FormInputHasWrongButWellIntendedAutocompleteValueError", ResponseWasBlockedByORB: "ResponseWasBlockedByORB", NavigationEntryMarkedSkippable: "NavigationEntryMarkedSkippable"});
|
|
84
|
+
inspectorBackend.registerEnum("Audits.GenericIssueErrorType", {FormLabelForNameError: "FormLabelForNameError", FormDuplicateIdForInputError: "FormDuplicateIdForInputError", FormInputWithNoLabelError: "FormInputWithNoLabelError", FormAutocompleteAttributeEmptyError: "FormAutocompleteAttributeEmptyError", FormEmptyIdAndNameAttributesForInputError: "FormEmptyIdAndNameAttributesForInputError", FormAriaLabelledByToNonExistingIdError: "FormAriaLabelledByToNonExistingIdError", FormInputAssignedAutocompleteValueToIdOrNameAttributeError: "FormInputAssignedAutocompleteValueToIdOrNameAttributeError", FormLabelHasNeitherForNorNestedInputError: "FormLabelHasNeitherForNorNestedInputError", FormLabelForMatchesNonExistingIdError: "FormLabelForMatchesNonExistingIdError", FormInputHasWrongButWellIntendedAutocompleteValueError: "FormInputHasWrongButWellIntendedAutocompleteValueError", ResponseWasBlockedByORB: "ResponseWasBlockedByORB", NavigationEntryMarkedSkippable: "NavigationEntryMarkedSkippable", AutofillAndManualTextPolicyControlledFeaturesInfo: "AutofillAndManualTextPolicyControlledFeaturesInfo", AutofillPolicyControlledFeatureInfo: "AutofillPolicyControlledFeatureInfo", ManualTextPolicyControlledFeatureInfo: "ManualTextPolicyControlledFeatureInfo"});
|
|
85
85
|
inspectorBackend.registerEnum("Audits.ClientHintIssueReason", {MetaTagAllowListInvalidOrigin: "MetaTagAllowListInvalidOrigin", MetaTagModifiedHTML: "MetaTagModifiedHTML"});
|
|
86
86
|
inspectorBackend.registerEnum("Audits.FederatedAuthRequestIssueReason", {ShouldEmbargo: "ShouldEmbargo", TooManyRequests: "TooManyRequests", WellKnownHttpNotFound: "WellKnownHttpNotFound", WellKnownNoResponse: "WellKnownNoResponse", WellKnownInvalidResponse: "WellKnownInvalidResponse", WellKnownListEmpty: "WellKnownListEmpty", WellKnownInvalidContentType: "WellKnownInvalidContentType", ConfigNotInWellKnown: "ConfigNotInWellKnown", WellKnownTooBig: "WellKnownTooBig", ConfigHttpNotFound: "ConfigHttpNotFound", ConfigNoResponse: "ConfigNoResponse", ConfigInvalidResponse: "ConfigInvalidResponse", ConfigInvalidContentType: "ConfigInvalidContentType", ClientMetadataHttpNotFound: "ClientMetadataHttpNotFound", ClientMetadataNoResponse: "ClientMetadataNoResponse", ClientMetadataInvalidResponse: "ClientMetadataInvalidResponse", ClientMetadataInvalidContentType: "ClientMetadataInvalidContentType", IdpNotPotentiallyTrustworthy: "IdpNotPotentiallyTrustworthy", DisabledInSettings: "DisabledInSettings", DisabledInFlags: "DisabledInFlags", ErrorFetchingSignin: "ErrorFetchingSignin", InvalidSigninResponse: "InvalidSigninResponse", AccountsHttpNotFound: "AccountsHttpNotFound", AccountsNoResponse: "AccountsNoResponse", AccountsInvalidResponse: "AccountsInvalidResponse", AccountsListEmpty: "AccountsListEmpty", AccountsInvalidContentType: "AccountsInvalidContentType", IdTokenHttpNotFound: "IdTokenHttpNotFound", IdTokenNoResponse: "IdTokenNoResponse", IdTokenInvalidResponse: "IdTokenInvalidResponse", IdTokenIdpErrorResponse: "IdTokenIdpErrorResponse", IdTokenCrossSiteIdpErrorResponse: "IdTokenCrossSiteIdpErrorResponse", IdTokenInvalidRequest: "IdTokenInvalidRequest", IdTokenInvalidContentType: "IdTokenInvalidContentType", ErrorIdToken: "ErrorIdToken", Canceled: "Canceled", RpPageNotVisible: "RpPageNotVisible", SilentMediationFailure: "SilentMediationFailure", ThirdPartyCookiesBlocked: "ThirdPartyCookiesBlocked", NotSignedInWithIdp: "NotSignedInWithIdp", MissingTransientUserActivation: "MissingTransientUserActivation", ReplacedByActiveMode: "ReplacedByActiveMode", InvalidFieldsSpecified: "InvalidFieldsSpecified", RelyingPartyOriginIsOpaque: "RelyingPartyOriginIsOpaque", TypeNotMatching: "TypeNotMatching", UiDismissedNoEmbargo: "UiDismissedNoEmbargo", CorsError: "CorsError", SuppressedBySegmentationPlatform: "SuppressedBySegmentationPlatform"});
|
|
87
87
|
inspectorBackend.registerEnum("Audits.FederatedAuthUserInfoRequestIssueReason", {NotSameOrigin: "NotSameOrigin", NotIframe: "NotIframe", NotPotentiallyTrustworthy: "NotPotentiallyTrustworthy", NoAPIPermission: "NoApiPermission", NotSignedInWithIdp: "NotSignedInWithIdp", NoAccountSharingPermission: "NoAccountSharingPermission", InvalidConfigOrWellKnown: "InvalidConfigOrWellKnown", InvalidAccountsResponse: "InvalidAccountsResponse", NoReturningUserFromFetchedAccounts: "NoReturningUserFromFetchedAccounts"});
|
|
@@ -191,7 +191,7 @@ inspectorBackend.registerType("BluetoothEmulation.CharacteristicProperties", [{"
|
|
|
191
191
|
|
|
192
192
|
// Browser.
|
|
193
193
|
inspectorBackend.registerEnum("Browser.WindowState", {Normal: "normal", Minimized: "minimized", Maximized: "maximized", Fullscreen: "fullscreen"});
|
|
194
|
-
inspectorBackend.registerEnum("Browser.PermissionType", {Ar: "ar", AudioCapture: "audioCapture", AutomaticFullscreen: "automaticFullscreen", BackgroundFetch: "backgroundFetch", BackgroundSync: "backgroundSync", CameraPanTiltZoom: "cameraPanTiltZoom", CapturedSurfaceControl: "capturedSurfaceControl", ClipboardReadWrite: "clipboardReadWrite", ClipboardSanitizedWrite: "clipboardSanitizedWrite", DisplayCapture: "displayCapture", DurableStorage: "durableStorage", Geolocation: "geolocation", HandTracking: "handTracking", IdleDetection: "idleDetection", KeyboardLock: "keyboardLock", LocalFonts: "localFonts", LocalNetworkAccess: "localNetworkAccess", Midi: "midi", MidiSysex: "midiSysex", Nfc: "nfc", Notifications: "notifications", PaymentHandler: "paymentHandler", PeriodicBackgroundSync: "periodicBackgroundSync", PointerLock: "pointerLock", ProtectedMediaIdentifier: "protectedMediaIdentifier", Sensors: "sensors", SmartCard: "smartCard", SpeakerSelection: "speakerSelection", StorageAccess: "storageAccess", TopLevelStorageAccess: "topLevelStorageAccess", VideoCapture: "videoCapture", Vr: "vr", WakeLockScreen: "wakeLockScreen", WakeLockSystem: "wakeLockSystem", WebAppInstallation: "webAppInstallation", WebPrinting: "webPrinting", WindowManagement: "windowManagement"});
|
|
194
|
+
inspectorBackend.registerEnum("Browser.PermissionType", {Ar: "ar", AudioCapture: "audioCapture", AutomaticFullscreen: "automaticFullscreen", BackgroundFetch: "backgroundFetch", BackgroundSync: "backgroundSync", CameraPanTiltZoom: "cameraPanTiltZoom", CapturedSurfaceControl: "capturedSurfaceControl", ClipboardReadWrite: "clipboardReadWrite", ClipboardSanitizedWrite: "clipboardSanitizedWrite", DisplayCapture: "displayCapture", DurableStorage: "durableStorage", Geolocation: "geolocation", HandTracking: "handTracking", IdleDetection: "idleDetection", KeyboardLock: "keyboardLock", LocalFonts: "localFonts", LocalNetwork: "localNetwork", LocalNetworkAccess: "localNetworkAccess", LoopbackNetwork: "loopbackNetwork", Midi: "midi", MidiSysex: "midiSysex", Nfc: "nfc", Notifications: "notifications", PaymentHandler: "paymentHandler", PeriodicBackgroundSync: "periodicBackgroundSync", PointerLock: "pointerLock", ProtectedMediaIdentifier: "protectedMediaIdentifier", Sensors: "sensors", SmartCard: "smartCard", SpeakerSelection: "speakerSelection", StorageAccess: "storageAccess", TopLevelStorageAccess: "topLevelStorageAccess", VideoCapture: "videoCapture", Vr: "vr", WakeLockScreen: "wakeLockScreen", WakeLockSystem: "wakeLockSystem", WebAppInstallation: "webAppInstallation", WebPrinting: "webPrinting", WindowManagement: "windowManagement"});
|
|
195
195
|
inspectorBackend.registerEnum("Browser.PermissionSetting", {Granted: "granted", Denied: "denied", Prompt: "prompt"});
|
|
196
196
|
inspectorBackend.registerEnum("Browser.BrowserCommandId", {OpenTabSearch: "openTabSearch", CloseTabSearch: "closeTabSearch", OpenGlic: "openGlic"});
|
|
197
197
|
inspectorBackend.registerEnum("Browser.PrivacySandboxAPI", {BiddingAndAuctionServices: "BiddingAndAuctionServices", TrustedKeyValue: "TrustedKeyValue"});
|
|
@@ -843,7 +843,8 @@ inspectorBackend.registerCommand("Network.disable", [], [], "Disables network tr
|
|
|
843
843
|
inspectorBackend.registerCommand("Network.emulateNetworkConditions", [{"name": "offline", "type": "boolean", "optional": false, "description": "True to emulate internet disconnection.", "typeRef": null}, {"name": "latency", "type": "number", "optional": false, "description": "Minimum latency from request sent to response headers received (ms).", "typeRef": null}, {"name": "downloadThroughput", "type": "number", "optional": false, "description": "Maximal aggregated download throughput (bytes/sec). -1 disables download throttling.", "typeRef": null}, {"name": "uploadThroughput", "type": "number", "optional": false, "description": "Maximal aggregated upload throughput (bytes/sec). -1 disables upload throttling.", "typeRef": null}, {"name": "connectionType", "type": "string", "optional": true, "description": "Connection type if known.", "typeRef": "Network.ConnectionType"}, {"name": "packetLoss", "type": "number", "optional": true, "description": "WebRTC packet loss (percent, 0-100). 0 disables packet loss emulation, 100 drops all the packets.", "typeRef": null}, {"name": "packetQueueLength", "type": "number", "optional": true, "description": "WebRTC packet queue length (packet). 0 removes any queue length limitations.", "typeRef": null}, {"name": "packetReordering", "type": "boolean", "optional": true, "description": "WebRTC packetReordering feature.", "typeRef": null}], [], "Activates emulation of network conditions. This command is deprecated in favor of the emulateNetworkConditionsByRule and overrideNetworkState commands, which can be used together to the same effect.");
|
|
844
844
|
inspectorBackend.registerCommand("Network.emulateNetworkConditionsByRule", [{"name": "offline", "type": "boolean", "optional": false, "description": "True to emulate internet disconnection.", "typeRef": null}, {"name": "matchedNetworkConditions", "type": "array", "optional": false, "description": "Configure conditions for matching requests. If multiple entries match a request, the first entry wins. Global conditions can be configured by leaving the urlPattern for the conditions empty. These global conditions are also applied for throttling of p2p connections.", "typeRef": "Network.NetworkConditions"}], ["ruleIds"], "Activates emulation of network conditions for individual requests using URL match patterns. Unlike the deprecated Network.emulateNetworkConditions this method does not affect `navigator` state. Use Network.overrideNetworkState to explicitly modify `navigator` behavior.");
|
|
845
845
|
inspectorBackend.registerCommand("Network.overrideNetworkState", [{"name": "offline", "type": "boolean", "optional": false, "description": "True to emulate internet disconnection.", "typeRef": null}, {"name": "latency", "type": "number", "optional": false, "description": "Minimum latency from request sent to response headers received (ms).", "typeRef": null}, {"name": "downloadThroughput", "type": "number", "optional": false, "description": "Maximal aggregated download throughput (bytes/sec). -1 disables download throttling.", "typeRef": null}, {"name": "uploadThroughput", "type": "number", "optional": false, "description": "Maximal aggregated upload throughput (bytes/sec). -1 disables upload throttling.", "typeRef": null}, {"name": "connectionType", "type": "string", "optional": true, "description": "Connection type if known.", "typeRef": "Network.ConnectionType"}], [], "Override the state of navigator.onLine and navigator.connection.");
|
|
846
|
-
inspectorBackend.registerCommand("Network.enable", [{"name": "maxTotalBufferSize", "type": "number", "optional": true, "description": "Buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}, {"name": "maxResourceBufferSize", "type": "number", "optional": true, "description": "Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}, {"name": "maxPostDataSize", "type": "number", "optional": true, "description": "Longest post body size (in bytes) that would be included in requestWillBeSent notification", "typeRef": null}, {"name": "reportDirectSocketTraffic", "type": "boolean", "optional": true, "description": "Whether DirectSocket chunk send/receive events should be reported.", "typeRef": null}, {"name": "enableDurableMessages", "type": "boolean", "optional": true, "description": "Enable storing response bodies outside of renderer, so that these survive a cross-process navigation. Requires maxTotalBufferSize to be set. Currently defaults to false.", "typeRef": null}], [], "Enables network tracking, network events will now be delivered to the client.");
|
|
846
|
+
inspectorBackend.registerCommand("Network.enable", [{"name": "maxTotalBufferSize", "type": "number", "optional": true, "description": "Buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}, {"name": "maxResourceBufferSize", "type": "number", "optional": true, "description": "Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}, {"name": "maxPostDataSize", "type": "number", "optional": true, "description": "Longest post body size (in bytes) that would be included in requestWillBeSent notification", "typeRef": null}, {"name": "reportDirectSocketTraffic", "type": "boolean", "optional": true, "description": "Whether DirectSocket chunk send/receive events should be reported.", "typeRef": null}, {"name": "enableDurableMessages", "type": "boolean", "optional": true, "description": "Enable storing response bodies outside of renderer, so that these survive a cross-process navigation. Requires maxTotalBufferSize to be set. Currently defaults to false. This field is being deprecated in favor of the dedicated configureDurableMessages command, due to the possibility of deadlocks when awaiting Network.enable before issuing Runtime.runIfWaitingForDebugger.", "typeRef": null}], [], "Enables network tracking, network events will now be delivered to the client.");
|
|
847
|
+
inspectorBackend.registerCommand("Network.configureDurableMessages", [{"name": "maxTotalBufferSize", "type": "number", "optional": true, "description": "Buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}, {"name": "maxResourceBufferSize", "type": "number", "optional": true, "description": "Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc).", "typeRef": null}], [], "Configures storing response bodies outside of renderer, so that these survive a cross-process navigation. If maxTotalBufferSize is not set, durable messages are disabled.");
|
|
847
848
|
inspectorBackend.registerCommand("Network.getAllCookies", [], ["cookies"], "Returns all browser cookies. Depending on the backend support, will return detailed cookie information in the `cookies` field. Deprecated. Use Storage.getCookies instead.");
|
|
848
849
|
inspectorBackend.registerCommand("Network.getCertificate", [{"name": "origin", "type": "string", "optional": false, "description": "Origin to get certificate for.", "typeRef": null}], ["tableNames"], "Returns the DER-encoded certificate.");
|
|
849
850
|
inspectorBackend.registerCommand("Network.getCookies", [{"name": "urls", "type": "array", "optional": true, "description": "The list of URLs for which applicable cookies will be fetched. If not specified, it's assumed to be set to the list containing the URLs of the page and all of its subframes.", "typeRef": "string"}], ["cookies"], "Returns all browser cookies for the current URL. Depending on the backend support, will return detailed cookie information in the `cookies` field.");
|
|
@@ -1345,7 +1346,7 @@ inspectorBackend.registerCommand("Target.attachToBrowserTarget", [], ["sessionId
|
|
|
1345
1346
|
inspectorBackend.registerCommand("Target.closeTarget", [{"name": "targetId", "type": "string", "optional": false, "description": "", "typeRef": "Target.TargetID"}], ["success"], "Closes the target. If the target is a page that gets closed too.");
|
|
1346
1347
|
inspectorBackend.registerCommand("Target.exposeDevToolsProtocol", [{"name": "targetId", "type": "string", "optional": false, "description": "", "typeRef": "Target.TargetID"}, {"name": "bindingName", "type": "string", "optional": true, "description": "Binding name, 'cdp' if not specified.", "typeRef": null}, {"name": "inheritPermissions", "type": "boolean", "optional": true, "description": "If true, inherits the current root session's permissions (default: false).", "typeRef": null}], [], "Inject object to the target's main frame that provides a communication channel with browser target. Injected object will be available as `window[bindingName]`. The object has the following API: - `binding.send(json)` - a method to send messages over the remote debugging protocol - `binding.onmessage = json => handleMessage(json)` - a callback that will be called for the protocol notifications and command responses.");
|
|
1347
1348
|
inspectorBackend.registerCommand("Target.createBrowserContext", [{"name": "disposeOnDetach", "type": "boolean", "optional": true, "description": "If specified, disposes this context when debugging session disconnects.", "typeRef": null}, {"name": "proxyServer", "type": "string", "optional": true, "description": "Proxy server, similar to the one passed to --proxy-server", "typeRef": null}, {"name": "proxyBypassList", "type": "string", "optional": true, "description": "Proxy bypass list, similar to the one passed to --proxy-bypass-list", "typeRef": null}, {"name": "originsWithUniversalNetworkAccess", "type": "array", "optional": true, "description": "An optional list of origins to grant unlimited cross-origin access to. Parts of the URL other than those constituting origin are ignored.", "typeRef": "string"}], ["browserContextId"], "Creates a new empty BrowserContext. Similar to an incognito profile but you can have more than one.");
|
|
1348
|
-
inspectorBackend.registerCommand("Target.getBrowserContexts", [], ["browserContextIds"], "Returns all browser contexts created with `Target.createBrowserContext` method.");
|
|
1349
|
+
inspectorBackend.registerCommand("Target.getBrowserContexts", [], ["browserContextIds", "defaultBrowserContextId"], "Returns all browser contexts created with `Target.createBrowserContext` method.");
|
|
1349
1350
|
inspectorBackend.registerCommand("Target.createTarget", [{"name": "url", "type": "string", "optional": false, "description": "The initial URL the page will be navigated to. An empty string indicates about:blank.", "typeRef": null}, {"name": "left", "type": "number", "optional": true, "description": "Frame left origin in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "top", "type": "number", "optional": true, "description": "Frame top origin in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "width", "type": "number", "optional": true, "description": "Frame width in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "height", "type": "number", "optional": true, "description": "Frame height in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "windowState", "type": "string", "optional": true, "description": "Frame window state (requires newWindow to be true or headless shell). Default is normal.", "typeRef": "Target.WindowState"}, {"name": "browserContextId", "type": "string", "optional": true, "description": "The browser context to create the page in.", "typeRef": "Browser.BrowserContextID"}, {"name": "enableBeginFrameControl", "type": "boolean", "optional": true, "description": "Whether BeginFrames for this target will be controlled via DevTools (headless shell only, not supported on MacOS yet, false by default).", "typeRef": null}, {"name": "newWindow", "type": "boolean", "optional": true, "description": "Whether to create a new Window or Tab (false by default, not supported by headless shell).", "typeRef": null}, {"name": "background", "type": "boolean", "optional": true, "description": "Whether to create the target in background or foreground (false by default, not supported by headless shell).", "typeRef": null}, {"name": "forTab", "type": "boolean", "optional": true, "description": "Whether to create the target of type \\\"tab\\\".", "typeRef": null}, {"name": "hidden", "type": "boolean", "optional": true, "description": "Whether to create a hidden target. The hidden target is observable via protocol, but not present in the tab UI strip. Cannot be created with `forTab: true`, `newWindow: true` or `background: false`. The life-time of the tab is limited to the life-time of the session.", "typeRef": null}], ["targetId"], "Creates a new page.");
|
|
1350
1351
|
inspectorBackend.registerCommand("Target.detachFromTarget", [{"name": "sessionId", "type": "string", "optional": true, "description": "Session to detach.", "typeRef": "Target.SessionID"}, {"name": "targetId", "type": "string", "optional": true, "description": "Deprecated.", "typeRef": "Target.TargetID"}], [], "Detaches session with given id.");
|
|
1351
1352
|
inspectorBackend.registerCommand("Target.disposeBrowserContext", [{"name": "browserContextId", "type": "string", "optional": false, "description": "", "typeRef": "Browser.BrowserContextID"}], [], "Deletes a BrowserContext. All the belonging pages will be closed without calling their beforeunload hooks.");
|