chrome-devtools-frontend 1.0.1565595 → 1.0.1566234

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.
Files changed (27) hide show
  1. package/front_end/Images/src/lock-person.svg +1 -0
  2. package/front_end/core/root/Runtime.ts +5 -0
  3. package/front_end/core/sdk/DOMModel.ts +32 -2
  4. package/front_end/core/sdk/NetworkManager.ts +13 -0
  5. package/front_end/core/sdk/ResourceTreeModel.ts +11 -6
  6. package/front_end/generated/InspectorBackendCommands.ts +9 -0
  7. package/front_end/generated/SupportedCSSProperties.js +19 -23
  8. package/front_end/generated/protocol-mapping.d.ts +4 -0
  9. package/front_end/generated/protocol-proxy-api.d.ts +5 -0
  10. package/front_end/generated/protocol.ts +199 -0
  11. package/front_end/panels/application/ApplicationPanelSidebar.ts +28 -0
  12. package/front_end/panels/application/ApplicationPanelTreeElement.ts +12 -0
  13. package/front_end/panels/application/DeviceBoundSessionsModel.ts +127 -0
  14. package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +170 -0
  15. package/front_end/panels/application/DeviceBoundSessionsView.ts +252 -0
  16. package/front_end/panels/application/ResourcesPanel.ts +12 -0
  17. package/front_end/panels/application/application.ts +6 -0
  18. package/front_end/panels/application/deviceBoundSessionsView.css +18 -0
  19. package/front_end/panels/console/ConsoleInsightTeaser.ts +24 -5
  20. package/front_end/panels/console/ConsoleViewMessage.ts +20 -13
  21. package/front_end/panels/elements/ElementsTreeOutline.ts +13 -0
  22. package/front_end/panels/elements/MetricsSidebarPane.ts +3 -1
  23. package/front_end/panels/security/SecurityPanelSidebar.ts +0 -1
  24. package/front_end/third_party/chromium/README.chromium +1 -1
  25. package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +8 -1
  26. package/front_end/ui/visual_logging/KnownContextValues.ts +2 -0
  27. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M720-240q25 0 42.5-17.5T780-300q0-25-17.5-42.5T720-360q-25 0-42.5 17.5T660-300q0 25 17.5 42.5T720-240Zm0 120q30 0 56-14t43-39q-23-14-48-20.5t-51-6.5q-26 0-51 6.5T621-173q17 25 43 39t56 14ZM360-640h240v-80q0-50-35-85t-85-35q-50 0-85 35t-35 85v80ZM490-80H240q-33 0-56.5-23.5T160-160v-400q0-33 23.5-56.5T240-640h40v-80q0-83 58.5-141.5T480-920q83 0 141.5 58.5T680-720v80h40q33 0 56.5 23.5T800-560v52q-18-6-37.5-9t-42.5-3v-40H240v400h212q8 24 16 41.5T490-80Zm230 40q-83 0-141.5-58.5T520-240q0-83 58.5-141.5T720-440q83 0 141.5 58.5T920-240q0 83-58.5 141.5T720-40ZM240-560v400-400Z"/></svg>
@@ -505,6 +505,10 @@ interface DevToolsFlexibleLayout {
505
505
  verticalDrawerEnabled: boolean;
506
506
  }
507
507
 
508
+ interface DeviceBoundSessionsDebugging {
509
+ enabled: boolean;
510
+ }
511
+
508
512
  interface AiPromptApi {
509
513
  enabled: boolean;
510
514
  allowWithoutGpu: boolean;
@@ -566,6 +570,7 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
566
570
  devToolsGdpProfilesAvailability: GdpProfilesAvailability,
567
571
  devToolsLiveEdit: LiveEdit,
568
572
  devToolsFlexibleLayout: DevToolsFlexibleLayout,
573
+ deviceBoundSessionsDebugging: DeviceBoundSessionsDebugging,
569
574
  devToolsAiPromptApi: AiPromptApi,
570
575
  devToolsEnableDurableMessages: DevToolsEnableDurableMessages,
571
576
  devToolsAiAssistanceContextSelectionAgent: HostConfigAiAssistanceContextSelectionAgent,
@@ -44,7 +44,7 @@ import {CSSModel} from './CSSModel.js';
44
44
  import {FrameManager} from './FrameManager.js';
45
45
  import {OverlayModel} from './OverlayModel.js';
46
46
  import {RemoteObject} from './RemoteObject.js';
47
- import {ResourceTreeModel} from './ResourceTreeModel.js';
47
+ import {Events as ResourceTreeModelEvents, type ResourceTreeFrame, ResourceTreeModel} from './ResourceTreeModel.js';
48
48
  import {RuntimeModel} from './RuntimeModel.js';
49
49
  import {SDKModel} from './SDKModel.js';
50
50
  import {Capability, type Target} from './Target.js';
@@ -209,6 +209,7 @@ export class DOMNode extends Common.ObjectWrapper.ObjectWrapper<DOMNodeEventType
209
209
 
210
210
  this.id = payload.nodeId;
211
211
  this.#backendNodeId = payload.backendNodeId;
212
+ this.#frameOwnerFrameId = payload.frameId || null;
212
213
  this.#domModel.registerNode(this);
213
214
  this.#nodeType = payload.nodeType;
214
215
  this.#nodeName = payload.nodeName;
@@ -217,7 +218,6 @@ export class DOMNode extends Common.ObjectWrapper.ObjectWrapper<DOMNodeEventType
217
218
  this.#pseudoType = payload.pseudoType;
218
219
  this.#pseudoIdentifier = payload.pseudoIdentifier;
219
220
  this.#shadowRootType = payload.shadowRootType;
220
- this.#frameOwnerFrameId = payload.frameId || null;
221
221
  this.#xmlVersion = payload.xmlVersion;
222
222
  this.#isSVGNode = Boolean(payload.isSVG);
223
223
  this.#isScrollable = Boolean(payload.isScrollable);
@@ -1287,6 +1287,7 @@ export class AdoptedStyleSheet {
1287
1287
  export class DOMModel extends SDKModel<EventTypes> {
1288
1288
  agent: ProtocolProxyApi.DOMApi;
1289
1289
  idToDOMNode = new Map<Protocol.DOM.NodeId, DOMNode>();
1290
+ frameIdToOwnerNode = new Map<Protocol.Page.FrameId, DOMNode>();
1290
1291
  #document: DOMDocument|null = null;
1291
1292
  readonly #attributeLoadNodeIds = new Set<Protocol.DOM.NodeId>();
1292
1293
  readonly runtimeModelInternal: RuntimeModel;
@@ -1297,6 +1298,7 @@ export class DOMModel extends SDKModel<EventTypes> {
1297
1298
  #searchId?: string;
1298
1299
  #topLayerThrottler = new Common.Throttler.Throttler(100);
1299
1300
  #topLayerNodes: DOMNode[] = [];
1301
+ #resourceTreeModel: ResourceTreeModel|null = null;
1300
1302
 
1301
1303
  constructor(target: Target) {
1302
1304
  super(target);
@@ -1306,6 +1308,9 @@ export class DOMModel extends SDKModel<EventTypes> {
1306
1308
  target.registerDOMDispatcher(new DOMDispatcher(this));
1307
1309
  this.runtimeModelInternal = (target.model(RuntimeModel) as RuntimeModel);
1308
1310
 
1311
+ this.#resourceTreeModel = target.model(ResourceTreeModel);
1312
+ this.#resourceTreeModel?.addEventListener(ResourceTreeModelEvents.DocumentOpened, this.onDocumentOpened, this);
1313
+
1309
1314
  if (!target.suspended()) {
1310
1315
  void this.agent.invoke_enable({});
1311
1316
  }
@@ -1350,6 +1355,19 @@ export class DOMModel extends SDKModel<EventTypes> {
1350
1355
  }
1351
1356
  }
1352
1357
 
1358
+ private onDocumentOpened(event: Common.EventTarget.EventTargetEvent<ResourceTreeFrame>): void {
1359
+ const frame = event.data;
1360
+ const node = this.frameIdToOwnerNode.get(frame.id);
1361
+ if (node) {
1362
+ const contentDocument = node.contentDocument();
1363
+ if (contentDocument && contentDocument.documentURL !== frame.url) {
1364
+ contentDocument.documentURL = frame.url;
1365
+ contentDocument.baseURL = frame.url;
1366
+ this.dispatchEventToListeners(Events.DocumentURLChanged, contentDocument);
1367
+ }
1368
+ }
1369
+ }
1370
+
1353
1371
  requestDocument(): Promise<DOMDocument|null> {
1354
1372
  if (this.#document) {
1355
1373
  return Promise.resolve(this.#document);
@@ -1526,6 +1544,7 @@ export class DOMModel extends SDKModel<EventTypes> {
1526
1544
 
1527
1545
  private setDocument(payload: Protocol.DOM.Node|null): void {
1528
1546
  this.idToDOMNode = new Map();
1547
+ this.frameIdToOwnerNode = new Map();
1529
1548
  if (payload && 'nodeId' in payload) {
1530
1549
  this.#document = new DOMDocument(this, payload);
1531
1550
  } else {
@@ -1704,6 +1723,10 @@ export class DOMModel extends SDKModel<EventTypes> {
1704
1723
 
1705
1724
  private unbind(node: DOMNode): void {
1706
1725
  this.idToDOMNode.delete(node.id);
1726
+ const frameId = node.frameOwnerFrameId();
1727
+ if (frameId) {
1728
+ this.frameIdToOwnerNode.delete(frameId);
1729
+ }
1707
1730
  const children = node.children();
1708
1731
  for (let i = 0; children && i < children.length; ++i) {
1709
1732
  this.unbind(children[i]);
@@ -1891,6 +1914,7 @@ export class DOMModel extends SDKModel<EventTypes> {
1891
1914
  }
1892
1915
 
1893
1916
  override dispose(): void {
1917
+ this.#resourceTreeModel?.removeEventListener(ResourceTreeModelEvents.DocumentOpened, this.onDocumentOpened, this);
1894
1918
  DOMModelUndoStack.instance().dispose(this);
1895
1919
  }
1896
1920
 
@@ -1905,6 +1929,10 @@ export class DOMModel extends SDKModel<EventTypes> {
1905
1929
 
1906
1930
  registerNode(node: DOMNode): void {
1907
1931
  this.idToDOMNode.set(node.id, node);
1932
+ const frameId = node.frameOwnerFrameId();
1933
+ if (frameId) {
1934
+ this.frameIdToOwnerNode.set(frameId, node);
1935
+ }
1908
1936
  }
1909
1937
  }
1910
1938
 
@@ -1914,6 +1942,7 @@ export enum Events {
1914
1942
  AttrRemoved = 'AttrRemoved',
1915
1943
  CharacterDataModified = 'CharacterDataModified',
1916
1944
  DOMMutated = 'DOMMutated',
1945
+ DocumentURLChanged = 'DocumentURLChanged',
1917
1946
  NodeInserted = 'NodeInserted',
1918
1947
  NodeRemoved = 'NodeRemoved',
1919
1948
  DocumentUpdated = 'DocumentUpdated',
@@ -1931,6 +1960,7 @@ export interface EventTypes {
1931
1960
  [Events.AttrRemoved]: {node: DOMNode, name: string};
1932
1961
  [Events.CharacterDataModified]: DOMNode;
1933
1962
  [Events.DOMMutated]: DOMNode;
1963
+ [Events.DocumentURLChanged]: DOMDocument;
1934
1964
  [Events.NodeInserted]: DOMNode;
1935
1965
  [Events.NodeRemoved]: {node: DOMNode, parent: DOMNode};
1936
1966
  [Events.DocumentUpdated]: DOMModel;
@@ -386,6 +386,10 @@ export class NetworkManager extends SDKModel<EventTypes> {
386
386
  return await this.#networkAgent.invoke_enableReportingApi({enable});
387
387
  }
388
388
 
389
+ async enableDeviceBoundSessions(enable = true): Promise<Promise<Protocol.ProtocolResponseWithError>> {
390
+ return await this.#networkAgent.invoke_enableDeviceBoundSessions({enable});
391
+ }
392
+
389
393
  async loadNetworkResource(
390
394
  frameId: Protocol.Page.FrameId|null, url: Platform.DevToolsPath.UrlString,
391
395
  options: Protocol.Network.LoadNetworkResourceOptions): Promise<Protocol.Network.LoadNetworkResourcePageResult> {
@@ -414,6 +418,8 @@ export enum Events {
414
418
  ReportingApiReportAdded = 'ReportingApiReportAdded',
415
419
  ReportingApiReportUpdated = 'ReportingApiReportUpdated',
416
420
  ReportingApiEndpointsChangedForOrigin = 'ReportingApiEndpointsChangedForOrigin',
421
+ DeviceBoundSessionsAdded = 'DeviceBoundSessionsAdded',
422
+ DeviceBoundSessionEventOccurred = 'DeviceBoundSessionEventOccurred',
417
423
  /* eslint-enable @typescript-eslint/naming-convention */
418
424
  }
419
425
 
@@ -445,6 +451,8 @@ export interface EventTypes {
445
451
  [Events.ReportingApiReportAdded]: Protocol.Network.ReportingApiReport;
446
452
  [Events.ReportingApiReportUpdated]: Protocol.Network.ReportingApiReport;
447
453
  [Events.ReportingApiEndpointsChangedForOrigin]: Protocol.Network.ReportingApiEndpointsChangedForOriginEvent;
454
+ [Events.DeviceBoundSessionsAdded]: Protocol.Network.DeviceBoundSession[];
455
+ [Events.DeviceBoundSessionEventOccurred]: Protocol.Network.DeviceBoundSessionEventOccurredEvent;
448
456
  }
449
457
 
450
458
  /**
@@ -1555,6 +1563,11 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
1555
1563
  }
1556
1564
 
1557
1565
  deviceBoundSessionsAdded(_params: Protocol.Network.DeviceBoundSessionsAddedEvent): void {
1566
+ this.#manager.dispatchEventToListeners(Events.DeviceBoundSessionsAdded, _params.sessions);
1567
+ }
1568
+
1569
+ deviceBoundSessionEventOccurred(_params: Protocol.Network.DeviceBoundSessionEventOccurredEvent): void {
1570
+ this.#manager.dispatchEventToListeners(Events.DeviceBoundSessionEventOccurred, _params);
1558
1571
  }
1559
1572
 
1560
1573
  policyUpdated(): void {
@@ -233,12 +233,15 @@ export class ResourceTreeModel extends SDKModel<EventTypes> {
233
233
  documentOpened(framePayload: Protocol.Page.Frame): void {
234
234
  this.frameNavigated(framePayload, undefined);
235
235
  const frame = this.framesInternal.get(framePayload.id);
236
- if (frame && !frame.getResourcesMap().get(framePayload.url)) {
237
- const frameResource = this.createResourceFromFramePayload(
238
- framePayload, framePayload.url as Platform.DevToolsPath.UrlString, Common.ResourceType.resourceTypes.Document,
239
- framePayload.mimeType, null, null);
240
- frameResource.isGenerated = true;
241
- frame.addResource(frameResource);
236
+ if (frame) {
237
+ this.dispatchEventToListeners(Events.DocumentOpened, frame);
238
+ if (!frame.getResourcesMap().get(framePayload.url)) {
239
+ const frameResource = this.createResourceFromFramePayload(
240
+ framePayload, framePayload.url as Platform.DevToolsPath.UrlString,
241
+ Common.ResourceType.resourceTypes.Document, framePayload.mimeType, null, null);
242
+ frameResource.isGenerated = true;
243
+ frame.addResource(frameResource);
244
+ }
242
245
  }
243
246
  }
244
247
 
@@ -582,6 +585,7 @@ export enum Events {
582
585
  FrameDetached = 'FrameDetached',
583
586
  FrameResized = 'FrameResized',
584
587
  FrameWillNavigate = 'FrameWillNavigate',
588
+ DocumentOpened = 'DocumentOpened',
585
589
  PrimaryPageChanged = 'PrimaryPageChanged',
586
590
  ResourceAdded = 'ResourceAdded',
587
591
  WillLoadCachedResources = 'WillLoadCachedResources',
@@ -604,6 +608,7 @@ export interface EventTypes {
604
608
  [Events.FrameDetached]: {frame: ResourceTreeFrame, isSwap: boolean};
605
609
  [Events.FrameResized]: void;
606
610
  [Events.FrameWillNavigate]: ResourceTreeFrame;
611
+ [Events.DocumentOpened]: ResourceTreeFrame;
607
612
  [Events.PrimaryPageChanged]: {frame: ResourceTreeFrame, type: PrimaryPageChangeType};
608
613
  [Events.ResourceAdded]: Resource;
609
614
  [Events.WillLoadCachedResources]: void;
@@ -789,6 +789,10 @@ inspectorBackend.registerEnum("Network.CrossOriginEmbedderPolicyValue", {None: "
789
789
  inspectorBackend.registerEnum("Network.ContentSecurityPolicySource", {HTTP: "HTTP", Meta: "Meta"});
790
790
  inspectorBackend.registerEnum("Network.ReportStatus", {Queued: "Queued", Pending: "Pending", MarkedForRemoval: "MarkedForRemoval", Success: "Success"});
791
791
  inspectorBackend.registerEnum("Network.DeviceBoundSessionUrlRuleRuleType", {Exclude: "Exclude", Include: "Include"});
792
+ inspectorBackend.registerEnum("Network.DeviceBoundSessionFetchResult", {Success: "Success", KeyError: "KeyError", SigningError: "SigningError", ServerRequestedTermination: "ServerRequestedTermination", InvalidSessionId: "InvalidSessionId", InvalidChallenge: "InvalidChallenge", TooManyChallenges: "TooManyChallenges", InvalidFetcherUrl: "InvalidFetcherUrl", InvalidRefreshUrl: "InvalidRefreshUrl", TransientHttpError: "TransientHttpError", ScopeOriginSameSiteMismatch: "ScopeOriginSameSiteMismatch", RefreshUrlSameSiteMismatch: "RefreshUrlSameSiteMismatch", MismatchedSessionId: "MismatchedSessionId", MissingScope: "MissingScope", NoCredentials: "NoCredentials", SubdomainRegistrationWellKnownUnavailable: "SubdomainRegistrationWellKnownUnavailable", SubdomainRegistrationUnauthorized: "SubdomainRegistrationUnauthorized", SubdomainRegistrationWellKnownMalformed: "SubdomainRegistrationWellKnownMalformed", SessionProviderWellKnownUnavailable: "SessionProviderWellKnownUnavailable", RelyingPartyWellKnownUnavailable: "RelyingPartyWellKnownUnavailable", FederatedKeyThumbprintMismatch: "FederatedKeyThumbprintMismatch", InvalidFederatedSessionUrl: "InvalidFederatedSessionUrl", InvalidFederatedKey: "InvalidFederatedKey", TooManyRelyingOriginLabels: "TooManyRelyingOriginLabels", BoundCookieSetForbidden: "BoundCookieSetForbidden", NetError: "NetError", ProxyError: "ProxyError", EmptySessionConfig: "EmptySessionConfig", InvalidCredentialsConfig: "InvalidCredentialsConfig", InvalidCredentialsType: "InvalidCredentialsType", InvalidCredentialsEmptyName: "InvalidCredentialsEmptyName", InvalidCredentialsCookie: "InvalidCredentialsCookie", PersistentHttpError: "PersistentHttpError", RegistrationAttemptedChallenge: "RegistrationAttemptedChallenge", InvalidScopeOrigin: "InvalidScopeOrigin", ScopeOriginContainsPath: "ScopeOriginContainsPath", RefreshInitiatorNotString: "RefreshInitiatorNotString", RefreshInitiatorInvalidHostPattern: "RefreshInitiatorInvalidHostPattern", InvalidScopeSpecification: "InvalidScopeSpecification", MissingScopeSpecificationType: "MissingScopeSpecificationType", EmptyScopeSpecificationDomain: "EmptyScopeSpecificationDomain", EmptyScopeSpecificationPath: "EmptyScopeSpecificationPath", InvalidScopeSpecificationType: "InvalidScopeSpecificationType", InvalidScopeIncludeSite: "InvalidScopeIncludeSite", MissingScopeIncludeSite: "MissingScopeIncludeSite", FederatedNotAuthorizedByProvider: "FederatedNotAuthorizedByProvider", FederatedNotAuthorizedByRelyingParty: "FederatedNotAuthorizedByRelyingParty", SessionProviderWellKnownMalformed: "SessionProviderWellKnownMalformed", SessionProviderWellKnownHasProviderOrigin: "SessionProviderWellKnownHasProviderOrigin", RelyingPartyWellKnownMalformed: "RelyingPartyWellKnownMalformed", RelyingPartyWellKnownHasRelyingOrigins: "RelyingPartyWellKnownHasRelyingOrigins", InvalidFederatedSessionProviderSessionMissing: "InvalidFederatedSessionProviderSessionMissing", InvalidFederatedSessionWrongProviderOrigin: "InvalidFederatedSessionWrongProviderOrigin", InvalidCredentialsCookieCreationTime: "InvalidCredentialsCookieCreationTime", InvalidCredentialsCookieName: "InvalidCredentialsCookieName", InvalidCredentialsCookieParsing: "InvalidCredentialsCookieParsing", InvalidCredentialsCookieUnpermittedAttribute: "InvalidCredentialsCookieUnpermittedAttribute", InvalidCredentialsCookieInvalidDomain: "InvalidCredentialsCookieInvalidDomain", InvalidCredentialsCookiePrefix: "InvalidCredentialsCookiePrefix", InvalidScopeRulePath: "InvalidScopeRulePath", InvalidScopeRuleHostPattern: "InvalidScopeRuleHostPattern", ScopeRuleOriginScopedHostPatternMismatch: "ScopeRuleOriginScopedHostPatternMismatch", ScopeRuleSiteScopedHostPatternMismatch: "ScopeRuleSiteScopedHostPatternMismatch", SigningQuotaExceeded: "SigningQuotaExceeded", InvalidConfigJson: "InvalidConfigJson", InvalidFederatedSessionProviderFailedToRestoreKey: "InvalidFederatedSessionProviderFailedToRestoreKey", FailedToUnwrapKey: "FailedToUnwrapKey", SessionDeletedDuringRefresh: "SessionDeletedDuringRefresh"});
793
+ inspectorBackend.registerEnum("Network.RefreshEventDetailsRefreshResult", {Refreshed: "Refreshed", InitializedService: "InitializedService", Unreachable: "Unreachable", ServerError: "ServerError", RefreshQuotaExceeded: "RefreshQuotaExceeded", FatalError: "FatalError", SigningQuotaExceeded: "SigningQuotaExceeded"});
794
+ inspectorBackend.registerEnum("Network.TerminationEventDetailsDeletionReason", {Expired: "Expired", FailedToRestoreKey: "FailedToRestoreKey", FailedToUnwrapKey: "FailedToUnwrapKey", StoragePartitionCleared: "StoragePartitionCleared", ClearBrowsingData: "ClearBrowsingData", ServerRequested: "ServerRequested", InvalidSessionParams: "InvalidSessionParams", RefreshFatalError: "RefreshFatalError"});
795
+ inspectorBackend.registerEnum("Network.ChallengeEventDetailsChallengeResult", {Success: "Success", NoSessionId: "NoSessionId", NoSessionMatch: "NoSessionMatch", CantSetBoundCookie: "CantSetBoundCookie"});
792
796
  inspectorBackend.registerEvent("Network.dataReceived", ["requestId", "timestamp", "dataLength", "encodedDataLength", "data"]);
793
797
  inspectorBackend.registerEvent("Network.eventSourceMessageReceived", ["requestId", "timestamp", "eventName", "eventId", "data"]);
794
798
  inspectorBackend.registerEvent("Network.loadingFailed", ["requestId", "timestamp", "type", "errorText", "canceled", "blockedReason", "corsErrorStatus"]);
@@ -833,6 +837,7 @@ inspectorBackend.registerEvent("Network.reportingApiReportAdded", ["report"]);
833
837
  inspectorBackend.registerEvent("Network.reportingApiReportUpdated", ["report"]);
834
838
  inspectorBackend.registerEvent("Network.reportingApiEndpointsChangedForOrigin", ["origin", "endpoints"]);
835
839
  inspectorBackend.registerEvent("Network.deviceBoundSessionsAdded", ["sessions"]);
840
+ inspectorBackend.registerEvent("Network.deviceBoundSessionEventOccurred", ["eventId", "site", "succeeded", "sessionId", "creationEventDetails", "refreshEventDetails", "terminationEventDetails", "challengeEventDetails"]);
836
841
  inspectorBackend.registerCommand("Network.setAcceptedEncodings", [{"name": "encodings", "type": "array", "optional": false, "description": "List of accepted content encodings.", "typeRef": "Network.ContentEncoding"}], [], "Sets a list of content encodings that will be accepted. Empty list means no encoding is accepted.");
837
842
  inspectorBackend.registerCommand("Network.clearAcceptedEncodingsOverride", [], [], "Clears accepted encodings set by setAcceptedEncodings");
838
843
  inspectorBackend.registerCommand("Network.canClearBrowserCache", [], ["result"], "Tells whether clearing browser cache is supported.");
@@ -918,6 +923,10 @@ inspectorBackend.registerType("Network.DeviceBoundSessionCookieCraving", [{"name
918
923
  inspectorBackend.registerType("Network.DeviceBoundSessionUrlRule", [{"name": "ruleType", "type": "string", "optional": false, "description": "See comments on `net::device_bound_sessions::SessionInclusionRules::UrlRule::rule_type`.", "typeRef": null}, {"name": "hostPattern", "type": "string", "optional": false, "description": "See comments on `net::device_bound_sessions::SessionInclusionRules::UrlRule::host_pattern`.", "typeRef": null}, {"name": "pathPrefix", "type": "string", "optional": false, "description": "See comments on `net::device_bound_sessions::SessionInclusionRules::UrlRule::path_prefix`.", "typeRef": null}]);
919
924
  inspectorBackend.registerType("Network.DeviceBoundSessionInclusionRules", [{"name": "origin", "type": "string", "optional": false, "description": "See comments on `net::device_bound_sessions::SessionInclusionRules::origin_`.", "typeRef": null}, {"name": "includeSite", "type": "boolean", "optional": false, "description": "Whether the whole site is included. See comments on `net::device_bound_sessions::SessionInclusionRules::include_site_` for more details; this boolean is true if that value is populated.", "typeRef": null}, {"name": "urlRules", "type": "array", "optional": false, "description": "See comments on `net::device_bound_sessions::SessionInclusionRules::url_rules_`.", "typeRef": "Network.DeviceBoundSessionUrlRule"}]);
920
925
  inspectorBackend.registerType("Network.DeviceBoundSession", [{"name": "key", "type": "object", "optional": false, "description": "The site and session ID of the session.", "typeRef": "Network.DeviceBoundSessionKey"}, {"name": "refreshUrl", "type": "string", "optional": false, "description": "See comments on `net::device_bound_sessions::Session::refresh_url_`.", "typeRef": null}, {"name": "inclusionRules", "type": "object", "optional": false, "description": "See comments on `net::device_bound_sessions::Session::inclusion_rules_`.", "typeRef": "Network.DeviceBoundSessionInclusionRules"}, {"name": "cookieCravings", "type": "array", "optional": false, "description": "See comments on `net::device_bound_sessions::Session::cookie_cravings_`.", "typeRef": "Network.DeviceBoundSessionCookieCraving"}, {"name": "expiryDate", "type": "number", "optional": false, "description": "See comments on `net::device_bound_sessions::Session::expiry_date_`.", "typeRef": "Network.TimeSinceEpoch"}, {"name": "cachedChallenge", "type": "string", "optional": true, "description": "See comments on `net::device_bound_sessions::Session::cached_challenge__`.", "typeRef": null}, {"name": "allowedRefreshInitiators", "type": "array", "optional": false, "description": "See comments on `net::device_bound_sessions::Session::allowed_refresh_initiators_`.", "typeRef": "string"}]);
926
+ inspectorBackend.registerType("Network.CreationEventDetails", [{"name": "fetchResult", "type": "string", "optional": false, "description": "The result of the fetch attempt.", "typeRef": "Network.DeviceBoundSessionFetchResult"}, {"name": "newSession", "type": "object", "optional": true, "description": "The session if there was a newly created session. This is populated for all successful creation events.", "typeRef": "Network.DeviceBoundSession"}]);
927
+ inspectorBackend.registerType("Network.RefreshEventDetails", [{"name": "refreshResult", "type": "string", "optional": false, "description": "The result of a refresh.", "typeRef": null}, {"name": "fetchResult", "type": "string", "optional": true, "description": "If there was a fetch attempt, the result of that.", "typeRef": "Network.DeviceBoundSessionFetchResult"}, {"name": "newSession", "type": "object", "optional": true, "description": "The session display if there was a newly created session. This is populated for any refresh event that modifies the session config.", "typeRef": "Network.DeviceBoundSession"}, {"name": "wasFullyProactiveRefresh", "type": "boolean", "optional": false, "description": "See comments on `net::device_bound_sessions::RefreshEventResult::was_fully_proactive_refresh`.", "typeRef": null}]);
928
+ inspectorBackend.registerType("Network.TerminationEventDetails", [{"name": "deletionReason", "type": "string", "optional": false, "description": "The reason for a session being deleted.", "typeRef": null}]);
929
+ inspectorBackend.registerType("Network.ChallengeEventDetails", [{"name": "challengeResult", "type": "string", "optional": false, "description": "The result of a challenge.", "typeRef": null}, {"name": "challenge", "type": "string", "optional": false, "description": "The challenge set.", "typeRef": null}]);
921
930
  inspectorBackend.registerType("Network.LoadNetworkResourcePageResult", [{"name": "success", "type": "boolean", "optional": false, "description": "", "typeRef": null}, {"name": "netError", "type": "number", "optional": true, "description": "Optional values used for error reporting.", "typeRef": null}, {"name": "netErrorName", "type": "string", "optional": true, "description": "", "typeRef": null}, {"name": "httpStatusCode", "type": "number", "optional": true, "description": "", "typeRef": null}, {"name": "stream", "type": "string", "optional": true, "description": "If successful, one of the following two fields holds the result.", "typeRef": "IO.StreamHandle"}, {"name": "headers", "type": "object", "optional": true, "description": "Response headers.", "typeRef": "Network.Headers"}]);
922
931
  inspectorBackend.registerType("Network.LoadNetworkResourceOptions", [{"name": "disableCache", "type": "boolean", "optional": false, "description": "", "typeRef": null}, {"name": "includeCredentials", "type": "boolean", "optional": false, "description": "", "typeRef": null}]);
923
932
 
@@ -505,7 +505,6 @@ export const generatedProperties = [
505
505
  "grid-column-end",
506
506
  "grid-column-start",
507
507
  "grid-lanes-direction",
508
- "grid-lanes-fill",
509
508
  "grid-row-end",
510
509
  "grid-row-start",
511
510
  "grid-template-areas",
@@ -620,6 +619,7 @@ export const generatedProperties = [
620
619
  "padding-right",
621
620
  "padding-top",
622
621
  "page",
622
+ "page-margin-safety",
623
623
  "page-orientation",
624
624
  "paint-order",
625
625
  "pathname",
@@ -2674,13 +2674,13 @@ export const generatedProperties = [
2674
2674
  "longhands": [
2675
2675
  "grid-template-areas",
2676
2676
  "grid-template-columns",
2677
- "grid-lanes-direction",
2678
- "grid-lanes-fill"
2677
+ "grid-lanes-direction"
2679
2678
  ],
2680
2679
  "name": "grid-lanes"
2681
2680
  },
2682
2681
  {
2683
2682
  "keywords": [
2683
+ "normal",
2684
2684
  "row",
2685
2685
  "row-reverse",
2686
2686
  "column",
@@ -2688,20 +2688,6 @@ export const generatedProperties = [
2688
2688
  ],
2689
2689
  "name": "grid-lanes-direction"
2690
2690
  },
2691
- {
2692
- "keywords": [
2693
- "normal",
2694
- "reverse"
2695
- ],
2696
- "name": "grid-lanes-fill"
2697
- },
2698
- {
2699
- "longhands": [
2700
- "grid-lanes-direction",
2701
- "grid-lanes-fill"
2702
- ],
2703
- "name": "grid-lanes-flow"
2704
- },
2705
2691
  {
2706
2692
  "longhands": [
2707
2693
  "grid-row-start",
@@ -3543,6 +3529,14 @@ export const generatedProperties = [
3543
3529
  ],
3544
3530
  "name": "page-break-inside"
3545
3531
  },
3532
+ {
3533
+ "keywords": [
3534
+ "none",
3535
+ "clamp",
3536
+ "add"
3537
+ ],
3538
+ "name": "page-margin-safety"
3539
+ },
3546
3540
  {
3547
3541
  "name": "page-orientation"
3548
3542
  },
@@ -6071,18 +6065,13 @@ export const generatedPropertyValues = {
6071
6065
  },
6072
6066
  "grid-lanes-direction": {
6073
6067
  "values": [
6068
+ "normal",
6074
6069
  "row",
6075
6070
  "row-reverse",
6076
6071
  "column",
6077
6072
  "column-reverse"
6078
6073
  ]
6079
6074
  },
6080
- "grid-lanes-fill": {
6081
- "values": [
6082
- "normal",
6083
- "reverse"
6084
- ]
6085
- },
6086
6075
  "grid-row-end": {
6087
6076
  "values": [
6088
6077
  "auto"
@@ -6503,6 +6492,13 @@ export const generatedPropertyValues = {
6503
6492
  "auto"
6504
6493
  ]
6505
6494
  },
6495
+ "page-margin-safety": {
6496
+ "values": [
6497
+ "none",
6498
+ "clamp",
6499
+ "add"
6500
+ ]
6501
+ },
6506
6502
  "paint-order": {
6507
6503
  "values": [
6508
6504
  "normal",
@@ -447,6 +447,10 @@ export namespace ProtocolMapping {
447
447
  * Triggered when the initial set of device bound sessions is added.
448
448
  */
449
449
  'Network.deviceBoundSessionsAdded': [Protocol.Network.DeviceBoundSessionsAddedEvent];
450
+ /**
451
+ * Triggered when a device bound session event occurs.
452
+ */
453
+ 'Network.deviceBoundSessionEventOccurred': [Protocol.Network.DeviceBoundSessionEventOccurredEvent];
450
454
  /**
451
455
  * Fired when the node should be inspected. This happens after call to `setInspectMode` or when
452
456
  * user manually inspects an element.
@@ -2903,6 +2903,11 @@ declare namespace ProtocolProxyApi {
2903
2903
  */
2904
2904
  deviceBoundSessionsAdded(params: Protocol.Network.DeviceBoundSessionsAddedEvent): void;
2905
2905
 
2906
+ /**
2907
+ * Triggered when a device bound session event occurs.
2908
+ */
2909
+ deviceBoundSessionEventOccurred(params: Protocol.Network.DeviceBoundSessionEventOccurredEvent): void;
2910
+
2906
2911
  }
2907
2912
 
2908
2913
  export interface OverlayApi {
@@ -11483,6 +11483,175 @@ export namespace Network {
11483
11483
  allowedRefreshInitiators: string[];
11484
11484
  }
11485
11485
 
11486
+ /**
11487
+ * A unique identifier for a device bound session event.
11488
+ */
11489
+ export type DeviceBoundSessionEventId = OpaqueIdentifier<string, 'Protocol.Network.DeviceBoundSessionEventId'>;
11490
+
11491
+ /**
11492
+ * A fetch result for a device bound session creation or refresh.
11493
+ */
11494
+ export const enum DeviceBoundSessionFetchResult {
11495
+ Success = 'Success',
11496
+ KeyError = 'KeyError',
11497
+ SigningError = 'SigningError',
11498
+ ServerRequestedTermination = 'ServerRequestedTermination',
11499
+ InvalidSessionId = 'InvalidSessionId',
11500
+ InvalidChallenge = 'InvalidChallenge',
11501
+ TooManyChallenges = 'TooManyChallenges',
11502
+ InvalidFetcherUrl = 'InvalidFetcherUrl',
11503
+ InvalidRefreshUrl = 'InvalidRefreshUrl',
11504
+ TransientHttpError = 'TransientHttpError',
11505
+ ScopeOriginSameSiteMismatch = 'ScopeOriginSameSiteMismatch',
11506
+ RefreshUrlSameSiteMismatch = 'RefreshUrlSameSiteMismatch',
11507
+ MismatchedSessionId = 'MismatchedSessionId',
11508
+ MissingScope = 'MissingScope',
11509
+ NoCredentials = 'NoCredentials',
11510
+ SubdomainRegistrationWellKnownUnavailable = 'SubdomainRegistrationWellKnownUnavailable',
11511
+ SubdomainRegistrationUnauthorized = 'SubdomainRegistrationUnauthorized',
11512
+ SubdomainRegistrationWellKnownMalformed = 'SubdomainRegistrationWellKnownMalformed',
11513
+ SessionProviderWellKnownUnavailable = 'SessionProviderWellKnownUnavailable',
11514
+ RelyingPartyWellKnownUnavailable = 'RelyingPartyWellKnownUnavailable',
11515
+ FederatedKeyThumbprintMismatch = 'FederatedKeyThumbprintMismatch',
11516
+ InvalidFederatedSessionUrl = 'InvalidFederatedSessionUrl',
11517
+ InvalidFederatedKey = 'InvalidFederatedKey',
11518
+ TooManyRelyingOriginLabels = 'TooManyRelyingOriginLabels',
11519
+ BoundCookieSetForbidden = 'BoundCookieSetForbidden',
11520
+ NetError = 'NetError',
11521
+ ProxyError = 'ProxyError',
11522
+ EmptySessionConfig = 'EmptySessionConfig',
11523
+ InvalidCredentialsConfig = 'InvalidCredentialsConfig',
11524
+ InvalidCredentialsType = 'InvalidCredentialsType',
11525
+ InvalidCredentialsEmptyName = 'InvalidCredentialsEmptyName',
11526
+ InvalidCredentialsCookie = 'InvalidCredentialsCookie',
11527
+ PersistentHttpError = 'PersistentHttpError',
11528
+ RegistrationAttemptedChallenge = 'RegistrationAttemptedChallenge',
11529
+ InvalidScopeOrigin = 'InvalidScopeOrigin',
11530
+ ScopeOriginContainsPath = 'ScopeOriginContainsPath',
11531
+ RefreshInitiatorNotString = 'RefreshInitiatorNotString',
11532
+ RefreshInitiatorInvalidHostPattern = 'RefreshInitiatorInvalidHostPattern',
11533
+ InvalidScopeSpecification = 'InvalidScopeSpecification',
11534
+ MissingScopeSpecificationType = 'MissingScopeSpecificationType',
11535
+ EmptyScopeSpecificationDomain = 'EmptyScopeSpecificationDomain',
11536
+ EmptyScopeSpecificationPath = 'EmptyScopeSpecificationPath',
11537
+ InvalidScopeSpecificationType = 'InvalidScopeSpecificationType',
11538
+ InvalidScopeIncludeSite = 'InvalidScopeIncludeSite',
11539
+ MissingScopeIncludeSite = 'MissingScopeIncludeSite',
11540
+ FederatedNotAuthorizedByProvider = 'FederatedNotAuthorizedByProvider',
11541
+ FederatedNotAuthorizedByRelyingParty = 'FederatedNotAuthorizedByRelyingParty',
11542
+ SessionProviderWellKnownMalformed = 'SessionProviderWellKnownMalformed',
11543
+ SessionProviderWellKnownHasProviderOrigin = 'SessionProviderWellKnownHasProviderOrigin',
11544
+ RelyingPartyWellKnownMalformed = 'RelyingPartyWellKnownMalformed',
11545
+ RelyingPartyWellKnownHasRelyingOrigins = 'RelyingPartyWellKnownHasRelyingOrigins',
11546
+ InvalidFederatedSessionProviderSessionMissing = 'InvalidFederatedSessionProviderSessionMissing',
11547
+ InvalidFederatedSessionWrongProviderOrigin = 'InvalidFederatedSessionWrongProviderOrigin',
11548
+ InvalidCredentialsCookieCreationTime = 'InvalidCredentialsCookieCreationTime',
11549
+ InvalidCredentialsCookieName = 'InvalidCredentialsCookieName',
11550
+ InvalidCredentialsCookieParsing = 'InvalidCredentialsCookieParsing',
11551
+ InvalidCredentialsCookieUnpermittedAttribute = 'InvalidCredentialsCookieUnpermittedAttribute',
11552
+ InvalidCredentialsCookieInvalidDomain = 'InvalidCredentialsCookieInvalidDomain',
11553
+ InvalidCredentialsCookiePrefix = 'InvalidCredentialsCookiePrefix',
11554
+ InvalidScopeRulePath = 'InvalidScopeRulePath',
11555
+ InvalidScopeRuleHostPattern = 'InvalidScopeRuleHostPattern',
11556
+ ScopeRuleOriginScopedHostPatternMismatch = 'ScopeRuleOriginScopedHostPatternMismatch',
11557
+ ScopeRuleSiteScopedHostPatternMismatch = 'ScopeRuleSiteScopedHostPatternMismatch',
11558
+ SigningQuotaExceeded = 'SigningQuotaExceeded',
11559
+ InvalidConfigJson = 'InvalidConfigJson',
11560
+ InvalidFederatedSessionProviderFailedToRestoreKey = 'InvalidFederatedSessionProviderFailedToRestoreKey',
11561
+ FailedToUnwrapKey = 'FailedToUnwrapKey',
11562
+ SessionDeletedDuringRefresh = 'SessionDeletedDuringRefresh',
11563
+ }
11564
+
11565
+ /**
11566
+ * Session event details specific to creation.
11567
+ */
11568
+ export interface CreationEventDetails {
11569
+ /**
11570
+ * The result of the fetch attempt.
11571
+ */
11572
+ fetchResult: DeviceBoundSessionFetchResult;
11573
+ /**
11574
+ * The session if there was a newly created session. This is populated for
11575
+ * all successful creation events.
11576
+ */
11577
+ newSession?: DeviceBoundSession;
11578
+ }
11579
+
11580
+ export const enum RefreshEventDetailsRefreshResult {
11581
+ Refreshed = 'Refreshed',
11582
+ InitializedService = 'InitializedService',
11583
+ Unreachable = 'Unreachable',
11584
+ ServerError = 'ServerError',
11585
+ RefreshQuotaExceeded = 'RefreshQuotaExceeded',
11586
+ FatalError = 'FatalError',
11587
+ SigningQuotaExceeded = 'SigningQuotaExceeded',
11588
+ }
11589
+
11590
+ /**
11591
+ * Session event details specific to refresh.
11592
+ */
11593
+ export interface RefreshEventDetails {
11594
+ /**
11595
+ * The result of a refresh.
11596
+ */
11597
+ refreshResult: RefreshEventDetailsRefreshResult;
11598
+ /**
11599
+ * If there was a fetch attempt, the result of that.
11600
+ */
11601
+ fetchResult?: DeviceBoundSessionFetchResult;
11602
+ /**
11603
+ * The session display if there was a newly created session. This is populated
11604
+ * for any refresh event that modifies the session config.
11605
+ */
11606
+ newSession?: DeviceBoundSession;
11607
+ /**
11608
+ * See comments on `net::device_bound_sessions::RefreshEventResult::was_fully_proactive_refresh`.
11609
+ */
11610
+ wasFullyProactiveRefresh: boolean;
11611
+ }
11612
+
11613
+ export const enum TerminationEventDetailsDeletionReason {
11614
+ Expired = 'Expired',
11615
+ FailedToRestoreKey = 'FailedToRestoreKey',
11616
+ FailedToUnwrapKey = 'FailedToUnwrapKey',
11617
+ StoragePartitionCleared = 'StoragePartitionCleared',
11618
+ ClearBrowsingData = 'ClearBrowsingData',
11619
+ ServerRequested = 'ServerRequested',
11620
+ InvalidSessionParams = 'InvalidSessionParams',
11621
+ RefreshFatalError = 'RefreshFatalError',
11622
+ }
11623
+
11624
+ /**
11625
+ * Session event details specific to termination.
11626
+ */
11627
+ export interface TerminationEventDetails {
11628
+ /**
11629
+ * The reason for a session being deleted.
11630
+ */
11631
+ deletionReason: TerminationEventDetailsDeletionReason;
11632
+ }
11633
+
11634
+ export const enum ChallengeEventDetailsChallengeResult {
11635
+ Success = 'Success',
11636
+ NoSessionId = 'NoSessionId',
11637
+ NoSessionMatch = 'NoSessionMatch',
11638
+ CantSetBoundCookie = 'CantSetBoundCookie',
11639
+ }
11640
+
11641
+ /**
11642
+ * Session event details specific to challenges.
11643
+ */
11644
+ export interface ChallengeEventDetails {
11645
+ /**
11646
+ * The result of a challenge.
11647
+ */
11648
+ challengeResult: ChallengeEventDetailsChallengeResult;
11649
+ /**
11650
+ * The challenge set.
11651
+ */
11652
+ challenge: string;
11653
+ }
11654
+
11486
11655
  /**
11487
11656
  * An object providing the result of a network resource load.
11488
11657
  */
@@ -12887,6 +13056,36 @@ export namespace Network {
12887
13056
  */
12888
13057
  sessions: DeviceBoundSession[];
12889
13058
  }
13059
+
13060
+ /**
13061
+ * Triggered when a device bound session event occurs.
13062
+ */
13063
+ export interface DeviceBoundSessionEventOccurredEvent {
13064
+ /**
13065
+ * A unique identifier for this session event.
13066
+ */
13067
+ eventId: DeviceBoundSessionEventId;
13068
+ /**
13069
+ * The site this session event is associated with.
13070
+ */
13071
+ site: string;
13072
+ /**
13073
+ * Whether this event was considered successful.
13074
+ */
13075
+ succeeded: boolean;
13076
+ /**
13077
+ * The session ID this event is associated with. May not be populated for
13078
+ * failed events.
13079
+ */
13080
+ sessionId?: string;
13081
+ /**
13082
+ * The below are the different session event type details. Exactly one is populated.
13083
+ */
13084
+ creationEventDetails?: CreationEventDetails;
13085
+ refreshEventDetails?: RefreshEventDetails;
13086
+ terminationEventDetails?: TerminationEventDetails;
13087
+ challengeEventDetails?: ChallengeEventDetails;
13088
+ }
12890
13089
  }
12891
13090
 
12892
13091
  /**