chrome-devtools-frontend 1.0.970302 → 1.0.971727
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/config/gni/devtools_grd_files.gni +11 -7
- package/config/gni/devtools_image_files.gni +1 -0
- package/front_end/Images/src/ic_changes.svg +5 -0
- package/front_end/core/common/ParsedURL.ts +33 -4
- package/front_end/core/host/UserMetrics.ts +4 -1
- package/front_end/core/i18n/locales/en-US.json +21 -3
- package/front_end/core/i18n/locales/en-XL.json +21 -3
- package/front_end/core/platform/UserVisibleError.ts +28 -0
- package/front_end/core/platform/platform.ts +2 -0
- package/front_end/core/sdk/CSSModel.ts +21 -0
- package/front_end/core/sdk/CSSStyleSheetHeader.ts +10 -10
- package/front_end/core/sdk/ChildTargetManager.ts +0 -1
- package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +6 -4
- package/front_end/core/sdk/DOMDebuggerModel.ts +4 -3
- package/front_end/core/sdk/DebuggerModel.ts +21 -16
- package/front_end/core/sdk/NetworkManager.ts +17 -3
- package/front_end/core/sdk/NetworkRequest.ts +16 -5
- package/front_end/core/sdk/Resource.ts +10 -10
- package/front_end/core/sdk/ResourceTreeModel.ts +18 -13
- package/front_end/core/sdk/Script.ts +10 -10
- package/front_end/core/sdk/SourceMap.ts +3 -1
- package/front_end/entrypoints/lighthouse_worker/LighthouseService.ts +15 -6
- package/front_end/entrypoints/main/MainImpl.ts +8 -0
- package/front_end/generated/InspectorBackendCommands.js +14 -8
- package/front_end/generated/SupportedCSSProperties.js +2 -0
- package/front_end/generated/protocol-mapping.d.ts +5 -0
- package/front_end/generated/protocol-proxy-api.d.ts +5 -0
- package/front_end/generated/protocol.ts +20 -12
- package/front_end/models/bindings/BreakpointManager.ts +7 -5
- package/front_end/models/bindings/CSSWorkspaceBinding.ts +21 -0
- package/front_end/models/bindings/DebuggerLanguagePlugins.ts +2 -1
- package/front_end/models/bindings/ResourceMapping.ts +2 -1
- package/front_end/models/bindings/ResourceScriptMapping.ts +2 -1
- package/front_end/models/bindings/StylesSourceMapping.ts +2 -1
- package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +12 -12
- package/front_end/models/issues_manager/descriptions/{federatedAuthRequestClientIdMetadataHttpNotFound.md → federatedAuthRequestClientMetadataHttpNotFound.md} +0 -0
- package/front_end/models/issues_manager/descriptions/{federatedAuthRequestClientIdMetadataInvalidResponse.md → federatedAuthRequestClientMetadataInvalidResponse.md} +0 -0
- package/front_end/models/issues_manager/descriptions/{federatedAuthRequestClientIdMetadataNoResponse.md → federatedAuthRequestClientMetadataNoResponse.md} +0 -0
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -0
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -0
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestNoResponse.md +1 -0
- package/front_end/models/persistence/Automapping.ts +3 -33
- package/front_end/models/persistence/FileSystemWorkspaceBinding.ts +12 -10
- package/front_end/models/persistence/IsolatedFileSystem.ts +26 -22
- package/front_end/models/persistence/NetworkPersistenceManager.ts +8 -4
- package/front_end/models/persistence/PersistenceActions.ts +1 -4
- package/front_end/models/persistence/PlatformFileSystem.ts +6 -5
- package/front_end/{panels/sources/SourceMapNamesResolver.ts → models/source_map_scopes/NamesResolver.ts} +5 -5
- package/front_end/models/source_map_scopes/source_map_scopes.ts +7 -0
- package/front_end/models/text_utils/ContentProvider.ts +2 -1
- package/front_end/models/text_utils/StaticContentProvider.ts +5 -4
- package/front_end/models/workspace/UISourceCode.ts +18 -21
- package/front_end/models/workspace/WorkspaceImpl.ts +3 -1
- package/front_end/panels/application/ServiceWorkerCacheViews.ts +1 -1
- package/front_end/panels/browser_debugger/categorizedBreakpointsSidebarPane.css +0 -1
- package/front_end/panels/console/ConsolePrompt.ts +25 -2
- package/front_end/panels/console/ConsoleViewMessage.ts +41 -8
- package/front_end/panels/coverage/CoverageModel.ts +1 -1
- package/front_end/panels/elements/ElementsPanel.ts +25 -11
- package/front_end/panels/elements/ElementsTreeElement.ts +0 -6
- package/front_end/panels/elements/StylesSidebarPane.ts +214 -41
- package/front_end/panels/elements/elementsTreeOutline.css +0 -1
- package/front_end/panels/issues/AffectedResourcesView.ts +1 -1
- package/front_end/panels/issues/AffectedSourcesView.ts +1 -1
- package/front_end/panels/lighthouse/LighthouseController.ts +30 -0
- package/front_end/panels/lighthouse/LighthousePanel.ts +7 -1
- package/front_end/panels/lighthouse/LighthouseProtocolService.ts +6 -1
- package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +0 -5
- package/front_end/panels/lighthouse/LighthouseStartView.ts +2 -2
- package/front_end/panels/lighthouse/LighthouseStartViewFR.ts +39 -0
- package/front_end/panels/network/NetworkDataGridNode.ts +1 -1
- package/front_end/panels/profiler/CPUProfileView.ts +1 -1
- package/front_end/panels/profiler/HeapProfileView.ts +0 -2
- package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +0 -1
- package/front_end/panels/profiler/HeapSnapshotView.ts +2 -3
- package/front_end/panels/sensors/sensors.css +0 -1
- package/front_end/panels/snippets/ScriptSnippetFileSystem.ts +5 -5
- package/front_end/panels/snippets/SnippetsQuickOpen.ts +1 -1
- package/front_end/panels/sources/DebuggerPlugin.ts +5 -4
- package/front_end/panels/sources/NavigatorView.ts +10 -6
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +6 -3
- package/front_end/panels/sources/SourcesNavigator.ts +7 -1
- package/front_end/panels/sources/TabbedEditorContainer.ts +9 -0
- package/front_end/panels/sources/sources-legacy.ts +5 -16
- package/front_end/panels/sources/sources.ts +0 -2
- package/front_end/panels/sources/sourcesView.css +0 -4
- package/front_end/panels/timeline/TimelineUIUtils.ts +4 -47
- package/front_end/ui/legacy/ViewManager.ts +2 -1
- package/front_end/ui/legacy/closeButton.css +0 -1
- package/front_end/ui/legacy/components/source_frame/FontView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -1
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +2 -3
- package/front_end/ui/legacy/components/utils/Linkifier.ts +20 -59
- package/front_end/ui/legacy/tabbedPane.css +0 -3
- package/front_end/ui/legacy/toolbar.css +28 -3
- package/package.json +1 -1
- package/scripts/npm_test.js +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestWellKnownHttpNotFound.md +0 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestWellKnownInvalidResponse.md +0 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestWellKnownNoResponse.md +0 -1
@@ -412,6 +412,16 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
|
|
412
412
|
* once it is created in `requestWillBeSent`.
|
413
413
|
*/
|
414
414
|
this.#requestIdToTrustTokenEvent = new Map();
|
415
|
+
|
416
|
+
MultitargetNetworkManager.instance().addEventListener(
|
417
|
+
MultitargetNetworkManager.Events.RequestIntercepted, this.#markAsIntercepted.bind(this));
|
418
|
+
}
|
419
|
+
|
420
|
+
#markAsIntercepted(event: Common.EventTarget.EventTargetEvent<string>): void {
|
421
|
+
const request = this.requestForURL(event.data);
|
422
|
+
if (request) {
|
423
|
+
request.setWasIntercepted(true);
|
424
|
+
}
|
415
425
|
}
|
416
426
|
|
417
427
|
private headersMapToHeadersArray(headersMap: Protocol.Network.Headers): NameValue[] {
|
@@ -446,7 +456,7 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
|
|
446
456
|
if (!networkRequest.statusText) {
|
447
457
|
networkRequest.statusText = response.statusText;
|
448
458
|
}
|
449
|
-
if (!networkRequest.hasExtraResponseInfo()) {
|
459
|
+
if (!networkRequest.hasExtraResponseInfo() || networkRequest.wasIntercepted()) {
|
450
460
|
networkRequest.responseHeaders = this.headersMapToHeadersArray(response.headers);
|
451
461
|
}
|
452
462
|
|
@@ -620,7 +630,7 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
|
|
620
630
|
const lastModifiedHeader = lowercaseHeaders['last-modified'];
|
621
631
|
// We missed the requestWillBeSent.
|
622
632
|
const eventData: RequestUpdateDroppedEventData = {
|
623
|
-
url: response.url,
|
633
|
+
url: response.url as Platform.DevToolsPath.UrlString,
|
624
634
|
frameId: frameId ?? null,
|
625
635
|
loaderId: loaderId,
|
626
636
|
resourceType: type,
|
@@ -1401,6 +1411,8 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
|
|
1401
1411
|
for (const requestInterceptor of this.#urlsForRequestInterceptor.keysArray()) {
|
1402
1412
|
await requestInterceptor(interceptedRequest);
|
1403
1413
|
if (interceptedRequest.hasResponded()) {
|
1414
|
+
this.dispatchEventToListeners(
|
1415
|
+
MultitargetNetworkManager.Events.RequestIntercepted, interceptedRequest.request.url);
|
1404
1416
|
return;
|
1405
1417
|
}
|
1406
1418
|
}
|
@@ -1467,6 +1479,7 @@ export namespace MultitargetNetworkManager {
|
|
1467
1479
|
UserAgentChanged = 'UserAgentChanged',
|
1468
1480
|
InterceptorsChanged = 'InterceptorsChanged',
|
1469
1481
|
AcceptedEncodingsChanged = 'AcceptedEncodingsChanged',
|
1482
|
+
RequestIntercepted = 'RequestIntercepted',
|
1470
1483
|
}
|
1471
1484
|
|
1472
1485
|
export type EventTypes = {
|
@@ -1475,6 +1488,7 @@ export namespace MultitargetNetworkManager {
|
|
1475
1488
|
[Events.UserAgentChanged]: void,
|
1476
1489
|
[Events.InterceptorsChanged]: void,
|
1477
1490
|
[Events.AcceptedEncodingsChanged]: void,
|
1491
|
+
[Events.RequestIntercepted]: string,
|
1478
1492
|
};
|
1479
1493
|
}
|
1480
1494
|
|
@@ -1709,7 +1723,7 @@ export interface InterceptionPattern {
|
|
1709
1723
|
export type RequestInterceptor = (request: InterceptedRequest) => Promise<void>;
|
1710
1724
|
|
1711
1725
|
export interface RequestUpdateDroppedEventData {
|
1712
|
-
url:
|
1726
|
+
url: Platform.DevToolsPath.UrlString;
|
1713
1727
|
frameId: Protocol.Page.FrameId|null;
|
1714
1728
|
loaderId: Protocol.Network.LoaderId;
|
1715
1729
|
resourceType: Protocol.Network.ResourceType;
|
@@ -257,7 +257,7 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
|
|
257
257
|
#includedRequestCookiesInternal: Cookie[];
|
258
258
|
#blockedResponseCookiesInternal: BlockedSetCookieWithReason[];
|
259
259
|
localizedFailDescription: string|null;
|
260
|
-
#urlInternal!:
|
260
|
+
#urlInternal!: Platform.DevToolsPath.UrlString;
|
261
261
|
#responseReceivedTimeInternal!: number;
|
262
262
|
#transferSizeInternal!: number;
|
263
263
|
#finishedInternal!: boolean;
|
@@ -290,6 +290,7 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
|
|
290
290
|
#parsedQueryParameters?: NameValue[];
|
291
291
|
#contentDataProvider?: (() => Promise<ContentData>);
|
292
292
|
#isSameSiteInternal: boolean|null;
|
293
|
+
#wasIntercepted: boolean;
|
293
294
|
|
294
295
|
private constructor(
|
295
296
|
requestId: string, backendRequestId: Protocol.Network.RequestId|undefined, url: string, documentURL: string,
|
@@ -363,6 +364,8 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
|
|
363
364
|
|
364
365
|
this.localizedFailDescription = null;
|
365
366
|
this.#isSameSiteInternal = null;
|
367
|
+
|
368
|
+
this.#wasIntercepted = false;
|
366
369
|
}
|
367
370
|
|
368
371
|
static create(
|
@@ -403,7 +406,7 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
|
|
403
406
|
return this.#backendRequestIdInternal;
|
404
407
|
}
|
405
408
|
|
406
|
-
url():
|
409
|
+
url(): Platform.DevToolsPath.UrlString {
|
407
410
|
return this.#urlInternal;
|
408
411
|
}
|
409
412
|
|
@@ -411,12 +414,13 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
|
|
411
414
|
return this.#urlInternal.startsWith('blob:');
|
412
415
|
}
|
413
416
|
|
417
|
+
// TODO(crbug.com/1253323): Cast to UrlString will be removed when migration to branded types is complete.
|
414
418
|
setUrl(x: string): void {
|
415
419
|
if (this.#urlInternal === x) {
|
416
420
|
return;
|
417
421
|
}
|
418
422
|
|
419
|
-
this.#urlInternal = x;
|
423
|
+
this.#urlInternal = x as Platform.DevToolsPath.UrlString;
|
420
424
|
this.#parsedURLInternal = new Common.ParsedURL.ParsedURL(x);
|
421
425
|
this.#queryStringInternal = undefined;
|
422
426
|
this.#parsedQueryParameters = undefined;
|
@@ -964,6 +968,14 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
|
|
964
968
|
return this.#responseHeaderValues[headerName];
|
965
969
|
}
|
966
970
|
|
971
|
+
wasIntercepted(): boolean {
|
972
|
+
return this.#wasIntercepted;
|
973
|
+
}
|
974
|
+
|
975
|
+
setWasIntercepted(wasIntercepted: boolean): void {
|
976
|
+
this.#wasIntercepted = wasIntercepted;
|
977
|
+
}
|
978
|
+
|
967
979
|
get responseCookies(): Cookie[] {
|
968
980
|
if (!this.#responseCookiesInternal) {
|
969
981
|
this.#responseCookiesInternal =
|
@@ -1175,8 +1187,7 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
|
|
1175
1187
|
this.#contentDataProvider = dataProvider;
|
1176
1188
|
}
|
1177
1189
|
|
1178
|
-
|
1179
|
-
contentURL(): string {
|
1190
|
+
contentURL(): Platform.DevToolsPath.UrlString {
|
1180
1191
|
return this.#urlInternal;
|
1181
1192
|
}
|
1182
1193
|
|
@@ -42,8 +42,8 @@ import type {ResourceTreeFrame, ResourceTreeModel} from './ResourceTreeModel.js'
|
|
42
42
|
export class Resource implements TextUtils.ContentProvider.ContentProvider {
|
43
43
|
readonly #resourceTreeModel: ResourceTreeModel;
|
44
44
|
#requestInternal: NetworkRequest|null;
|
45
|
-
#urlInternal!:
|
46
|
-
readonly #documentURLInternal:
|
45
|
+
#urlInternal!: Platform.DevToolsPath.UrlString;
|
46
|
+
readonly #documentURLInternal: Platform.DevToolsPath.UrlString;
|
47
47
|
readonly #frameIdInternal: Protocol.Page.FrameId|null;
|
48
48
|
readonly #loaderIdInternal: Protocol.Network.LoaderId|null;
|
49
49
|
readonly #type: Common.ResourceType.ResourceType;
|
@@ -58,9 +58,10 @@ export class Resource implements TextUtils.ContentProvider.ContentProvider {
|
|
58
58
|
#contentRequested?: boolean;
|
59
59
|
|
60
60
|
constructor(
|
61
|
-
resourceTreeModel: ResourceTreeModel, request: NetworkRequest|null, url:
|
62
|
-
|
63
|
-
type: Common.ResourceType.ResourceType, mimeType: string,
|
61
|
+
resourceTreeModel: ResourceTreeModel, request: NetworkRequest|null, url: Platform.DevToolsPath.UrlString,
|
62
|
+
documentURL: Platform.DevToolsPath.UrlString, frameId: Protocol.Page.FrameId|null,
|
63
|
+
loaderId: Protocol.Network.LoaderId|null, type: Common.ResourceType.ResourceType, mimeType: string,
|
64
|
+
lastModified: Date|null, contentSize: number|null) {
|
64
65
|
this.#resourceTreeModel = resourceTreeModel;
|
65
66
|
this.#requestInternal = request;
|
66
67
|
this.url = url;
|
@@ -101,11 +102,11 @@ export class Resource implements TextUtils.ContentProvider.ContentProvider {
|
|
101
102
|
return this.#requestInternal;
|
102
103
|
}
|
103
104
|
|
104
|
-
get url():
|
105
|
+
get url(): Platform.DevToolsPath.UrlString {
|
105
106
|
return this.#urlInternal;
|
106
107
|
}
|
107
108
|
|
108
|
-
set url(x:
|
109
|
+
set url(x: Platform.DevToolsPath.UrlString) {
|
109
110
|
this.#urlInternal = x;
|
110
111
|
this.#parsedURLInternal = new Common.ParsedURL.ParsedURL(x);
|
111
112
|
}
|
@@ -114,7 +115,7 @@ export class Resource implements TextUtils.ContentProvider.ContentProvider {
|
|
114
115
|
return this.#parsedURLInternal;
|
115
116
|
}
|
116
117
|
|
117
|
-
get documentURL():
|
118
|
+
get documentURL(): Platform.DevToolsPath.UrlString {
|
118
119
|
return this.#documentURLInternal;
|
119
120
|
}
|
120
121
|
|
@@ -150,8 +151,7 @@ export class Resource implements TextUtils.ContentProvider.ContentProvider {
|
|
150
151
|
this.#isGeneratedInternal = val;
|
151
152
|
}
|
152
153
|
|
153
|
-
|
154
|
-
contentURL(): string {
|
154
|
+
contentURL(): Platform.DevToolsPath.UrlString {
|
155
155
|
return this.#urlInternal;
|
156
156
|
}
|
157
157
|
|
@@ -34,6 +34,7 @@
|
|
34
34
|
|
35
35
|
import * as Common from '../common/common.js';
|
36
36
|
import * as i18n from '../i18n/i18n.js';
|
37
|
+
import type * as Platform from '../platform/platform.js';
|
37
38
|
import type * as ProtocolProxyApi from '../../generated/protocol-proxy-api.js';
|
38
39
|
import * as Protocol from '../../generated/protocol.js';
|
39
40
|
|
@@ -50,6 +51,8 @@ import {SDKModel} from './SDKModel.js';
|
|
50
51
|
import {TargetManager} from './TargetManager.js';
|
51
52
|
import {SecurityOriginManager} from './SecurityOriginManager.js';
|
52
53
|
|
54
|
+
// TODO(crbug.com/1253323): Casts to UrlString will be removed from this file when migration to branded types is complete.
|
55
|
+
|
53
56
|
export class ResourceTreeModel extends SDKModel<EventTypes> {
|
54
57
|
readonly agent: ProtocolProxyApi.PageApi;
|
55
58
|
readonly #securityOriginManager: SecurityOriginManager;
|
@@ -237,8 +240,8 @@ export class ResourceTreeModel extends SDKModel<EventTypes> {
|
|
237
240
|
const frame = this.framesInternal.get(framePayload.id);
|
238
241
|
if (frame && !frame.getResourcesMap().get(framePayload.url)) {
|
239
242
|
const frameResource = this.createResourceFromFramePayload(
|
240
|
-
framePayload, framePayload.url, Common.ResourceType.resourceTypes.Document,
|
241
|
-
null);
|
243
|
+
framePayload, framePayload.url as Platform.DevToolsPath.UrlString, Common.ResourceType.resourceTypes.Document,
|
244
|
+
framePayload.mimeType, null, null);
|
242
245
|
frameResource.isGenerated = true;
|
243
246
|
frame.addResource(frameResource);
|
244
247
|
}
|
@@ -301,8 +304,8 @@ export class ResourceTreeModel extends SDKModel<EventTypes> {
|
|
301
304
|
}
|
302
305
|
|
303
306
|
const resource = new Resource(
|
304
|
-
this, null, url, frame.url, frameId, data.loaderId,
|
305
|
-
data.mimeType, data.lastModified, null);
|
307
|
+
this, null, url, frame.url as Platform.DevToolsPath.UrlString, frameId, data.loaderId,
|
308
|
+
Common.ResourceType.resourceTypes[data.resourceType], data.mimeType, data.lastModified, null);
|
306
309
|
frame.addResource(resource);
|
307
310
|
}
|
308
311
|
|
@@ -342,25 +345,27 @@ export class ResourceTreeModel extends SDKModel<EventTypes> {
|
|
342
345
|
for (let i = 0; i < frameTreePayload.resources.length; ++i) {
|
343
346
|
const subresource = frameTreePayload.resources[i];
|
344
347
|
const resource = this.createResourceFromFramePayload(
|
345
|
-
framePayload, subresource.url
|
346
|
-
subresource.
|
348
|
+
framePayload, subresource.url as Platform.DevToolsPath.UrlString,
|
349
|
+
Common.ResourceType.resourceTypes[subresource.type], subresource.mimeType, subresource.lastModified || null,
|
350
|
+
subresource.contentSize || null);
|
347
351
|
frame.addResource(resource);
|
348
352
|
}
|
349
353
|
|
350
354
|
if (!frame.getResourcesMap().get(framePayload.url)) {
|
351
355
|
const frameResource = this.createResourceFromFramePayload(
|
352
|
-
framePayload, framePayload.url, Common.ResourceType.resourceTypes.Document,
|
353
|
-
null);
|
356
|
+
framePayload, framePayload.url as Platform.DevToolsPath.UrlString, Common.ResourceType.resourceTypes.Document,
|
357
|
+
framePayload.mimeType, null, null);
|
354
358
|
frame.addResource(frameResource);
|
355
359
|
}
|
356
360
|
}
|
357
361
|
|
358
362
|
private createResourceFromFramePayload(
|
359
|
-
frame: Protocol.Page.Frame, url:
|
360
|
-
lastModifiedTime: number|null, contentSize: number|null): Resource {
|
363
|
+
frame: Protocol.Page.Frame, url: Platform.DevToolsPath.UrlString, type: Common.ResourceType.ResourceType,
|
364
|
+
mimeType: string, lastModifiedTime: number|null, contentSize: number|null): Resource {
|
361
365
|
const lastModified = typeof lastModifiedTime === 'number' ? new Date(lastModifiedTime * 1000) : null;
|
362
366
|
return new Resource(
|
363
|
-
this, null, url, frame.url, frame.id, frame.loaderId, type, mimeType,
|
367
|
+
this, null, url, frame.url as Platform.DevToolsPath.UrlString, frame.id, frame.loaderId, type, mimeType,
|
368
|
+
lastModified, contentSize);
|
364
369
|
}
|
365
370
|
|
366
371
|
suspendReload(): void {
|
@@ -842,8 +847,8 @@ export class ResourceTreeFrame {
|
|
842
847
|
return;
|
843
848
|
}
|
844
849
|
resource = new Resource(
|
845
|
-
this.#model, request, request.url(), request.documentURL
|
846
|
-
request.resourceType(), request.mimeType, null, null);
|
850
|
+
this.#model, request, request.url(), request.documentURL as Platform.DevToolsPath.UrlString, request.frameId,
|
851
|
+
request.loaderId, request.resourceType(), request.mimeType, null, null);
|
847
852
|
this.resourcesMap.set(resource.url, resource);
|
848
853
|
this.#model.dispatchEventToListeners(Events.ResourceAdded, resource);
|
849
854
|
}
|
@@ -29,6 +29,7 @@
|
|
29
29
|
|
30
30
|
import * as Protocol from '../../generated/protocol.js';
|
31
31
|
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
32
|
+
import type * as Platform from '../../core/platform/platform.js';
|
32
33
|
import * as Common from '../common/common.js';
|
33
34
|
import * as i18n from '../i18n/i18n.js';
|
34
35
|
|
@@ -56,7 +57,7 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
56
57
|
export class Script implements TextUtils.ContentProvider.ContentProvider, FrameAssociated {
|
57
58
|
debuggerModel: DebuggerModel;
|
58
59
|
scriptId: Protocol.Runtime.ScriptId;
|
59
|
-
sourceURL:
|
60
|
+
sourceURL: Platform.DevToolsPath.UrlString;
|
60
61
|
lineOffset: number;
|
61
62
|
columnOffset: number;
|
62
63
|
endLine: number;
|
@@ -65,7 +66,7 @@ export class Script implements TextUtils.ContentProvider.ContentProvider, FrameA
|
|
65
66
|
hash: string;
|
66
67
|
readonly #isContentScriptInternal: boolean;
|
67
68
|
readonly #isLiveEditInternal: boolean;
|
68
|
-
sourceMapURL:
|
69
|
+
sourceMapURL: Platform.DevToolsPath.UrlString|undefined;
|
69
70
|
debugSymbols: Protocol.Debugger.DebugSymbols|null;
|
70
71
|
hasSourceURL: boolean;
|
71
72
|
contentLength: number;
|
@@ -77,12 +78,12 @@ export class Script implements TextUtils.ContentProvider.ContentProvider, FrameA
|
|
77
78
|
readonly #embedderNameInternal: string|null;
|
78
79
|
readonly isModule: boolean|null;
|
79
80
|
constructor(
|
80
|
-
debuggerModel: DebuggerModel, scriptId: Protocol.Runtime.ScriptId, sourceURL:
|
81
|
-
startColumn: number, endLine: number, endColumn: number, executionContextId: number,
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
embedderName: string|null) {
|
81
|
+
debuggerModel: DebuggerModel, scriptId: Protocol.Runtime.ScriptId, sourceURL: Platform.DevToolsPath.UrlString,
|
82
|
+
startLine: number, startColumn: number, endLine: number, endColumn: number, executionContextId: number,
|
83
|
+
hash: string, isContentScript: boolean, isLiveEdit: boolean,
|
84
|
+
sourceMapURL: Platform.DevToolsPath.UrlString|undefined, hasSourceURL: boolean, length: number,
|
85
|
+
isModule: boolean|null, originStackTrace: Protocol.Runtime.StackTrace|null, codeOffset: number|null,
|
86
|
+
scriptLanguage: string|null, debugSymbols: Protocol.Debugger.DebugSymbols|null, embedderName: string|null) {
|
86
87
|
this.debuggerModel = debuggerModel;
|
87
88
|
this.scriptId = scriptId;
|
88
89
|
this.sourceURL = sourceURL;
|
@@ -163,8 +164,7 @@ export class Script implements TextUtils.ContentProvider.ContentProvider, FrameA
|
|
163
164
|
return this.#isLiveEditInternal;
|
164
165
|
}
|
165
166
|
|
166
|
-
|
167
|
-
contentURL(): string {
|
167
|
+
contentURL(): Platform.DevToolsPath.UrlString {
|
168
168
|
return this.sourceURL;
|
169
169
|
}
|
170
170
|
|
@@ -211,7 +211,9 @@ export class TextSourceMap implements SourceMap {
|
|
211
211
|
if (info && info.content) {
|
212
212
|
return TextUtils.StaticContentProvider.StaticContentProvider.fromString(sourceURL, contentType, info.content);
|
213
213
|
}
|
214
|
-
|
214
|
+
// TODO(crbug.com/1253323): Cast to UrlString will be removed when migration to branded types is complete.
|
215
|
+
return new CompilerSourceMappingContentProvider(
|
216
|
+
sourceURL as Platform.DevToolsPath.UrlString, contentType, this.#initiator);
|
215
217
|
}
|
216
218
|
|
217
219
|
embeddedContentByURL(sourceURL: string): string|null {
|
@@ -103,7 +103,7 @@ async function start(method: string, params: any): Promise<unknown> {
|
|
103
103
|
const url = params.url;
|
104
104
|
|
105
105
|
// Handle legacy Lighthouse runner path.
|
106
|
-
if (method === '
|
106
|
+
if (method === 'legacyNavigation') {
|
107
107
|
// @ts-expect-error https://github.com/GoogleChrome/lighthouse/issues/11628
|
108
108
|
const connection = self.setUpWorkerConnection(port);
|
109
109
|
// @ts-expect-error https://github.com/GoogleChrome/lighthouse/issues/11628
|
@@ -115,14 +115,21 @@ async function start(method: string, params: any): Promise<unknown> {
|
|
115
115
|
puppeteerConnection =
|
116
116
|
await Puppeteer.PuppeteerConnection.getPuppeteerConnection(rawConnection, mainFrameId, mainTargetId);
|
117
117
|
|
118
|
+
if (method === 'snapshot') {
|
119
|
+
// @ts-expect-error https://github.com/GoogleChrome/lighthouse/issues/11628
|
120
|
+
return await self.runLighthouseSnapshot({
|
121
|
+
url,
|
122
|
+
config,
|
123
|
+
page: puppeteerConnection.page,
|
124
|
+
});
|
125
|
+
}
|
126
|
+
|
118
127
|
// @ts-expect-error https://github.com/GoogleChrome/lighthouse/issues/11628
|
119
|
-
|
128
|
+
return await self.runLighthouseNavigation({
|
120
129
|
url,
|
121
130
|
config,
|
122
131
|
page: puppeteerConnection.page,
|
123
132
|
});
|
124
|
-
|
125
|
-
return result;
|
126
133
|
} catch (err) {
|
127
134
|
return ({
|
128
135
|
fatal: true,
|
@@ -179,8 +186,10 @@ function notifyFrontendViaWorkerMessage(method: string, params: any): void {
|
|
179
186
|
self.onmessage = async(event: MessageEvent): Promise<void> => {
|
180
187
|
const messageFromFrontend = JSON.parse(event.data);
|
181
188
|
switch (messageFromFrontend.method) {
|
182
|
-
case '
|
183
|
-
case '
|
189
|
+
case 'navigation':
|
190
|
+
case 'timespan':
|
191
|
+
case 'snapshot':
|
192
|
+
case 'legacyNavigation': {
|
184
193
|
const result = await start(messageFromFrontend.method, messageFromFrontend.params);
|
185
194
|
self.postMessage(JSON.stringify({id: messageFromFrontend.id, result}));
|
186
195
|
break;
|
@@ -309,9 +309,14 @@ export class MainImpl {
|
|
309
309
|
'timelineV8RuntimeCallStats', 'Timeline: V8 Runtime Call Stats on Timeline', true);
|
310
310
|
Root.Runtime.experiments.register('timelineWebGL', 'Timeline: WebGL-based flamechart');
|
311
311
|
Root.Runtime.experiments.register('timelineReplayEvent', 'Timeline: Replay input events', true);
|
312
|
+
|
313
|
+
// Debugging
|
312
314
|
Root.Runtime.experiments.register(
|
313
315
|
'wasmDWARFDebugging', 'WebAssembly Debugging: Enable DWARF support', undefined,
|
314
316
|
'https://developer.chrome.com/blog/wasm-debugging-2020/');
|
317
|
+
Root.Runtime.experiments.register(
|
318
|
+
'evaluateExpressionsWithSourceMaps', 'Console: Resolve variable names in expressions using source maps',
|
319
|
+
undefined);
|
315
320
|
|
316
321
|
// Dual-screen
|
317
322
|
Root.Runtime.experiments.register(
|
@@ -376,6 +381,9 @@ export class MainImpl {
|
|
376
381
|
Root.Runtime.experiments.register(
|
377
382
|
Root.Runtime.ExperimentName.HEADER_OVERRIDES, 'Local overrides for response headers');
|
378
383
|
|
384
|
+
// New Lighthouse panel with timespan and snapshot mode
|
385
|
+
Root.Runtime.experiments.register('lighthousePanelFR', 'Use Lighthouse panel with timespan and snapshot modes');
|
386
|
+
|
379
387
|
Root.Runtime.experiments.enableExperimentsByDefault([
|
380
388
|
'sourceOrderViewer',
|
381
389
|
'hideIssuesFeature',
|
@@ -285,12 +285,12 @@ export function registerCommands(inspectorBackend) {
|
|
285
285
|
inspectorBackend.registerEnum('Audits.FederatedAuthRequestIssueReason', {
|
286
286
|
ApprovalDeclined: 'ApprovalDeclined',
|
287
287
|
TooManyRequests: 'TooManyRequests',
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
288
|
+
ManifestHttpNotFound: 'ManifestHttpNotFound',
|
289
|
+
ManifestNoResponse: 'ManifestNoResponse',
|
290
|
+
ManifestInvalidResponse: 'ManifestInvalidResponse',
|
291
|
+
ClientMetadataHttpNotFound: 'ClientMetadataHttpNotFound',
|
292
|
+
ClientMetadataNoResponse: 'ClientMetadataNoResponse',
|
293
|
+
ClientMetadataInvalidResponse: 'ClientMetadataInvalidResponse',
|
294
294
|
ErrorFetchingSignin: 'ErrorFetchingSignin',
|
295
295
|
InvalidSigninResponse: 'InvalidSigninResponse',
|
296
296
|
AccountsHttpNotFound: 'AccountsHttpNotFound',
|
@@ -552,6 +552,13 @@ export function registerCommands(inspectorBackend) {
|
|
552
552
|
{'name': 'range', 'type': 'object', 'optional': false}, {'name': 'text', 'type': 'string', 'optional': false}
|
553
553
|
],
|
554
554
|
['containerQuery']);
|
555
|
+
inspectorBackend.registerCommand(
|
556
|
+
'CSS.setSupportsText',
|
557
|
+
[
|
558
|
+
{'name': 'styleSheetId', 'type': 'string', 'optional': false},
|
559
|
+
{'name': 'range', 'type': 'object', 'optional': false}, {'name': 'text', 'type': 'string', 'optional': false}
|
560
|
+
],
|
561
|
+
['supports']);
|
555
562
|
inspectorBackend.registerCommand(
|
556
563
|
'CSS.setRuleSelector',
|
557
564
|
[
|
@@ -1124,7 +1131,6 @@ export function registerCommands(inspectorBackend) {
|
|
1124
1131
|
[
|
1125
1132
|
{'name': 'policy', 'type': 'string', 'optional': false}, {'name': 'budget', 'type': 'number', 'optional': true},
|
1126
1133
|
{'name': 'maxVirtualTimeTaskStarvationCount', 'type': 'number', 'optional': true},
|
1127
|
-
{'name': 'waitForNavigation', 'type': 'boolean', 'optional': true},
|
1128
1134
|
{'name': 'initialVirtualTime', 'type': 'number', 'optional': true}
|
1129
1135
|
],
|
1130
1136
|
['virtualTimeTicksBase']);
|
@@ -2033,6 +2039,7 @@ export function registerCommands(inspectorBackend) {
|
|
2033
2039
|
ChViewportHeight: 'ch-viewport-height',
|
2034
2040
|
ChViewportWidth: 'ch-viewport-width',
|
2035
2041
|
ChWidth: 'ch-width',
|
2042
|
+
ChPartitionedCookies: 'ch-partitioned-cookies',
|
2036
2043
|
ClipboardRead: 'clipboard-read',
|
2037
2044
|
ClipboardWrite: 'clipboard-write',
|
2038
2045
|
CrossOriginIsolated: 'cross-origin-isolated',
|
@@ -2050,7 +2057,6 @@ export function registerCommands(inspectorBackend) {
|
|
2050
2057
|
Gyroscope: 'gyroscope',
|
2051
2058
|
Hid: 'hid',
|
2052
2059
|
IdleDetection: 'idle-detection',
|
2053
|
-
InterestCohort: 'interest-cohort',
|
2054
2060
|
JoinAdInterestGroup: 'join-ad-interest-group',
|
2055
2061
|
KeyboardMap: 'keyboard-map',
|
2056
2062
|
Magnetometer: 'magnetometer',
|
@@ -152,6 +152,7 @@ export const generatedProperties = [
|
|
152
152
|
{'name': 'background-repeat-x'},
|
153
153
|
{'name': 'background-repeat-y'},
|
154
154
|
{'name': 'background-size', 'keywords': ['auto', 'cover', 'contain']},
|
155
|
+
{'name': 'base-palette'},
|
155
156
|
{'name': 'baseline-shift', 'keywords': ['baseline', 'sub', 'super']},
|
156
157
|
{'name': 'block-size', 'keywords': ['auto']},
|
157
158
|
{
|
@@ -619,6 +620,7 @@ export const generatedProperties = [
|
|
619
620
|
{'name': 'overflow-wrap', 'inherited': true, 'keywords': ['normal', 'break-word', 'anywhere']},
|
620
621
|
{'name': 'overflow-x', 'keywords': ['visible', 'hidden', 'scroll', 'auto', 'overlay', 'clip']},
|
621
622
|
{'name': 'overflow-y', 'keywords': ['visible', 'hidden', 'scroll', 'auto', 'overlay', 'clip']},
|
623
|
+
{'name': 'override-colors'},
|
622
624
|
{'longhands': ['overscroll-behavior-x', 'overscroll-behavior-y'], 'name': 'overscroll-behavior'},
|
623
625
|
{'name': 'overscroll-behavior-block'},
|
624
626
|
{'name': 'overscroll-behavior-inline'},
|
@@ -1011,6 +1011,11 @@ export namespace ProtocolMapping {
|
|
1011
1011
|
'CSS.setContainerQueryText': {
|
1012
1012
|
paramsType: [Protocol.CSS.SetContainerQueryTextRequest]; returnType: Protocol.CSS.SetContainerQueryTextResponse;
|
1013
1013
|
};
|
1014
|
+
/**
|
1015
|
+
* Modifies the expression of a supports at-rule.
|
1016
|
+
*/
|
1017
|
+
'CSS.setSupportsText':
|
1018
|
+
{paramsType: [Protocol.CSS.SetSupportsTextRequest]; returnType: Protocol.CSS.SetSupportsTextResponse;};
|
1014
1019
|
/**
|
1015
1020
|
* Modifies the rule selector.
|
1016
1021
|
*/
|
@@ -631,6 +631,11 @@ declare namespace ProtocolProxyApi {
|
|
631
631
|
invoke_setContainerQueryText(params: Protocol.CSS.SetContainerQueryTextRequest):
|
632
632
|
Promise<Protocol.CSS.SetContainerQueryTextResponse>;
|
633
633
|
|
634
|
+
/**
|
635
|
+
* Modifies the expression of a supports at-rule.
|
636
|
+
*/
|
637
|
+
invoke_setSupportsText(params: Protocol.CSS.SetSupportsTextRequest): Promise<Protocol.CSS.SetSupportsTextResponse>;
|
638
|
+
|
634
639
|
/**
|
635
640
|
* Modifies the rule selector.
|
636
641
|
*/
|
@@ -1065,12 +1065,12 @@ export namespace Audits {
|
|
1065
1065
|
export const enum FederatedAuthRequestIssueReason {
|
1066
1066
|
ApprovalDeclined = 'ApprovalDeclined',
|
1067
1067
|
TooManyRequests = 'TooManyRequests',
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1068
|
+
ManifestHttpNotFound = 'ManifestHttpNotFound',
|
1069
|
+
ManifestNoResponse = 'ManifestNoResponse',
|
1070
|
+
ManifestInvalidResponse = 'ManifestInvalidResponse',
|
1071
|
+
ClientMetadataHttpNotFound = 'ClientMetadataHttpNotFound',
|
1072
|
+
ClientMetadataNoResponse = 'ClientMetadataNoResponse',
|
1073
|
+
ClientMetadataInvalidResponse = 'ClientMetadataInvalidResponse',
|
1074
1074
|
ErrorFetchingSignin = 'ErrorFetchingSignin',
|
1075
1075
|
InvalidSigninResponse = 'InvalidSigninResponse',
|
1076
1076
|
AccountsHttpNotFound = 'AccountsHttpNotFound',
|
@@ -2554,6 +2554,19 @@ export namespace CSS {
|
|
2554
2554
|
containerQuery: CSSContainerQuery;
|
2555
2555
|
}
|
2556
2556
|
|
2557
|
+
export interface SetSupportsTextRequest {
|
2558
|
+
styleSheetId: StyleSheetId;
|
2559
|
+
range: SourceRange;
|
2560
|
+
text: string;
|
2561
|
+
}
|
2562
|
+
|
2563
|
+
export interface SetSupportsTextResponse extends ProtocolResponseWithError {
|
2564
|
+
/**
|
2565
|
+
* The resulting CSS Supports rule after modification.
|
2566
|
+
*/
|
2567
|
+
supports: CSSSupports;
|
2568
|
+
}
|
2569
|
+
|
2557
2570
|
export interface SetRuleSelectorRequest {
|
2558
2571
|
styleSheetId: StyleSheetId;
|
2559
2572
|
range: SourceRange;
|
@@ -5273,11 +5286,6 @@ export namespace Emulation {
|
|
5273
5286
|
* forwards to prevent deadlock.
|
5274
5287
|
*/
|
5275
5288
|
maxVirtualTimeTaskStarvationCount?: integer;
|
5276
|
-
/**
|
5277
|
-
* If set the virtual time policy change should be deferred until any frame starts navigating.
|
5278
|
-
* Note any previous deferred policy change is superseded.
|
5279
|
-
*/
|
5280
|
-
waitForNavigation?: boolean;
|
5281
5289
|
/**
|
5282
5290
|
* If set, base::Time::Now will be overridden to initially return this value.
|
5283
5291
|
*/
|
@@ -10052,6 +10060,7 @@ export namespace Page {
|
|
10052
10060
|
ChViewportHeight = 'ch-viewport-height',
|
10053
10061
|
ChViewportWidth = 'ch-viewport-width',
|
10054
10062
|
ChWidth = 'ch-width',
|
10063
|
+
ChPartitionedCookies = 'ch-partitioned-cookies',
|
10055
10064
|
ClipboardRead = 'clipboard-read',
|
10056
10065
|
ClipboardWrite = 'clipboard-write',
|
10057
10066
|
CrossOriginIsolated = 'cross-origin-isolated',
|
@@ -10069,7 +10078,6 @@ export namespace Page {
|
|
10069
10078
|
Gyroscope = 'gyroscope',
|
10070
10079
|
Hid = 'hid',
|
10071
10080
|
IdleDetection = 'idle-detection',
|
10072
|
-
InterestCohort = 'interest-cohort',
|
10073
10081
|
JoinAdInterestGroup = 'join-ad-interest-group',
|
10074
10082
|
KeyboardMap = 'keyboard-map',
|
10075
10083
|
Magnetometer = 'magnetometer',
|
@@ -32,6 +32,7 @@
|
|
32
32
|
|
33
33
|
import * as Common from '../../core/common/common.js';
|
34
34
|
import * as SDK from '../../core/sdk/sdk.js';
|
35
|
+
import type * as Platform from '../../core/platform/platform.js';
|
35
36
|
import type * as Protocol from '../../generated/protocol.js';
|
36
37
|
import type * as TextUtils from '../text_utils/text_utils.js';
|
37
38
|
import * as Workspace from '../workspace/workspace.js';
|
@@ -305,7 +306,7 @@ export type EventTypes = {
|
|
305
306
|
|
306
307
|
export class Breakpoint implements SDK.TargetManager.SDKModelObserver<SDK.DebuggerModel.DebuggerModel> {
|
307
308
|
readonly breakpointManager: BreakpointManager;
|
308
|
-
urlInternal:
|
309
|
+
urlInternal: Platform.DevToolsPath.UrlString;
|
309
310
|
readonly #lineNumberInternal: number;
|
310
311
|
readonly #columnNumberInternal: number|undefined;
|
311
312
|
readonly #uiLocations: Set<Workspace.UISourceCode.UILocation>;
|
@@ -317,8 +318,9 @@ export class Breakpoint implements SDK.TargetManager.SDKModelObserver<SDK.Debugg
|
|
317
318
|
readonly #modelBreakpoints: Map<SDK.DebuggerModel.DebuggerModel, ModelBreakpoint>;
|
318
319
|
|
319
320
|
constructor(
|
320
|
-
breakpointManager: BreakpointManager, primaryUISourceCode: Workspace.UISourceCode.UISourceCode,
|
321
|
-
lineNumber: number, columnNumber: number|undefined, condition: string,
|
321
|
+
breakpointManager: BreakpointManager, primaryUISourceCode: Workspace.UISourceCode.UISourceCode,
|
322
|
+
url: Platform.DevToolsPath.UrlString, lineNumber: number, columnNumber: number|undefined, condition: string,
|
323
|
+
enabled: boolean) {
|
322
324
|
this.breakpointManager = breakpointManager;
|
323
325
|
this.urlInternal = url;
|
324
326
|
this.#lineNumberInternal = lineNumber;
|
@@ -398,7 +400,7 @@ export class Breakpoint implements SDK.TargetManager.SDKModelObserver<SDK.Debugg
|
|
398
400
|
}
|
399
401
|
}
|
400
402
|
|
401
|
-
url():
|
403
|
+
url(): Platform.DevToolsPath.UrlString {
|
402
404
|
return this.urlInternal;
|
403
405
|
}
|
404
406
|
|
@@ -791,7 +793,7 @@ export class ModelBreakpoint {
|
|
791
793
|
}
|
792
794
|
|
793
795
|
interface Position {
|
794
|
-
url:
|
796
|
+
url: Platform.DevToolsPath.UrlString;
|
795
797
|
scriptId: Protocol.Runtime.ScriptId;
|
796
798
|
scriptHash: string;
|
797
799
|
lineNumber: number;
|