diff --git a/README.md b/README.md
index 06d07f46e8a0c..4059d2441801e 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# 🎭 Playwright
-[](https://www.npmjs.com/package/playwright) [](https://www.chromium.org/Home) [](https://www.mozilla.org/en-US/firefox/new/) [](https://webkit.org/) [](https://aka.ms/playwright/discord)
+[](https://www.npmjs.com/package/playwright) [](https://www.chromium.org/Home) [](https://www.mozilla.org/en-US/firefox/new/) [](https://webkit.org/) [](https://aka.ms/playwright/discord)
## [Documentation](https://playwright.dev) | [API reference](https://playwright.dev/docs/api/class-playwright)
@@ -8,7 +8,7 @@ Playwright is a framework for Web Testing and Automation. It allows testing [Chr
| | Linux | macOS | Windows |
| :--- | :---: | :---: | :---: |
-| Chromium1 145.0.7632.26 | :white_check_mark: | :white_check_mark: | :white_check_mark: |
+| Chromium1 146.0.7680.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| WebKit 26.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| Firefox 146.0.1 | :white_check_mark: | :white_check_mark: | :white_check_mark: |
diff --git a/docs/src/release-notes-csharp.md b/docs/src/release-notes-csharp.md
index 23a4750116e96..8b91c0a67d8ba 100644
--- a/docs/src/release-notes-csharp.md
+++ b/docs/src/release-notes-csharp.md
@@ -4,6 +4,8 @@ title: "Release notes"
toc_max_heading_level: 2
---
+import LiteYouTube from '@site/src/components/LiteYouTube';
+
## Version 1.58
### UI Mode and Trace Viewer Improvements
@@ -1264,9 +1266,10 @@ This version was also tested against the following stable channels:
## Version 1.24
-
-
-
+
### 🐂 Debian 11 Bullseye Support
diff --git a/docs/src/release-notes-java.md b/docs/src/release-notes-java.md
index f907564084806..62d9a84369be9 100644
--- a/docs/src/release-notes-java.md
+++ b/docs/src/release-notes-java.md
@@ -4,6 +4,8 @@ title: "Release notes"
toc_max_heading_level: 2
---
+import LiteYouTube from '@site/src/components/LiteYouTube';
+
## Version 1.58
### UI Mode and Trace Viewer Improvements
@@ -1297,9 +1299,10 @@ This version was also tested against the following stable channels:
## Version 1.24
-
-
-
+
### 🐂 Debian 11 Bullseye Support
diff --git a/docs/src/release-notes-python.md b/docs/src/release-notes-python.md
index da3b69fa866a0..806d7621eafd4 100644
--- a/docs/src/release-notes-python.md
+++ b/docs/src/release-notes-python.md
@@ -4,6 +4,8 @@ title: "Release notes"
toc_max_heading_level: 2
---
+import LiteYouTube from '@site/src/components/LiteYouTube';
+
## Version 1.58
### UI Mode and Trace Viewer Improvements
@@ -1208,9 +1210,10 @@ This version was also tested against the following stable channels:
## Version 1.24
-
-
-
+
### 🐂 Debian 11 Bullseye Support
diff --git a/package-lock.json b/package-lock.json
index d152d379aa19a..4980057315871 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6581,9 +6581,9 @@
}
},
"node_modules/qs": {
- "version": "6.14.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz",
- "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==",
+ "version": "6.14.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz",
+ "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
diff --git a/packages/devtools/src/devtools.css b/packages/devtools/src/devtools.css
index ca5346758a1aa..6e88fe1674df1 100644
--- a/packages/devtools/src/devtools.css
+++ b/packages/devtools/src/devtools.css
@@ -255,6 +255,14 @@
min-height: 0;
}
+.viewport-main {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ position: relative;
+ min-width: 0;
+}
+
.screen {
position: relative;
outline: none;
@@ -315,3 +323,58 @@
.capture-hint.visible {
opacity: 1;
}
+
+.capture-hint code {
+ color: var(--accent);
+ font-family: 'SF Mono', 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
+ margin-left: 4px;
+}
+
+.inspector-panel {
+ width: 50%;
+ min-width: 300px;
+ max-width: calc(100% - 320px);
+ display: flex;
+ flex-direction: column;
+ border-left: 1px solid var(--bg-elevated);
+ flex: none;
+ overflow: hidden;
+ position: relative;
+}
+
+.inspector-grip {
+ position: absolute;
+ left: -4px;
+ top: 0;
+ bottom: 0;
+ width: 8px;
+ cursor: col-resize;
+ z-index: 10;
+ touch-action: none;
+}
+
+.inspector-grip::before {
+ content: '';
+ position: absolute;
+ left: 3px;
+ top: 0;
+ bottom: 0;
+ width: 1px;
+ background: var(--bg-elevated);
+}
+
+.inspector-grip:hover::before {
+ background: var(--accent);
+}
+
+.inspector-frame {
+ width: 100%;
+ height: 100%;
+ border: none;
+ background: var(--bg);
+}
+
+.nav-btn.active-toggle {
+ color: var(--accent);
+ background: rgba(138, 180, 248, 0.12);
+}
diff --git a/packages/devtools/src/devtools.tsx b/packages/devtools/src/devtools.tsx
index f4f8719400e9a..5d886e16f3f05 100644
--- a/packages/devtools/src/devtools.tsx
+++ b/packages/devtools/src/devtools.tsx
@@ -18,6 +18,7 @@ import React from 'react';
import './devtools.css';
import { navigate } from './index';
import { DevToolsClient } from './devtoolsClient';
+import { asLocator } from '@isomorphic/locatorGenerators';
import type { DevToolsClientChannel } from './devtoolsClient';
import type { Tab } from './devtoolsChannel';
@@ -41,21 +42,32 @@ export const DevTools: React.FC<{ wsUrl?: string }> = ({ wsUrl }) => {
const [frameSrc, setFrameSrc] = React.useState('');
const [captured, setCaptured] = React.useState(false);
const [hintVisible, setHintVisible] = React.useState(false);
+ const [showInspector, setShowInspector] = React.useState(false);
+ const [picking, setPicking] = React.useState(false);
+ const [toast, setToast] = React.useState(null);
const channelRef = React.useRef(null);
const displayRef = React.useRef(null);
const screenRef = React.useRef(null);
+ const viewportWrapperRef = React.useRef(null);
const omniboxRef = React.useRef(null);
const viewportSizeRef = React.useRef<{ width: number; height: number }>({ width: 0, height: 0 });
const resizedRef = React.useRef(false);
const capturedRef = React.useRef(false);
const moveThrottleRef = React.useRef(0);
+ const pickingRef = React.useRef(false);
+ const toastTimerRef = React.useRef>(0 as any);
+ const [inspectorWidth, setInspectorWidth] = React.useState();
// Keep capturedRef in sync with state.
React.useEffect(() => {
capturedRef.current = captured;
}, [captured]);
+ React.useEffect(() => {
+ pickingRef.current = picking;
+ }, [picking]);
+
React.useEffect(() => {
if (!wsUrl)
return;
@@ -69,6 +81,8 @@ export const DevTools: React.FC<{ wsUrl?: string }> = ({ wsUrl }) => {
const selected = params.tabs.find(t => t.selected);
if (selected)
setUrl(selected.url);
+ if (!selected?.inspectorUrl)
+ setShowInspector(false);
});
channel.on('frame', params => {
@@ -80,9 +94,21 @@ export const DevTools: React.FC<{ wsUrl?: string }> = ({ wsUrl }) => {
resizeToFit();
});
+ channel.on('elementPicked', params => {
+ const locator = asLocator('javascript', params.selector);
+ navigator.clipboard?.writeText(locator).catch(() => {});
+ setPicking(false);
+ setToast(locator);
+ clearTimeout(toastTimerRef.current);
+ toastTimerRef.current = setTimeout(() => setToast(null), 3000);
+ });
+
channel.onclose = () => setStatus({ text: 'Disconnected', cls: 'error' });
- return () => channel.close();
+ return () => {
+ clearTimeout(toastTimerRef.current);
+ channel.close();
+ };
}, [wsUrl]);
function resizeToFit() {
@@ -132,28 +158,33 @@ export const DevTools: React.FC<{ wsUrl?: string }> = ({ wsUrl }) => {
};
}
+ const isForwardingInput = () => showInspector || capturedRef.current;
+
+ function sendMouseEvent(method: 'mousedown' | 'mouseup', e: React.MouseEvent) {
+ const { x, y } = imgCoords(e);
+ channelRef.current?.[method]({ x, y, button: BUTTONS[e.button] || 'left' });
+ }
+
function onScreenMouseDown(e: React.MouseEvent) {
e.preventDefault();
screenRef.current?.focus();
- if (!capturedRef.current) {
+ if (!pickingRef.current && !isForwardingInput()) {
setCaptured(true);
setHintVisible(false);
return;
}
- const { x, y } = imgCoords(e);
- channelRef.current?.mousedown({ x, y, button: BUTTONS[e.button] || 'left' });
+ sendMouseEvent('mousedown', e);
}
function onScreenMouseUp(e: React.MouseEvent) {
- if (!capturedRef.current)
+ if (!pickingRef.current && !isForwardingInput())
return;
e.preventDefault();
- const { x, y } = imgCoords(e);
- channelRef.current?.mouseup({ x, y, button: BUTTONS[e.button] || 'left' });
+ sendMouseEvent('mouseup', e);
}
function onScreenMouseMove(e: React.MouseEvent) {
- if (!capturedRef.current)
+ if (!pickingRef.current && !isForwardingInput())
return;
const now = Date.now();
if (now - moveThrottleRef.current < 32)
@@ -164,14 +195,20 @@ export const DevTools: React.FC<{ wsUrl?: string }> = ({ wsUrl }) => {
}
function onScreenWheel(e: React.WheelEvent) {
- if (!capturedRef.current)
+ if (!isForwardingInput())
return;
e.preventDefault();
channelRef.current?.wheel({ deltaX: e.deltaX, deltaY: e.deltaY });
}
function onScreenKeyDown(e: React.KeyboardEvent) {
- if (!capturedRef.current)
+ if (pickingRef.current && e.key === 'Escape') {
+ e.preventDefault();
+ channelRef.current?.cancelPickLocator();
+ setPicking(false);
+ return;
+ }
+ if (!isForwardingInput())
return;
e.preventDefault();
if (e.key === 'Escape' && !(e.metaKey || e.ctrlKey)) {
@@ -182,15 +219,46 @@ export const DevTools: React.FC<{ wsUrl?: string }> = ({ wsUrl }) => {
}
function onScreenKeyUp(e: React.KeyboardEvent) {
- if (!capturedRef.current)
+ if (!isForwardingInput())
return;
e.preventDefault();
channelRef.current?.keyup({ key: e.key });
}
function onScreenBlur() {
- if (capturedRef.current)
- setCaptured(false);
+ setCaptured(false);
+ }
+
+ function onInspectorGripPointerDown(e: React.PointerEvent) {
+ if (e.button !== 0)
+ return;
+ const wrapperRect = viewportWrapperRef.current?.getBoundingClientRect();
+ if (!wrapperRect)
+ return;
+ e.preventDefault();
+ const grip = e.currentTarget;
+ grip.setPointerCapture(e.pointerId);
+ const minWidth = 300;
+ const maxWidth = Math.max(minWidth, wrapperRect.width - 320);
+ const startX = e.clientX;
+ const startWidth = inspectorWidth ?? wrapperRect.width * 0.5;
+ const onPointerMove = (event: PointerEvent) => {
+ const delta = startX - event.clientX;
+ const nextWidth = Math.max(minWidth, Math.min(maxWidth, startWidth + delta));
+ setInspectorWidth(nextWidth);
+ };
+ const onPointerUp = () => {
+ grip.removeEventListener('pointermove', onPointerMove);
+ grip.removeEventListener('pointerup', onPointerUp);
+ grip.removeEventListener('lostpointercapture', onPointerUp);
+ document.body.style.cursor = '';
+ document.body.style.userSelect = '';
+ };
+ document.body.style.cursor = 'col-resize';
+ document.body.style.userSelect = 'none';
+ grip.addEventListener('pointermove', onPointerMove);
+ grip.addEventListener('pointerup', onPointerUp);
+ grip.addEventListener('lostpointercapture', onPointerUp);
}
function onOmniboxKeyDown(e: React.KeyboardEvent) {
@@ -204,7 +272,8 @@ export const DevTools: React.FC<{ wsUrl?: string }> = ({ wsUrl }) => {
}
}
- const hasPages = tabs.some(t => t.selected);
+ const selectedTab = tabs.find(t => t.selected);
+ const hasPages = !!selectedTab;
return (
{/* Tab bar */}
@@ -282,33 +351,79 @@ export const DevTools: React.FC<{ wsUrl?: string }> = ({ wsUrl }) => {
onKeyDown={onOmniboxKeyDown}
onFocus={e => e.target.select()}
/>
+
{
+ if (picking) {
+ channelRef.current?.cancelPickLocator();
+ setPicking(false);
+ } else {
+ channelRef.current?.pickLocator();
+ setPicking(true);
+ }
+ }}
+ >
+
+
+
+
+ {selectedTab?.inspectorUrl && (
+
setShowInspector(!showInspector)}
+ >
+
+
+
+
+
+ )}
{/* Viewport */}
-
-
e.preventDefault()}
- onMouseEnter={() => {
- if (!capturedRef.current)
- setHintVisible(true);
- }}
- onMouseLeave={() => setHintVisible(false)}
- >
-
-
Click to interact · Esc to release
+
+
+
e.preventDefault()}
+ onMouseEnter={() => {
+ if (!showInspector && !capturedRef.current)
+ setHintVisible(true);
+ }}
+ onMouseLeave={() => setHintVisible(false)}
+ >
+
+ {toast
+ ?
Copied: {toast}
+ : picking
+ ?
Click an element to pick its locator
+ : !showInspector &&
Click to interact · Esc to release
+ }
+
+
No tabs open
-
No tabs open
+ {showInspector && selectedTab?.inspectorUrl && (
+
+ )}
);
};
diff --git a/packages/devtools/src/devtoolsChannel.ts b/packages/devtools/src/devtoolsChannel.ts
index bc940534ebc9c..b2b59156e5de7 100644
--- a/packages/devtools/src/devtoolsChannel.ts
+++ b/packages/devtools/src/devtoolsChannel.ts
@@ -14,11 +14,12 @@
* limitations under the License.
*/
-export type Tab = { pageId: string; title: string; url: string; selected: boolean };
+export type Tab = { pageId: string; title: string; url: string; selected: boolean; inspectorUrl?: string };
export type DevToolsChannelEvents = {
frame: { data: string; viewportWidth: number; viewportHeight: number };
tabs: { tabs: Tab[] };
+ elementPicked: { selector: string };
};
export interface DevToolsChannel {
@@ -36,6 +37,8 @@ export interface DevToolsChannel {
wheel(params: { deltaX: number; deltaY: number }): Promise
;
keydown(params: { key: string }): Promise;
keyup(params: { key: string }): Promise;
+ pickLocator(): Promise;
+ cancelPickLocator(): Promise;
on(event: K, listener: (params: DevToolsChannelEvents[K]) => void): void;
off(event: K, listener: (params: DevToolsChannelEvents[K]) => void): void;
diff --git a/packages/playwright-core/browsers.json b/packages/playwright-core/browsers.json
index b5f41e1f13d87..aa89f9a6ecd84 100644
--- a/packages/playwright-core/browsers.json
+++ b/packages/playwright-core/browsers.json
@@ -3,16 +3,16 @@
"browsers": [
{
"name": "chromium",
- "revision": "1210",
+ "revision": "1212",
"installByDefault": true,
- "browserVersion": "145.0.7632.26",
+ "browserVersion": "146.0.7680.0",
"title": "Chrome for Testing"
},
{
"name": "chromium-headless-shell",
- "revision": "1210",
+ "revision": "1212",
"installByDefault": true,
- "browserVersion": "145.0.7632.26",
+ "browserVersion": "146.0.7680.0",
"title": "Chrome Headless Shell"
},
{
diff --git a/packages/playwright-core/src/server/DEPS.list b/packages/playwright-core/src/server/DEPS.list
index 85e6f0a420168..011d1a4c3d58c 100644
--- a/packages/playwright-core/src/server/DEPS.list
+++ b/packages/playwright-core/src/server/DEPS.list
@@ -14,6 +14,9 @@
./trace/recorder/tracing.ts
./utils/
+[devtoolsController.ts]
+./chromium/
+
[playwright.ts]
./android/
./bidi/
diff --git a/packages/playwright-core/src/server/bidi/bidiPage.ts b/packages/playwright-core/src/server/bidi/bidiPage.ts
index 509d0e7b2cf37..990c41fc2e1c7 100644
--- a/packages/playwright-core/src/server/bidi/bidiPage.ts
+++ b/packages/playwright-core/src/server/bidi/bidiPage.ts
@@ -53,6 +53,7 @@ export class BidiPage implements PageDelegate {
readonly _networkManager: BidiNetworkManager;
private readonly _pdf: BidiPDF;
private _initScriptIds = new Map();
+ private readonly _fragmentNavigations = new Set();
constructor(browserContext: BidiBrowserContext, bidiSession: BidiSession, opener: BidiPage | null) {
this._session = bidiSession;
@@ -220,6 +221,8 @@ export class BidiPage implements PageDelegate {
}
private _onFragmentNavigated(params: bidi.BrowsingContext.NavigationInfo) {
+ if (params.navigation)
+ this._fragmentNavigations.add(params.navigation);
this._page.frameManager.frameCommittedSameDocumentNavigation(params.context, params.url);
}
@@ -310,6 +313,10 @@ export class BidiPage implements PageDelegate {
context: frame._id,
url,
});
+ if (navigation && this._fragmentNavigations.has(navigation)) {
+ this._fragmentNavigations.delete(navigation);
+ return {};
+ }
return { newDocumentId: navigation || undefined };
}
diff --git a/packages/playwright-core/src/server/chromium/crBrowser.ts b/packages/playwright-core/src/server/chromium/crBrowser.ts
index af659066a15f8..d4b3fa68928b0 100644
--- a/packages/playwright-core/src/server/chromium/crBrowser.ts
+++ b/packages/playwright-core/src/server/chromium/crBrowser.ts
@@ -50,6 +50,7 @@ export class CRBrowser extends Browser {
_devtools?: CRDevTools;
private _version = '';
private _majorVersion = 0;
+ _revision = '';
private _tracingRecording = false;
private _tracingClient: CRSession | undefined;
@@ -68,6 +69,7 @@ export class CRBrowser extends Browser {
await (options as any).__testHookOnConnectToBrowser();
const version = await session.send('Browser.getVersion');
+ browser._revision = version.revision;
browser._version = version.product.substring(version.product.indexOf('/') + 1);
try {
browser._majorVersion = +browser._version.split('.')[0];
diff --git a/packages/playwright-core/src/server/chromium/protocol.d.ts b/packages/playwright-core/src/server/chromium/protocol.d.ts
index 265faf3fcc13f..c87f3556c207c 100644
--- a/packages/playwright-core/src/server/chromium/protocol.d.ts
+++ b/packages/playwright-core/src/server/chromium/protocol.d.ts
@@ -695,7 +695,7 @@ percentage [0 - 100] for scroll driven animations
export interface AffectedFrame {
frameId: Page.FrameId;
}
- export type CookieExclusionReason = "ExcludeSameSiteUnspecifiedTreatedAsLax"|"ExcludeSameSiteNoneInsecure"|"ExcludeSameSiteLax"|"ExcludeSameSiteStrict"|"ExcludeInvalidSameParty"|"ExcludeSamePartyCrossPartyContext"|"ExcludeDomainNonASCII"|"ExcludeThirdPartyCookieBlockedInFirstPartySet"|"ExcludeThirdPartyPhaseout"|"ExcludePortMismatch"|"ExcludeSchemeMismatch";
+ export type CookieExclusionReason = "ExcludeSameSiteUnspecifiedTreatedAsLax"|"ExcludeSameSiteNoneInsecure"|"ExcludeSameSiteLax"|"ExcludeSameSiteStrict"|"ExcludeDomainNonASCII"|"ExcludeThirdPartyCookieBlockedInFirstPartySet"|"ExcludeThirdPartyPhaseout"|"ExcludePortMismatch"|"ExcludeSchemeMismatch";
export type CookieWarningReason = "WarnSameSiteUnspecifiedCrossSiteContext"|"WarnSameSiteNoneInsecure"|"WarnSameSiteUnspecifiedLaxAllowUnsafe"|"WarnSameSiteStrictLaxDowngradeStrict"|"WarnSameSiteStrictCrossDowngradeStrict"|"WarnSameSiteStrictCrossDowngradeLax"|"WarnSameSiteLaxCrossDowngradeStrict"|"WarnSameSiteLaxCrossDowngradeLax"|"WarnAttributeValueExceedsMaxSize"|"WarnDomainNonASCII"|"WarnThirdPartyPhaseout"|"WarnCrossSiteRedirectDowngradeChangesInclusion"|"WarnDeprecationTrialMetadata"|"WarnThirdPartyCookieHeuristic";
export type CookieOperation = "SetCookie"|"ReadCookie";
/**
@@ -863,6 +863,7 @@ CORS RFC1918 enforcement.
export type SharedDictionaryError = "UseErrorCrossOriginNoCorsRequest"|"UseErrorDictionaryLoadFailure"|"UseErrorMatchingDictionaryNotUsed"|"UseErrorUnexpectedContentDictionaryHeader"|"WriteErrorCossOriginNoCorsRequest"|"WriteErrorDisallowedBySettings"|"WriteErrorExpiredResponse"|"WriteErrorFeatureDisabled"|"WriteErrorInsufficientResources"|"WriteErrorInvalidMatchField"|"WriteErrorInvalidStructuredHeader"|"WriteErrorInvalidTTLField"|"WriteErrorNavigationRequest"|"WriteErrorNoMatchField"|"WriteErrorNonIntegerTTLField"|"WriteErrorNonListMatchDestField"|"WriteErrorNonSecureContext"|"WriteErrorNonStringIdField"|"WriteErrorNonStringInMatchDestList"|"WriteErrorNonStringMatchField"|"WriteErrorNonTokenTypeField"|"WriteErrorRequestAborted"|"WriteErrorShuttingDown"|"WriteErrorTooLongIdField"|"WriteErrorUnsupportedType";
export type SRIMessageSignatureError = "MissingSignatureHeader"|"MissingSignatureInputHeader"|"InvalidSignatureHeader"|"InvalidSignatureInputHeader"|"SignatureHeaderValueIsNotByteSequence"|"SignatureHeaderValueIsParameterized"|"SignatureHeaderValueIsIncorrectLength"|"SignatureInputHeaderMissingLabel"|"SignatureInputHeaderValueNotInnerList"|"SignatureInputHeaderValueMissingComponents"|"SignatureInputHeaderInvalidComponentType"|"SignatureInputHeaderInvalidComponentName"|"SignatureInputHeaderInvalidHeaderComponentParameter"|"SignatureInputHeaderInvalidDerivedComponentParameter"|"SignatureInputHeaderKeyIdLength"|"SignatureInputHeaderInvalidParameter"|"SignatureInputHeaderMissingRequiredParameters"|"ValidationFailedSignatureExpired"|"ValidationFailedInvalidLength"|"ValidationFailedSignatureMismatch"|"ValidationFailedIntegrityMismatch";
export type UnencodedDigestError = "MalformedDictionary"|"UnknownAlgorithm"|"IncorrectDigestType"|"IncorrectDigestLength";
+ export type ConnectionAllowlistError = "InvalidHeader"|"MoreThanOneList"|"ItemNotInnerList"|"InvalidAllowlistItemType"|"ReportingEndpointNotToken"|"InvalidUrlPattern";
/**
* Details for issues around "Attribution Reporting API" usage.
Explainer: https://github.com/WICG/attribution-reporting-api
@@ -906,6 +907,10 @@ instead of "limited-quirks".
error: UnencodedDigestError;
request: AffectedRequest;
}
+ export interface ConnectionAllowlistIssueDetails {
+ error: ConnectionAllowlistError;
+ request: AffectedRequest;
+ }
export type GenericIssueErrorType = "FormLabelForNameError"|"FormDuplicateIdForInputError"|"FormInputWithNoLabelError"|"FormAutocompleteAttributeEmptyError"|"FormEmptyIdAndNameAttributesForInputError"|"FormAriaLabelledByToNonExistingIdError"|"FormInputAssignedAutocompleteValueToIdOrNameAttributeError"|"FormLabelHasNeitherForNorNestedInputError"|"FormLabelForMatchesNonExistingIdError"|"FormInputHasWrongButWellIntendedAutocompleteValueError"|"ResponseWasBlockedByORB"|"NavigationEntryMarkedSkippable"|"AutofillAndManualTextPolicyControlledFeaturesInfo"|"AutofillPolicyControlledFeatureInfo"|"ManualTextPolicyControlledFeatureInfo";
/**
* Depending on the concrete errorType, different properties are set.
@@ -1108,7 +1113,7 @@ Used for messages that reference a specific permission name
optional fields in InspectorIssueDetails to convey more specific
information about the kind of issue.
*/
- export type InspectorIssueCode = "CookieIssue"|"MixedContentIssue"|"BlockedByResponseIssue"|"HeavyAdIssue"|"ContentSecurityPolicyIssue"|"SharedArrayBufferIssue"|"LowTextContrastIssue"|"CorsIssue"|"AttributionReportingIssue"|"QuirksModeIssue"|"PartitioningBlobURLIssue"|"NavigatorUserAgentIssue"|"GenericIssue"|"DeprecationIssue"|"ClientHintIssue"|"FederatedAuthRequestIssue"|"BounceTrackingIssue"|"CookieDeprecationMetadataIssue"|"StylesheetLoadingIssue"|"FederatedAuthUserInfoRequestIssue"|"PropertyRuleIssue"|"SharedDictionaryIssue"|"ElementAccessibilityIssue"|"SRIMessageSignatureIssue"|"UnencodedDigestIssue"|"UserReidentificationIssue"|"PermissionElementIssue";
+ export type InspectorIssueCode = "CookieIssue"|"MixedContentIssue"|"BlockedByResponseIssue"|"HeavyAdIssue"|"ContentSecurityPolicyIssue"|"SharedArrayBufferIssue"|"LowTextContrastIssue"|"CorsIssue"|"AttributionReportingIssue"|"QuirksModeIssue"|"PartitioningBlobURLIssue"|"NavigatorUserAgentIssue"|"GenericIssue"|"DeprecationIssue"|"ClientHintIssue"|"FederatedAuthRequestIssue"|"BounceTrackingIssue"|"CookieDeprecationMetadataIssue"|"StylesheetLoadingIssue"|"FederatedAuthUserInfoRequestIssue"|"PropertyRuleIssue"|"SharedDictionaryIssue"|"ElementAccessibilityIssue"|"SRIMessageSignatureIssue"|"UnencodedDigestIssue"|"ConnectionAllowlistIssue"|"UserReidentificationIssue"|"PermissionElementIssue";
/**
* This struct holds a list of optional fields with additional information
specific to the kind of issue. When adding a new issue code, please also
@@ -1140,6 +1145,7 @@ add a new optional field to this type.
elementAccessibilityIssueDetails?: ElementAccessibilityIssueDetails;
sriMessageSignatureIssueDetails?: SRIMessageSignatureIssueDetails;
unencodedDigestIssueDetails?: UnencodedDigestIssueDetails;
+ connectionAllowlistIssueDetails?: ConnectionAllowlistIssueDetails;
userReidentificationIssueDetails?: UserReidentificationIssueDetails;
permissionElementIssueDetails?: PermissionElementIssueDetails;
}
@@ -3446,6 +3452,8 @@ they were property's declaration. If a value cannot be parsed according
to the provided property syntax, the value is parsed using combined
syntax as if null `propertyName` was provided. If the value cannot be
resolved even then, return the provided value without any changes.
+Note: this function currently does not resolve CSS random() function,
+it returns unmodified random() function parts.`
*/
export type resolveValuesParameters = {
/**
@@ -7479,6 +7487,23 @@ reported through Debugger domain, similarly to regular breakpoints being hit.
export type StorageArea = "session"|"local"|"sync"|"managed";
+ /**
+ * Runs an extension default action.
+Available if the client is connected using the --remote-debugging-pipe
+flag and the --enable-unsafe-extension-debugging flag is set.
+ */
+ export type triggerActionParameters = {
+ /**
+ * Extension id.
+ */
+ id: string;
+ /**
+ * A tab target ID to trigger the default extension action on.
+ */
+ targetId: string;
+ }
+ export type triggerActionReturnValue = {
+ }
/**
* Installs an unpacked extension from the filesystem similar to
--load-extension CLI flags. Returns extension ID once the extension
@@ -7491,6 +7516,10 @@ flag is set.
* Absolute file path.
*/
path: string;
+ /**
+ * Enable the extension in incognito
+ */
+ enableInIncognito?: boolean;
}
export type loadUnpackedReturnValue = {
/**
@@ -10274,7 +10303,7 @@ applicable or not known.
/**
* The reason why request was blocked.
*/
- export type CorsError = "DisallowedByMode"|"InvalidResponse"|"WildcardOriginNotAllowed"|"MissingAllowOriginHeader"|"MultipleAllowOriginValues"|"InvalidAllowOriginValue"|"AllowOriginMismatch"|"InvalidAllowCredentials"|"CorsDisabledScheme"|"PreflightInvalidStatus"|"PreflightDisallowedRedirect"|"PreflightWildcardOriginNotAllowed"|"PreflightMissingAllowOriginHeader"|"PreflightMultipleAllowOriginValues"|"PreflightInvalidAllowOriginValue"|"PreflightAllowOriginMismatch"|"PreflightInvalidAllowCredentials"|"PreflightMissingAllowExternal"|"PreflightInvalidAllowExternal"|"PreflightMissingAllowPrivateNetwork"|"PreflightInvalidAllowPrivateNetwork"|"InvalidAllowMethodsPreflightResponse"|"InvalidAllowHeadersPreflightResponse"|"MethodDisallowedByPreflightResponse"|"HeaderDisallowedByPreflightResponse"|"RedirectContainsCredentials"|"InsecurePrivateNetwork"|"InvalidPrivateNetworkAccess"|"UnexpectedPrivateNetworkAccess"|"NoCorsRedirectModeNotFollow"|"PreflightMissingPrivateNetworkAccessId"|"PreflightMissingPrivateNetworkAccessName"|"PrivateNetworkAccessPermissionUnavailable"|"PrivateNetworkAccessPermissionDenied"|"LocalNetworkAccessPermissionDenied";
+ export type CorsError = "DisallowedByMode"|"InvalidResponse"|"WildcardOriginNotAllowed"|"MissingAllowOriginHeader"|"MultipleAllowOriginValues"|"InvalidAllowOriginValue"|"AllowOriginMismatch"|"InvalidAllowCredentials"|"CorsDisabledScheme"|"PreflightInvalidStatus"|"PreflightDisallowedRedirect"|"PreflightWildcardOriginNotAllowed"|"PreflightMissingAllowOriginHeader"|"PreflightMultipleAllowOriginValues"|"PreflightInvalidAllowOriginValue"|"PreflightAllowOriginMismatch"|"PreflightInvalidAllowCredentials"|"PreflightMissingAllowExternal"|"PreflightInvalidAllowExternal"|"InvalidAllowMethodsPreflightResponse"|"InvalidAllowHeadersPreflightResponse"|"MethodDisallowedByPreflightResponse"|"HeaderDisallowedByPreflightResponse"|"RedirectContainsCredentials"|"InsecureLocalNetwork"|"InvalidLocalNetworkAccess"|"NoCorsRedirectModeNotFollow"|"LocalNetworkAccessPermissionDenied";
export interface CorsErrorStatus {
corsError: CorsError;
failedParameter: string;
@@ -10618,10 +10647,6 @@ JSON (±Inf).
* Cookie Priority
*/
priority: CookiePriority;
- /**
- * True if cookie is SameParty.
- */
- sameParty: boolean;
/**
* Cookie source scheme type.
*/
@@ -10644,11 +10669,11 @@ This is a temporary ability and it will be removed in the future.
/**
* Types of reasons why a cookie may not be stored from a response.
*/
- export type SetCookieBlockedReason = "SecureOnly"|"SameSiteStrict"|"SameSiteLax"|"SameSiteUnspecifiedTreatedAsLax"|"SameSiteNoneInsecure"|"UserPreferences"|"ThirdPartyPhaseout"|"ThirdPartyBlockedInFirstPartySet"|"SyntaxError"|"SchemeNotSupported"|"OverwriteSecure"|"InvalidDomain"|"InvalidPrefix"|"UnknownError"|"SchemefulSameSiteStrict"|"SchemefulSameSiteLax"|"SchemefulSameSiteUnspecifiedTreatedAsLax"|"SamePartyFromCrossPartyContext"|"SamePartyConflictsWithOtherAttributes"|"NameValuePairExceedsMaxSize"|"DisallowedCharacter"|"NoCookieContent";
+ export type SetCookieBlockedReason = "SecureOnly"|"SameSiteStrict"|"SameSiteLax"|"SameSiteUnspecifiedTreatedAsLax"|"SameSiteNoneInsecure"|"UserPreferences"|"ThirdPartyPhaseout"|"ThirdPartyBlockedInFirstPartySet"|"SyntaxError"|"SchemeNotSupported"|"OverwriteSecure"|"InvalidDomain"|"InvalidPrefix"|"UnknownError"|"SchemefulSameSiteStrict"|"SchemefulSameSiteLax"|"SchemefulSameSiteUnspecifiedTreatedAsLax"|"NameValuePairExceedsMaxSize"|"DisallowedCharacter"|"NoCookieContent";
/**
* Types of reasons why a cookie may not be sent with a request.
*/
- export type CookieBlockedReason = "SecureOnly"|"NotOnPath"|"DomainMismatch"|"SameSiteStrict"|"SameSiteLax"|"SameSiteUnspecifiedTreatedAsLax"|"SameSiteNoneInsecure"|"UserPreferences"|"ThirdPartyPhaseout"|"ThirdPartyBlockedInFirstPartySet"|"UnknownError"|"SchemefulSameSiteStrict"|"SchemefulSameSiteLax"|"SchemefulSameSiteUnspecifiedTreatedAsLax"|"SamePartyFromCrossPartyContext"|"NameValuePairExceedsMaxSize"|"PortMismatch"|"SchemeMismatch"|"AnonymousContext";
+ export type CookieBlockedReason = "SecureOnly"|"NotOnPath"|"DomainMismatch"|"SameSiteStrict"|"SameSiteLax"|"SameSiteUnspecifiedTreatedAsLax"|"SameSiteNoneInsecure"|"UserPreferences"|"ThirdPartyPhaseout"|"ThirdPartyBlockedInFirstPartySet"|"UnknownError"|"SchemefulSameSiteStrict"|"SchemefulSameSiteLax"|"SchemefulSameSiteUnspecifiedTreatedAsLax"|"NameValuePairExceedsMaxSize"|"PortMismatch"|"SchemeMismatch"|"AnonymousContext";
/**
* Types of reasons why a cookie should have been blocked by 3PCD but is exempted for the request.
*/
@@ -10755,10 +10780,6 @@ default domain, path, source port, and source scheme values of the created cooki
* Cookie Priority.
*/
priority?: CookiePriority;
- /**
- * True if cookie is SameParty.
- */
- sameParty?: boolean;
/**
* Cookie source scheme type.
*/
@@ -11065,7 +11086,7 @@ Expected to be unsigned integer.
*/
remotePort?: number;
}
- export type PrivateNetworkRequestPolicy = "Allow"|"BlockFromInsecureToMorePrivate"|"WarnFromInsecureToMorePrivate"|"PermissionBlock"|"PermissionWarn";
+ export type LocalNetworkAccessRequestPolicy = "Allow"|"BlockFromInsecureToMorePrivate"|"WarnFromInsecureToMorePrivate"|"PermissionBlock"|"PermissionWarn";
export type IPAddressSpace = "Loopback"|"Local"|"Public"|"Unknown";
export interface ConnectTiming {
/**
@@ -11078,7 +11099,7 @@ the same request (but not for redirected requests).
export interface ClientSecurityState {
initiatorIsSecureContext: boolean;
initiatorIPAddressSpace: IPAddressSpace;
- privateNetworkRequestPolicy: PrivateNetworkRequestPolicy;
+ localNetworkAccessRequestPolicy: LocalNetworkAccessRequestPolicy;
}
export type CrossOriginOpenerPolicyValue = "SameOrigin"|"SameOriginAllowPopups"|"RestrictProperties"|"UnsafeNone"|"SameOriginPlusCoep"|"RestrictPropertiesPlusCoep"|"NoopenerAllowPopups";
export interface CrossOriginOpenerPolicyStatus {
@@ -11165,6 +11186,19 @@ the same request (but not for redirected requests).
*/
id: string;
}
+ /**
+ * How a device bound session was used during a request.
+ */
+ export interface DeviceBoundSessionWithUsage {
+ /**
+ * The key for the session.
+ */
+ sessionKey: DeviceBoundSessionKey;
+ /**
+ * How the session was used (or not used).
+ */
+ usage: "NotInScope"|"InScopeRefreshNotYetNeeded"|"InScopeRefreshNotAllowed"|"ProactiveRefreshNotPossible"|"ProactiveRefreshAttempted"|"Deferred";
+ }
/**
* A device bound session's cookie craving.
*/
@@ -11967,6 +12001,10 @@ the request and the ones not sent; the latter are distinguished by having blocke
* Connection timing information for the request.
*/
connectTiming: ConnectTiming;
+ /**
+ * How the request site's device bound sessions were used during this request.
+ */
+ deviceBoundSessionUsages?: DeviceBoundSessionWithUsage[];
/**
* The client security state set for the request.
*/
@@ -12663,10 +12701,6 @@ default domain, path, source port, and source scheme values of the created cooki
* Cookie Priority type.
*/
priority?: CookiePriority;
- /**
- * True if cookie is SameParty.
- */
- sameParty?: boolean;
/**
* Cookie source scheme type.
*/
@@ -13261,6 +13295,16 @@ Page reload is required before the new cookie behavior will be observed
maskColor?: DOM.RGBA;
}
export type InspectMode = "searchForNode"|"searchForUAShadowDOM"|"captureAreaScreenshot"|"none";
+ export interface InspectedElementAnchorConfig {
+ /**
+ * Identifier of the node to highlight.
+ */
+ nodeId?: DOM.NodeId;
+ /**
+ * Identifier of the backend node to highlight.
+ */
+ backendNodeId?: DOM.BackendNodeId;
+ }
/**
* Fired when the node should be inspected. This happens after call to `setInspectMode` or when
@@ -13287,6 +13331,24 @@ user manually inspects an element.
*/
viewport: Page.Viewport;
}
+ /**
+ * Fired when user asks to show the Inspect panel.
+ */
+ export type inspectPanelShowRequestedPayload = {
+ /**
+ * Id of the node to show in the panel.
+ */
+ backendNodeId: DOM.BackendNodeId;
+ }
+ /**
+ * Fired when user asks to restore the Inspected Element floating window.
+ */
+ export type inspectedElementWindowRestoredPayload = {
+ /**
+ * Id of the node to restore the floating window for.
+ */
+ backendNodeId: DOM.BackendNodeId;
+ }
/**
* Fired when user cancels the inspect mode.
*/
@@ -13594,6 +13656,14 @@ Backend then generates 'inspectNodeRequested' event upon element selection.
}
export type setShowContainerQueryOverlaysReturnValue = {
}
+ export type setShowInspectedElementAnchorParameters = {
+ /**
+ * Node identifier for which to show an anchor for.
+ */
+ inspectedElementAnchorConfig: InspectedElementAnchorConfig;
+ }
+ export type setShowInspectedElementAnchorReturnValue = {
+ }
/**
* Requests that backend shows paint rectangles
*/
@@ -14531,7 +14601,7 @@ https://github.com/WICG/manifest-incubations/blob/gh-pages/scope_extensions-expl
/**
* List of not restored reasons for back-forward cache.
*/
- export type BackForwardCacheNotRestoredReason = "NotPrimaryMainFrame"|"BackForwardCacheDisabled"|"RelatedActiveContentsExist"|"HTTPStatusNotOK"|"SchemeNotHTTPOrHTTPS"|"Loading"|"WasGrantedMediaAccess"|"DisableForRenderFrameHostCalled"|"DomainNotAllowed"|"HTTPMethodNotGET"|"SubframeIsNavigating"|"Timeout"|"CacheLimit"|"JavaScriptExecution"|"RendererProcessKilled"|"RendererProcessCrashed"|"SchedulerTrackedFeatureUsed"|"ConflictingBrowsingInstance"|"CacheFlushed"|"ServiceWorkerVersionActivation"|"SessionRestored"|"ServiceWorkerPostMessage"|"EnteredBackForwardCacheBeforeServiceWorkerHostAdded"|"RenderFrameHostReused_SameSite"|"RenderFrameHostReused_CrossSite"|"ServiceWorkerClaim"|"IgnoreEventAndEvict"|"HaveInnerContents"|"TimeoutPuttingInCache"|"BackForwardCacheDisabledByLowMemory"|"BackForwardCacheDisabledByCommandLine"|"NetworkRequestDatapipeDrainedAsBytesConsumer"|"NetworkRequestRedirected"|"NetworkRequestTimeout"|"NetworkExceedsBufferLimit"|"NavigationCancelledWhileRestoring"|"NotMostRecentNavigationEntry"|"BackForwardCacheDisabledForPrerender"|"UserAgentOverrideDiffers"|"ForegroundCacheLimit"|"BrowsingInstanceNotSwapped"|"BackForwardCacheDisabledForDelegate"|"UnloadHandlerExistsInMainFrame"|"UnloadHandlerExistsInSubFrame"|"ServiceWorkerUnregistration"|"CacheControlNoStore"|"CacheControlNoStoreCookieModified"|"CacheControlNoStoreHTTPOnlyCookieModified"|"NoResponseHead"|"Unknown"|"ActivationNavigationsDisallowedForBug1234857"|"ErrorDocument"|"FencedFramesEmbedder"|"CookieDisabled"|"HTTPAuthRequired"|"CookieFlushed"|"BroadcastChannelOnMessage"|"WebViewSettingsChanged"|"WebViewJavaScriptObjectChanged"|"WebViewMessageListenerInjected"|"WebViewSafeBrowsingAllowlistChanged"|"WebViewDocumentStartJavascriptChanged"|"WebSocket"|"WebTransport"|"WebRTC"|"MainResourceHasCacheControlNoStore"|"MainResourceHasCacheControlNoCache"|"SubresourceHasCacheControlNoStore"|"SubresourceHasCacheControlNoCache"|"ContainsPlugins"|"DocumentLoaded"|"OutstandingNetworkRequestOthers"|"RequestedMIDIPermission"|"RequestedAudioCapturePermission"|"RequestedVideoCapturePermission"|"RequestedBackForwardCacheBlockedSensors"|"RequestedBackgroundWorkPermission"|"BroadcastChannel"|"WebXR"|"SharedWorker"|"SharedWorkerMessage"|"SharedWorkerWithNoActiveClient"|"WebLocks"|"WebHID"|"WebBluetooth"|"WebShare"|"RequestedStorageAccessGrant"|"WebNfc"|"OutstandingNetworkRequestFetch"|"OutstandingNetworkRequestXHR"|"AppBanner"|"Printing"|"WebDatabase"|"PictureInPicture"|"SpeechRecognizer"|"IdleManager"|"PaymentManager"|"SpeechSynthesis"|"KeyboardLock"|"WebOTPService"|"OutstandingNetworkRequestDirectSocket"|"InjectedJavascript"|"InjectedStyleSheet"|"KeepaliveRequest"|"IndexedDBEvent"|"Dummy"|"JsNetworkRequestReceivedCacheControlNoStoreResource"|"WebRTCUsedWithCCNS"|"WebTransportUsedWithCCNS"|"WebSocketUsedWithCCNS"|"SmartCard"|"LiveMediaStreamTrack"|"UnloadHandler"|"ParserAborted"|"ContentSecurityHandler"|"ContentWebAuthenticationAPI"|"ContentFileChooser"|"ContentSerial"|"ContentFileSystemAccess"|"ContentMediaDevicesDispatcherHost"|"ContentWebBluetooth"|"ContentWebUSB"|"ContentMediaSessionService"|"ContentScreenReader"|"ContentDiscarded"|"EmbedderPopupBlockerTabHelper"|"EmbedderSafeBrowsingTriggeredPopupBlocker"|"EmbedderSafeBrowsingThreatDetails"|"EmbedderAppBannerManager"|"EmbedderDomDistillerViewerSource"|"EmbedderDomDistillerSelfDeletingRequestDelegate"|"EmbedderOomInterventionTabHelper"|"EmbedderOfflinePage"|"EmbedderChromePasswordManagerClientBindCredentialManager"|"EmbedderPermissionRequestManager"|"EmbedderModalDialog"|"EmbedderExtensions"|"EmbedderExtensionMessaging"|"EmbedderExtensionMessagingForOpenPort"|"EmbedderExtensionSentMessageToCachedFrame"|"RequestedByWebViewClient"|"PostMessageByWebViewClient"|"CacheControlNoStoreDeviceBoundSessionTerminated"|"CacheLimitPrunedOnModerateMemoryPressure"|"CacheLimitPrunedOnCriticalMemoryPressure";
+ export type BackForwardCacheNotRestoredReason = "NotPrimaryMainFrame"|"BackForwardCacheDisabled"|"RelatedActiveContentsExist"|"HTTPStatusNotOK"|"SchemeNotHTTPOrHTTPS"|"Loading"|"WasGrantedMediaAccess"|"DisableForRenderFrameHostCalled"|"DomainNotAllowed"|"HTTPMethodNotGET"|"SubframeIsNavigating"|"Timeout"|"CacheLimit"|"JavaScriptExecution"|"RendererProcessKilled"|"RendererProcessCrashed"|"SchedulerTrackedFeatureUsed"|"ConflictingBrowsingInstance"|"CacheFlushed"|"ServiceWorkerVersionActivation"|"SessionRestored"|"ServiceWorkerPostMessage"|"EnteredBackForwardCacheBeforeServiceWorkerHostAdded"|"RenderFrameHostReused_SameSite"|"RenderFrameHostReused_CrossSite"|"ServiceWorkerClaim"|"IgnoreEventAndEvict"|"HaveInnerContents"|"TimeoutPuttingInCache"|"BackForwardCacheDisabledByLowMemory"|"BackForwardCacheDisabledByCommandLine"|"NetworkRequestDatapipeDrainedAsBytesConsumer"|"NetworkRequestRedirected"|"NetworkRequestTimeout"|"NetworkExceedsBufferLimit"|"NavigationCancelledWhileRestoring"|"NotMostRecentNavigationEntry"|"BackForwardCacheDisabledForPrerender"|"UserAgentOverrideDiffers"|"ForegroundCacheLimit"|"BrowsingInstanceNotSwapped"|"BackForwardCacheDisabledForDelegate"|"UnloadHandlerExistsInMainFrame"|"UnloadHandlerExistsInSubFrame"|"ServiceWorkerUnregistration"|"CacheControlNoStore"|"CacheControlNoStoreCookieModified"|"CacheControlNoStoreHTTPOnlyCookieModified"|"NoResponseHead"|"Unknown"|"ActivationNavigationsDisallowedForBug1234857"|"ErrorDocument"|"FencedFramesEmbedder"|"CookieDisabled"|"HTTPAuthRequired"|"CookieFlushed"|"BroadcastChannelOnMessage"|"WebViewSettingsChanged"|"WebViewJavaScriptObjectChanged"|"WebViewMessageListenerInjected"|"WebViewSafeBrowsingAllowlistChanged"|"WebViewDocumentStartJavascriptChanged"|"WebSocket"|"WebTransport"|"WebRTC"|"MainResourceHasCacheControlNoStore"|"MainResourceHasCacheControlNoCache"|"SubresourceHasCacheControlNoStore"|"SubresourceHasCacheControlNoCache"|"ContainsPlugins"|"DocumentLoaded"|"OutstandingNetworkRequestOthers"|"RequestedMIDIPermission"|"RequestedAudioCapturePermission"|"RequestedVideoCapturePermission"|"RequestedBackForwardCacheBlockedSensors"|"RequestedBackgroundWorkPermission"|"BroadcastChannel"|"WebXR"|"SharedWorker"|"SharedWorkerMessage"|"SharedWorkerWithNoActiveClient"|"WebLocks"|"WebLocksContention"|"WebHID"|"WebBluetooth"|"WebShare"|"RequestedStorageAccessGrant"|"WebNfc"|"OutstandingNetworkRequestFetch"|"OutstandingNetworkRequestXHR"|"AppBanner"|"Printing"|"WebDatabase"|"PictureInPicture"|"SpeechRecognizer"|"IdleManager"|"PaymentManager"|"SpeechSynthesis"|"KeyboardLock"|"WebOTPService"|"OutstandingNetworkRequestDirectSocket"|"InjectedJavascript"|"InjectedStyleSheet"|"KeepaliveRequest"|"IndexedDBEvent"|"Dummy"|"JsNetworkRequestReceivedCacheControlNoStoreResource"|"WebRTCUsedWithCCNS"|"WebTransportUsedWithCCNS"|"WebSocketUsedWithCCNS"|"SmartCard"|"LiveMediaStreamTrack"|"UnloadHandler"|"ParserAborted"|"ContentSecurityHandler"|"ContentWebAuthenticationAPI"|"ContentFileChooser"|"ContentSerial"|"ContentFileSystemAccess"|"ContentMediaDevicesDispatcherHost"|"ContentWebBluetooth"|"ContentWebUSB"|"ContentMediaSessionService"|"ContentScreenReader"|"ContentDiscarded"|"EmbedderPopupBlockerTabHelper"|"EmbedderSafeBrowsingTriggeredPopupBlocker"|"EmbedderSafeBrowsingThreatDetails"|"EmbedderAppBannerManager"|"EmbedderDomDistillerViewerSource"|"EmbedderDomDistillerSelfDeletingRequestDelegate"|"EmbedderOomInterventionTabHelper"|"EmbedderOfflinePage"|"EmbedderChromePasswordManagerClientBindCredentialManager"|"EmbedderPermissionRequestManager"|"EmbedderModalDialog"|"EmbedderExtensions"|"EmbedderExtensionMessaging"|"EmbedderExtensionMessagingForOpenPort"|"EmbedderExtensionSentMessageToCachedFrame"|"RequestedByWebViewClient"|"PostMessageByWebViewClient"|"CacheControlNoStoreDeviceBoundSessionTerminated"|"CacheLimitPrunedOnModerateMemoryPressure"|"CacheLimitPrunedOnCriticalMemoryPressure";
/**
* Types of not restored reasons for back-forward cache.
*/
@@ -16771,6 +16841,407 @@ For cached script it is the last time the cache entry was validated.
}
}
+ export namespace SmartCardEmulation {
+ /**
+ * Indicates the PC/SC error code.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__ErrorCodes.html
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/secauthn/authentication-return-values
+ */
+ export type ResultCode = "success"|"removed-card"|"reset-card"|"unpowered-card"|"unresponsive-card"|"unsupported-card"|"reader-unavailable"|"sharing-violation"|"not-transacted"|"no-smartcard"|"proto-mismatch"|"system-cancelled"|"not-ready"|"cancelled"|"insufficient-buffer"|"invalid-handle"|"invalid-parameter"|"invalid-value"|"no-memory"|"timeout"|"unknown-reader"|"unsupported-feature"|"no-readers-available"|"service-stopped"|"no-service"|"comm-error"|"internal-error"|"server-too-busy"|"unexpected"|"shutdown"|"unknown-card"|"unknown";
+ /**
+ * Maps to the |SCARD_SHARE_*| values.
+ */
+ export type ShareMode = "shared"|"exclusive"|"direct";
+ /**
+ * Indicates what the reader should do with the card.
+ */
+ export type Disposition = "leave-card"|"reset-card"|"unpower-card"|"eject-card";
+ /**
+ * Maps to |SCARD_*| connection state values.
+ */
+ export type ConnectionState = "absent"|"present"|"swallowed"|"powered"|"negotiable"|"specific";
+ /**
+ * Maps to the |SCARD_STATE_*| flags.
+ */
+ export interface ReaderStateFlags {
+ unaware?: boolean;
+ ignore?: boolean;
+ changed?: boolean;
+ unknown?: boolean;
+ unavailable?: boolean;
+ empty?: boolean;
+ present?: boolean;
+ exclusive?: boolean;
+ inuse?: boolean;
+ mute?: boolean;
+ unpowered?: boolean;
+ }
+ /**
+ * Maps to the |SCARD_PROTOCOL_*| flags.
+ */
+ export interface ProtocolSet {
+ t0?: boolean;
+ t1?: boolean;
+ raw?: boolean;
+ }
+ /**
+ * Maps to the |SCARD_PROTOCOL_*| values.
+ */
+ export type Protocol = "t0"|"t1"|"raw";
+ export interface ReaderStateIn {
+ reader: string;
+ currentState: ReaderStateFlags;
+ currentInsertionCount: number;
+ }
+ export interface ReaderStateOut {
+ reader: string;
+ eventState: ReaderStateFlags;
+ eventCount: number;
+ atr: binary;
+ }
+
+ /**
+ * Fired when |SCardEstablishContext| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardestablishcontext
+ */
+ export type establishContextRequestedPayload = {
+ requestId: string;
+ }
+ /**
+ * Fired when |SCardReleaseContext| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga6aabcba7744c5c9419fdd6404f73a934
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardreleasecontext
+ */
+ export type releaseContextRequestedPayload = {
+ requestId: string;
+ contextId: number;
+ }
+ /**
+ * Fired when |SCardListReaders| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga93b07815789b3cf2629d439ecf20f0d9
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardlistreadersa
+ */
+ export type listReadersRequestedPayload = {
+ requestId: string;
+ contextId: number;
+ }
+ /**
+ * Fired when |SCardGetStatusChange| is called. Timeout is specified in milliseconds.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga33247d5d1257d59e55647c3bb717db24
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetstatuschangea
+ */
+ export type getStatusChangeRequestedPayload = {
+ requestId: string;
+ contextId: number;
+ readerStates: ReaderStateIn[];
+ /**
+ * in milliseconds, if absent, it means "infinite"
+ */
+ timeout?: number;
+ }
+ /**
+ * Fired when |SCardCancel| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacbbc0c6d6c0cbbeb4f4debf6fbeeee6
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcancel
+ */
+ export type cancelRequestedPayload = {
+ requestId: string;
+ contextId: number;
+ }
+ /**
+ * Fired when |SCardConnect| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardconnecta
+ */
+ export type connectRequestedPayload = {
+ requestId: string;
+ contextId: number;
+ reader: string;
+ shareMode: ShareMode;
+ preferredProtocols: ProtocolSet;
+ }
+ /**
+ * Fired when |SCardDisconnect| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4be198045c73ec0deb79e66c0ca1738a
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scarddisconnect
+ */
+ export type disconnectRequestedPayload = {
+ requestId: string;
+ handle: number;
+ disposition: Disposition;
+ }
+ /**
+ * Fired when |SCardTransmit| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga9a2d77242a271310269065e64633ab99
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardtransmit
+ */
+ export type transmitRequestedPayload = {
+ requestId: string;
+ handle: number;
+ data: binary;
+ protocol?: Protocol;
+ }
+ /**
+ * Fired when |SCardControl| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gac3454d4657110fd7f753b2d3d8f4e32f
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcontrol
+ */
+ export type controlRequestedPayload = {
+ requestId: string;
+ handle: number;
+ controlCode: number;
+ data: binary;
+ }
+ /**
+ * Fired when |SCardGetAttrib| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacfec51917255b7a25b94c5104961602
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetattrib
+ */
+ export type getAttribRequestedPayload = {
+ requestId: string;
+ handle: number;
+ attribId: number;
+ }
+ /**
+ * Fired when |SCardSetAttrib| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga060f0038a4ddfd5dd2b8fadf3c3a2e4f
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardsetattrib
+ */
+ export type setAttribRequestedPayload = {
+ requestId: string;
+ handle: number;
+ attribId: number;
+ data: binary;
+ }
+ /**
+ * Fired when |SCardStatus| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae49c3c894ad7ac12a5b896bde70d0382
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardstatusa
+ */
+ export type statusRequestedPayload = {
+ requestId: string;
+ handle: number;
+ }
+ /**
+ * Fired when |SCardBeginTransaction| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaddb835dce01a0da1d6ca02d33ee7d861
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardbegintransaction
+ */
+ export type beginTransactionRequestedPayload = {
+ requestId: string;
+ handle: number;
+ }
+ /**
+ * Fired when |SCardEndTransaction| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae8742473b404363e5c587f570d7e2f3b
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardendtransaction
+ */
+ export type endTransactionRequestedPayload = {
+ requestId: string;
+ handle: number;
+ disposition: Disposition;
+ }
+
+ /**
+ * Enables the |SmartCardEmulation| domain.
+ */
+ export type enableParameters = {
+ }
+ export type enableReturnValue = {
+ }
+ /**
+ * Disables the |SmartCardEmulation| domain.
+ */
+ export type disableParameters = {
+ }
+ export type disableReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardEstablishContext| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardestablishcontext
+ */
+ export type reportEstablishContextResultParameters = {
+ requestId: string;
+ contextId: number;
+ }
+ export type reportEstablishContextResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardReleaseContext| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga6aabcba7744c5c9419fdd6404f73a934
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardreleasecontext
+ */
+ export type reportReleaseContextResultParameters = {
+ requestId: string;
+ }
+ export type reportReleaseContextResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardListReaders| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga93b07815789b3cf2629d439ecf20f0d9
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardlistreadersa
+ */
+ export type reportListReadersResultParameters = {
+ requestId: string;
+ readers: string[];
+ }
+ export type reportListReadersResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardGetStatusChange| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga33247d5d1257d59e55647c3bb717db24
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetstatuschangea
+ */
+ export type reportGetStatusChangeResultParameters = {
+ requestId: string;
+ readerStates: ReaderStateOut[];
+ }
+ export type reportGetStatusChangeResultReturnValue = {
+ }
+ /**
+ * Reports the result of a |SCardBeginTransaction| call.
+On success, this creates a new transaction object.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaddb835dce01a0da1d6ca02d33ee7d861
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardbegintransaction
+ */
+ export type reportBeginTransactionResultParameters = {
+ requestId: string;
+ handle: number;
+ }
+ export type reportBeginTransactionResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a call that returns only a result code.
+Used for: |SCardCancel|, |SCardDisconnect|, |SCardSetAttrib|, |SCardEndTransaction|.
+
+This maps to:
+1. SCardCancel
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacbbc0c6d6c0cbbeb4f4debf6fbeeee6
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcancel
+
+2. SCardDisconnect
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4be198045c73ec0deb79e66c0ca1738a
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scarddisconnect
+
+3. SCardSetAttrib
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga060f0038a4ddfd5dd2b8fadf3c3a2e4f
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardsetattrib
+
+4. SCardEndTransaction
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae8742473b404363e5c587f570d7e2f3b
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardendtransaction
+ */
+ export type reportPlainResultParameters = {
+ requestId: string;
+ }
+ export type reportPlainResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardConnect| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardconnecta
+ */
+ export type reportConnectResultParameters = {
+ requestId: string;
+ handle: number;
+ activeProtocol?: Protocol;
+ }
+ export type reportConnectResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a call that sends back data on success.
+Used for |SCardTransmit|, |SCardControl|, and |SCardGetAttrib|.
+
+This maps to:
+1. SCardTransmit
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga9a2d77242a271310269065e64633ab99
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardtransmit
+
+2. SCardControl
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gac3454d4657110fd7f753b2d3d8f4e32f
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcontrol
+
+3. SCardGetAttrib
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacfec51917255b7a25b94c5104961602
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetattrib
+ */
+ export type reportDataResultParameters = {
+ requestId: string;
+ data: binary;
+ }
+ export type reportDataResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardStatus| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae49c3c894ad7ac12a5b896bde70d0382
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardstatusa
+ */
+ export type reportStatusResultParameters = {
+ requestId: string;
+ readerName: string;
+ state: ConnectionState;
+ atr: binary;
+ protocol?: Protocol;
+ }
+ export type reportStatusResultReturnValue = {
+ }
+ /**
+ * Reports an error result for the given request.
+ */
+ export type reportErrorParameters = {
+ requestId: string;
+ resultCode: ResultCode;
+ }
+ export type reportErrorReturnValue = {
+ }
+ }
+
export namespace Storage {
export type SerializedStorageKey = string;
/**
@@ -18393,6 +18864,16 @@ present in the tab UI strip. Cannot be created with `forTab: true`, `newWindow:
`background: false`. The life-time of the tab is limited to the life-time of the session.
*/
hidden?: boolean;
+ /**
+ * If specified, the option is used to determine if the new target should
+be focused or not. By default, the focus behavior depends on the
+value of the background field. For example, background=false and focus=false
+will result in the target tab being opened but the browser window remain
+unchanged (if it was in the background, it will remain in the background)
+and background=false with focus=undefined will result in the window being focused.
+Using background: true and focus: true is not supported and will result in an error.
+ */
+ focus?: boolean;
}
export type createTargetReturnValue = {
/**
@@ -22191,6 +22672,8 @@ Error was thrown.
"Overlay.inspectNodeRequested": Overlay.inspectNodeRequestedPayload;
"Overlay.nodeHighlightRequested": Overlay.nodeHighlightRequestedPayload;
"Overlay.screenshotRequested": Overlay.screenshotRequestedPayload;
+ "Overlay.inspectPanelShowRequested": Overlay.inspectPanelShowRequestedPayload;
+ "Overlay.inspectedElementWindowRestored": Overlay.inspectedElementWindowRestoredPayload;
"Overlay.inspectModeCanceled": Overlay.inspectModeCanceledPayload;
"Page.domContentEventFired": Page.domContentEventFiredPayload;
"Page.fileChooserOpened": Page.fileChooserOpenedPayload;
@@ -22234,6 +22717,20 @@ Error was thrown.
"ServiceWorker.workerErrorReported": ServiceWorker.workerErrorReportedPayload;
"ServiceWorker.workerRegistrationUpdated": ServiceWorker.workerRegistrationUpdatedPayload;
"ServiceWorker.workerVersionUpdated": ServiceWorker.workerVersionUpdatedPayload;
+ "SmartCardEmulation.establishContextRequested": SmartCardEmulation.establishContextRequestedPayload;
+ "SmartCardEmulation.releaseContextRequested": SmartCardEmulation.releaseContextRequestedPayload;
+ "SmartCardEmulation.listReadersRequested": SmartCardEmulation.listReadersRequestedPayload;
+ "SmartCardEmulation.getStatusChangeRequested": SmartCardEmulation.getStatusChangeRequestedPayload;
+ "SmartCardEmulation.cancelRequested": SmartCardEmulation.cancelRequestedPayload;
+ "SmartCardEmulation.connectRequested": SmartCardEmulation.connectRequestedPayload;
+ "SmartCardEmulation.disconnectRequested": SmartCardEmulation.disconnectRequestedPayload;
+ "SmartCardEmulation.transmitRequested": SmartCardEmulation.transmitRequestedPayload;
+ "SmartCardEmulation.controlRequested": SmartCardEmulation.controlRequestedPayload;
+ "SmartCardEmulation.getAttribRequested": SmartCardEmulation.getAttribRequestedPayload;
+ "SmartCardEmulation.setAttribRequested": SmartCardEmulation.setAttribRequestedPayload;
+ "SmartCardEmulation.statusRequested": SmartCardEmulation.statusRequestedPayload;
+ "SmartCardEmulation.beginTransactionRequested": SmartCardEmulation.beginTransactionRequestedPayload;
+ "SmartCardEmulation.endTransactionRequested": SmartCardEmulation.endTransactionRequestedPayload;
"Storage.cacheStorageContentUpdated": Storage.cacheStorageContentUpdatedPayload;
"Storage.cacheStorageListUpdated": Storage.cacheStorageListUpdatedPayload;
"Storage.indexedDBContentUpdated": Storage.indexedDBContentUpdatedPayload;
@@ -22412,6 +22909,8 @@ Error was thrown.
["Overlay.inspectNodeRequested"]: [Overlay.inspectNodeRequestedPayload];
["Overlay.nodeHighlightRequested"]: [Overlay.nodeHighlightRequestedPayload];
["Overlay.screenshotRequested"]: [Overlay.screenshotRequestedPayload];
+ ["Overlay.inspectPanelShowRequested"]: [Overlay.inspectPanelShowRequestedPayload];
+ ["Overlay.inspectedElementWindowRestored"]: [Overlay.inspectedElementWindowRestoredPayload];
["Overlay.inspectModeCanceled"]: [Overlay.inspectModeCanceledPayload];
["Page.domContentEventFired"]: [Page.domContentEventFiredPayload];
["Page.fileChooserOpened"]: [Page.fileChooserOpenedPayload];
@@ -22455,6 +22954,20 @@ Error was thrown.
["ServiceWorker.workerErrorReported"]: [ServiceWorker.workerErrorReportedPayload];
["ServiceWorker.workerRegistrationUpdated"]: [ServiceWorker.workerRegistrationUpdatedPayload];
["ServiceWorker.workerVersionUpdated"]: [ServiceWorker.workerVersionUpdatedPayload];
+ ["SmartCardEmulation.establishContextRequested"]: [SmartCardEmulation.establishContextRequestedPayload];
+ ["SmartCardEmulation.releaseContextRequested"]: [SmartCardEmulation.releaseContextRequestedPayload];
+ ["SmartCardEmulation.listReadersRequested"]: [SmartCardEmulation.listReadersRequestedPayload];
+ ["SmartCardEmulation.getStatusChangeRequested"]: [SmartCardEmulation.getStatusChangeRequestedPayload];
+ ["SmartCardEmulation.cancelRequested"]: [SmartCardEmulation.cancelRequestedPayload];
+ ["SmartCardEmulation.connectRequested"]: [SmartCardEmulation.connectRequestedPayload];
+ ["SmartCardEmulation.disconnectRequested"]: [SmartCardEmulation.disconnectRequestedPayload];
+ ["SmartCardEmulation.transmitRequested"]: [SmartCardEmulation.transmitRequestedPayload];
+ ["SmartCardEmulation.controlRequested"]: [SmartCardEmulation.controlRequestedPayload];
+ ["SmartCardEmulation.getAttribRequested"]: [SmartCardEmulation.getAttribRequestedPayload];
+ ["SmartCardEmulation.setAttribRequested"]: [SmartCardEmulation.setAttribRequestedPayload];
+ ["SmartCardEmulation.statusRequested"]: [SmartCardEmulation.statusRequestedPayload];
+ ["SmartCardEmulation.beginTransactionRequested"]: [SmartCardEmulation.beginTransactionRequestedPayload];
+ ["SmartCardEmulation.endTransactionRequested"]: [SmartCardEmulation.endTransactionRequestedPayload];
["Storage.cacheStorageContentUpdated"]: [Storage.cacheStorageContentUpdatedPayload];
["Storage.cacheStorageListUpdated"]: [Storage.cacheStorageListUpdatedPayload];
["Storage.indexedDBContentUpdated"]: [Storage.indexedDBContentUpdatedPayload];
@@ -22764,6 +23277,7 @@ Error was thrown.
"EventBreakpoints.setInstrumentationBreakpoint": EventBreakpoints.setInstrumentationBreakpointParameters;
"EventBreakpoints.removeInstrumentationBreakpoint": EventBreakpoints.removeInstrumentationBreakpointParameters;
"EventBreakpoints.disable": EventBreakpoints.disableParameters;
+ "Extensions.triggerAction": Extensions.triggerActionParameters;
"Extensions.loadUnpacked": Extensions.loadUnpackedParameters;
"Extensions.uninstall": Extensions.uninstallParameters;
"Extensions.getStorageItems": Extensions.getStorageItemsParameters;
@@ -22904,6 +23418,7 @@ Error was thrown.
"Overlay.setShowFlexOverlays": Overlay.setShowFlexOverlaysParameters;
"Overlay.setShowScrollSnapOverlays": Overlay.setShowScrollSnapOverlaysParameters;
"Overlay.setShowContainerQueryOverlays": Overlay.setShowContainerQueryOverlaysParameters;
+ "Overlay.setShowInspectedElementAnchor": Overlay.setShowInspectedElementAnchorParameters;
"Overlay.setShowPaintRects": Overlay.setShowPaintRectsParameters;
"Overlay.setShowLayoutShiftRegions": Overlay.setShowLayoutShiftRegionsParameters;
"Overlay.setShowScrollBottleneckRects": Overlay.setShowScrollBottleneckRectsParameters;
@@ -23005,6 +23520,18 @@ Error was thrown.
"ServiceWorker.stopWorker": ServiceWorker.stopWorkerParameters;
"ServiceWorker.unregister": ServiceWorker.unregisterParameters;
"ServiceWorker.updateRegistration": ServiceWorker.updateRegistrationParameters;
+ "SmartCardEmulation.enable": SmartCardEmulation.enableParameters;
+ "SmartCardEmulation.disable": SmartCardEmulation.disableParameters;
+ "SmartCardEmulation.reportEstablishContextResult": SmartCardEmulation.reportEstablishContextResultParameters;
+ "SmartCardEmulation.reportReleaseContextResult": SmartCardEmulation.reportReleaseContextResultParameters;
+ "SmartCardEmulation.reportListReadersResult": SmartCardEmulation.reportListReadersResultParameters;
+ "SmartCardEmulation.reportGetStatusChangeResult": SmartCardEmulation.reportGetStatusChangeResultParameters;
+ "SmartCardEmulation.reportBeginTransactionResult": SmartCardEmulation.reportBeginTransactionResultParameters;
+ "SmartCardEmulation.reportPlainResult": SmartCardEmulation.reportPlainResultParameters;
+ "SmartCardEmulation.reportConnectResult": SmartCardEmulation.reportConnectResultParameters;
+ "SmartCardEmulation.reportDataResult": SmartCardEmulation.reportDataResultParameters;
+ "SmartCardEmulation.reportStatusResult": SmartCardEmulation.reportStatusResultParameters;
+ "SmartCardEmulation.reportError": SmartCardEmulation.reportErrorParameters;
"Storage.getStorageKeyForFrame": Storage.getStorageKeyForFrameParameters;
"Storage.getStorageKey": Storage.getStorageKeyParameters;
"Storage.clearDataForOrigin": Storage.clearDataForOriginParameters;
@@ -23414,6 +23941,7 @@ Error was thrown.
"EventBreakpoints.setInstrumentationBreakpoint": EventBreakpoints.setInstrumentationBreakpointReturnValue;
"EventBreakpoints.removeInstrumentationBreakpoint": EventBreakpoints.removeInstrumentationBreakpointReturnValue;
"EventBreakpoints.disable": EventBreakpoints.disableReturnValue;
+ "Extensions.triggerAction": Extensions.triggerActionReturnValue;
"Extensions.loadUnpacked": Extensions.loadUnpackedReturnValue;
"Extensions.uninstall": Extensions.uninstallReturnValue;
"Extensions.getStorageItems": Extensions.getStorageItemsReturnValue;
@@ -23554,6 +24082,7 @@ Error was thrown.
"Overlay.setShowFlexOverlays": Overlay.setShowFlexOverlaysReturnValue;
"Overlay.setShowScrollSnapOverlays": Overlay.setShowScrollSnapOverlaysReturnValue;
"Overlay.setShowContainerQueryOverlays": Overlay.setShowContainerQueryOverlaysReturnValue;
+ "Overlay.setShowInspectedElementAnchor": Overlay.setShowInspectedElementAnchorReturnValue;
"Overlay.setShowPaintRects": Overlay.setShowPaintRectsReturnValue;
"Overlay.setShowLayoutShiftRegions": Overlay.setShowLayoutShiftRegionsReturnValue;
"Overlay.setShowScrollBottleneckRects": Overlay.setShowScrollBottleneckRectsReturnValue;
@@ -23655,6 +24184,18 @@ Error was thrown.
"ServiceWorker.stopWorker": ServiceWorker.stopWorkerReturnValue;
"ServiceWorker.unregister": ServiceWorker.unregisterReturnValue;
"ServiceWorker.updateRegistration": ServiceWorker.updateRegistrationReturnValue;
+ "SmartCardEmulation.enable": SmartCardEmulation.enableReturnValue;
+ "SmartCardEmulation.disable": SmartCardEmulation.disableReturnValue;
+ "SmartCardEmulation.reportEstablishContextResult": SmartCardEmulation.reportEstablishContextResultReturnValue;
+ "SmartCardEmulation.reportReleaseContextResult": SmartCardEmulation.reportReleaseContextResultReturnValue;
+ "SmartCardEmulation.reportListReadersResult": SmartCardEmulation.reportListReadersResultReturnValue;
+ "SmartCardEmulation.reportGetStatusChangeResult": SmartCardEmulation.reportGetStatusChangeResultReturnValue;
+ "SmartCardEmulation.reportBeginTransactionResult": SmartCardEmulation.reportBeginTransactionResultReturnValue;
+ "SmartCardEmulation.reportPlainResult": SmartCardEmulation.reportPlainResultReturnValue;
+ "SmartCardEmulation.reportConnectResult": SmartCardEmulation.reportConnectResultReturnValue;
+ "SmartCardEmulation.reportDataResult": SmartCardEmulation.reportDataResultReturnValue;
+ "SmartCardEmulation.reportStatusResult": SmartCardEmulation.reportStatusResultReturnValue;
+ "SmartCardEmulation.reportError": SmartCardEmulation.reportErrorReturnValue;
"Storage.getStorageKeyForFrame": Storage.getStorageKeyForFrameReturnValue;
"Storage.getStorageKey": Storage.getStorageKeyReturnValue;
"Storage.clearDataForOrigin": Storage.clearDataForOriginReturnValue;
diff --git a/packages/playwright-core/src/server/deviceDescriptorsSource.json b/packages/playwright-core/src/server/deviceDescriptorsSource.json
index 84c4de3ac049e..da5809b978b63 100644
--- a/packages/playwright-core/src/server/deviceDescriptorsSource.json
+++ b/packages/playwright-core/src/server/deviceDescriptorsSource.json
@@ -110,7 +110,7 @@
"defaultBrowserType": "webkit"
},
"Galaxy S5": {
- "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 360,
"height": 640
@@ -121,7 +121,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy S5 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 640,
"height": 360
@@ -132,7 +132,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy S8": {
- "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 360,
"height": 740
@@ -143,7 +143,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy S8 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 740,
"height": 360
@@ -154,7 +154,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy S9+": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 320,
"height": 658
@@ -165,7 +165,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy S9+ landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 658,
"height": 320
@@ -176,7 +176,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy S24": {
- "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-S921U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-S921U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 360,
"height": 780
@@ -187,7 +187,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy S24 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-S921U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-S921U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 780,
"height": 360
@@ -198,7 +198,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy A55": {
- "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-A556B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-A556B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 480,
"height": 1040
@@ -209,7 +209,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy A55 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-A556B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-A556B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 1040,
"height": 480
@@ -220,7 +220,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy Tab S4": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36",
"viewport": {
"width": 712,
"height": 1138
@@ -231,7 +231,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy Tab S4 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36",
"viewport": {
"width": 1138,
"height": 712
@@ -242,7 +242,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy Tab S9": {
- "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-X710) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-X710) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36",
"viewport": {
"width": 640,
"height": 1024
@@ -253,7 +253,7 @@
"defaultBrowserType": "chromium"
},
"Galaxy Tab S9 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-X710) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-X710) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36",
"viewport": {
"width": 1024,
"height": 640
@@ -1208,7 +1208,7 @@
"defaultBrowserType": "webkit"
},
"LG Optimus L70": {
- "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 384,
"height": 640
@@ -1219,7 +1219,7 @@
"defaultBrowserType": "chromium"
},
"LG Optimus L70 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 640,
"height": 384
@@ -1230,7 +1230,7 @@
"defaultBrowserType": "chromium"
},
"Microsoft Lumia 550": {
- "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36 Edge/14.14263",
+ "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36 Edge/14.14263",
"viewport": {
"width": 360,
"height": 640
@@ -1241,7 +1241,7 @@
"defaultBrowserType": "chromium"
},
"Microsoft Lumia 550 landscape": {
- "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36 Edge/14.14263",
+ "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36 Edge/14.14263",
"viewport": {
"width": 640,
"height": 360
@@ -1252,7 +1252,7 @@
"defaultBrowserType": "chromium"
},
"Microsoft Lumia 950": {
- "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36 Edge/14.14263",
+ "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36 Edge/14.14263",
"viewport": {
"width": 360,
"height": 640
@@ -1263,7 +1263,7 @@
"defaultBrowserType": "chromium"
},
"Microsoft Lumia 950 landscape": {
- "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36 Edge/14.14263",
+ "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36 Edge/14.14263",
"viewport": {
"width": 640,
"height": 360
@@ -1274,7 +1274,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 10": {
- "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36",
"viewport": {
"width": 800,
"height": 1280
@@ -1285,7 +1285,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 10 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36",
"viewport": {
"width": 1280,
"height": 800
@@ -1296,7 +1296,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 4": {
- "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 384,
"height": 640
@@ -1307,7 +1307,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 4 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 640,
"height": 384
@@ -1318,7 +1318,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 5": {
- "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 360,
"height": 640
@@ -1329,7 +1329,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 5 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 640,
"height": 360
@@ -1340,7 +1340,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 5X": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 412,
"height": 732
@@ -1351,7 +1351,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 5X landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 732,
"height": 412
@@ -1362,7 +1362,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 6": {
- "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 412,
"height": 732
@@ -1373,7 +1373,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 6 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 732,
"height": 412
@@ -1384,7 +1384,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 6P": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 412,
"height": 732
@@ -1395,7 +1395,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 6P landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 732,
"height": 412
@@ -1406,7 +1406,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 7": {
- "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36",
"viewport": {
"width": 600,
"height": 960
@@ -1417,7 +1417,7 @@
"defaultBrowserType": "chromium"
},
"Nexus 7 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36",
"viewport": {
"width": 960,
"height": 600
@@ -1472,7 +1472,7 @@
"defaultBrowserType": "webkit"
},
"Pixel 2": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 411,
"height": 731
@@ -1483,7 +1483,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 2 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 731,
"height": 411
@@ -1494,7 +1494,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 2 XL": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 411,
"height": 823
@@ -1505,7 +1505,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 2 XL landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 823,
"height": 411
@@ -1516,7 +1516,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 3": {
- "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 393,
"height": 786
@@ -1527,7 +1527,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 3 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 786,
"height": 393
@@ -1538,7 +1538,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 4": {
- "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 353,
"height": 745
@@ -1549,7 +1549,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 4 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 745,
"height": 353
@@ -1560,7 +1560,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 4a (5G)": {
- "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"screen": {
"width": 412,
"height": 892
@@ -1575,7 +1575,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 4a (5G) landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"screen": {
"height": 892,
"width": 412
@@ -1590,7 +1590,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 5": {
- "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"screen": {
"width": 393,
"height": 851
@@ -1605,7 +1605,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 5 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"screen": {
"width": 851,
"height": 393
@@ -1620,7 +1620,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 7": {
- "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"screen": {
"width": 412,
"height": 915
@@ -1635,7 +1635,7 @@
"defaultBrowserType": "chromium"
},
"Pixel 7 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"screen": {
"width": 915,
"height": 412
@@ -1650,7 +1650,7 @@
"defaultBrowserType": "chromium"
},
"Moto G4": {
- "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 360,
"height": 640
@@ -1661,7 +1661,7 @@
"defaultBrowserType": "chromium"
},
"Moto G4 landscape": {
- "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Mobile Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Mobile Safari/537.36",
"viewport": {
"width": 640,
"height": 360
@@ -1672,7 +1672,7 @@
"defaultBrowserType": "chromium"
},
"Desktop Chrome HiDPI": {
- "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36",
"screen": {
"width": 1792,
"height": 1120
@@ -1687,7 +1687,7 @@
"defaultBrowserType": "chromium"
},
"Desktop Edge HiDPI": {
- "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36 Edg/145.0.7632.26",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36 Edg/146.0.7680.0",
"screen": {
"width": 1792,
"height": 1120
@@ -1732,7 +1732,7 @@
"defaultBrowserType": "webkit"
},
"Desktop Chrome": {
- "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36",
"screen": {
"width": 1920,
"height": 1080
@@ -1747,7 +1747,7 @@
"defaultBrowserType": "chromium"
},
"Desktop Edge": {
- "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.26 Safari/537.36 Edg/145.0.7632.26",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.7680.0 Safari/537.36 Edg/146.0.7680.0",
"screen": {
"width": 1920,
"height": 1080
diff --git a/packages/playwright-core/src/server/devtoolsController.ts b/packages/playwright-core/src/server/devtoolsController.ts
index 30ada58b4abb4..f214fbf9cbeb9 100644
--- a/packages/playwright-core/src/server/devtoolsController.ts
+++ b/packages/playwright-core/src/server/devtoolsController.ts
@@ -19,9 +19,15 @@ import { HttpServer } from './utils/httpServer';
import { BrowserContext } from './browserContext';
import { Page } from './page';
import { ProgressController } from './progress';
+import { Recorder, RecorderEvent } from './recorder';
+import { CRPage } from './chromium/crPage';
+import { CDPSession } from './chromium/crConnection';
+import { CRBrowserContext } from './chromium/crBrowser';
import type { RegisteredListener } from '../utils';
import type { Transport } from './utils/httpServer';
+import type { CRBrowser } from './chromium/crBrowser';
+import type { ElementInfo } from '@recorder/recorderTypes';
import type { DevToolsChannel, DevToolsChannelEvents, Tab } from '@devtools/devtoolsChannel';
export class DevToolsController {
@@ -37,7 +43,11 @@ export class DevToolsController {
if (!this._url) {
const guid = createGuid();
this._httpServer = new HttpServer();
- this._httpServer.createWebSocket(() => new DevToolsConnection(this._context), guid);
+ this._httpServer.createWebSocket(url => {
+ if (url.searchParams.has('cdp'))
+ return new CDPConnection(this._context, url.searchParams.get('cdp')!);
+ return new DevToolsConnection(this._context, this._url!);
+ }, guid);
await this._httpServer.start({ port: options.port, host: options.host });
this._url = (this._httpServer.urlPrefix('human-readable') + `/${guid}`).replace('http://', 'ws://');
}
@@ -58,11 +68,15 @@ class DevToolsConnection implements Transport, DevToolsChannel {
private _lastViewportSize: { width: number, height: number } | null = null;
private _pageListeners: RegisteredListener[] = [];
private _contextListeners: RegisteredListener[] = [];
+ private _recorderListeners: RegisteredListener[] = [];
private _context: BrowserContext;
+ private _controllerUrl: string;
+ private _recorder: Recorder | null = null;
private _eventListeners = new Map>();
- constructor(context: BrowserContext) {
+ constructor(context: BrowserContext, controllerUrl: string) {
this._context = context;
+ this._controllerUrl = controllerUrl;
}
// -- IDevToolsConnection: event subscription --
@@ -125,6 +139,7 @@ class DevToolsConnection implements Transport, DevToolsChannel {
}
onclose() {
+ this._cancelPicking();
this._deselectPage();
eventsHelper.removeEventListeners(this._contextListeners);
this._contextListeners = [];
@@ -227,6 +242,14 @@ class DevToolsConnection implements Transport, DevToolsChannel {
await ProgressController.runInternalTask(async progress => { await page.keyboard.up(progress, params.key); });
}
+ async pickLocator() {
+ await this._startPicking();
+ }
+
+ async cancelPickLocator() {
+ this._cancelPicking();
+ }
+
// -- Internal helpers --
private async _selectPage(page: Page) {
@@ -256,6 +279,7 @@ class DevToolsConnection implements Transport, DevToolsChannel {
private _deselectPage() {
if (!this.selectedPage)
return;
+ this._cancelPicking();
eventsHelper.removeEventListeners(this._pageListeners);
this._pageListeners = [];
this.selectedPage.screencast.stopScreencast(this);
@@ -264,6 +288,28 @@ class DevToolsConnection implements Transport, DevToolsChannel {
this._lastViewportSize = null;
}
+ private async _startPicking() {
+ this._cancelPicking();
+ const recorder = await Recorder.forContext(this._context, { omitCallTracking: true });
+ this._recorder = recorder;
+ this._recorderListeners.push(
+ eventsHelper.addEventListener(recorder, RecorderEvent.ElementPicked, (elementInfo: ElementInfo) => {
+ this._emit('elementPicked', { selector: elementInfo.selector });
+ this._cancelPicking();
+ }),
+ );
+ recorder.setMode('inspecting');
+ }
+
+ private _cancelPicking() {
+ eventsHelper.removeEventListeners(this._recorderListeners);
+ this._recorderListeners = [];
+ if (this._recorder) {
+ this._recorder.setMode('none');
+ this._recorder = null;
+ }
+ }
+
private _sendCachedState() {
if (this._lastFrameData && this._lastViewportSize)
this._emit('frame', { data: this._lastFrameData, viewportWidth: this._lastViewportSize.width, viewportHeight: this._lastViewportSize.height });
@@ -280,9 +326,33 @@ class DevToolsConnection implements Transport, DevToolsChannel {
title: await page.mainFrame().title().catch(() => '') || page.mainFrame().url(),
url: page.mainFrame().url(),
selected: page === this.selectedPage,
+ inspectorUrl: this._inspectorUrl(page),
})));
}
+ private _devtoolsURL() {
+ if (this._context._browser.options.wsEndpoint) {
+ const url = new URL('/devtools/', this._context._browser.options.wsEndpoint);
+ if (url.protocol === 'ws:')
+ url.protocol = 'http:';
+ if (url.protocol === 'wss:')
+ url.protocol = 'https:';
+ return url;
+ }
+
+ return new URL(`https://chrome-devtools-frontend.appspot.com/serve_rev/@${(this._context._browser as CRBrowser)._revision}/`);
+ }
+
+ private _inspectorUrl(page: Page): string | undefined {
+ if (!(page.delegate instanceof CRPage))
+ return;
+ const inspector = new URL('./devtools_app.html', this._devtoolsURL());
+ const cdp = new URL(this._controllerUrl);
+ cdp.searchParams.set('cdp', page.guid);
+ inspector.searchParams.set('ws', `${cdp.host}${cdp.pathname}${cdp.search}`);
+ return inspector.toString();
+ }
+
private _sendTabList() {
this._tabList().then(tabs => this._emit('tabs', { tabs }));
}
@@ -294,3 +364,57 @@ class DevToolsConnection implements Transport, DevToolsChannel {
this._emit('frame', { data, viewportWidth, viewportHeight });
}
}
+
+class CDPConnection implements Transport {
+ sendEvent?: (method: string, params: any) => void;
+ close?: () => void;
+
+ private _context: BrowserContext;
+ private _pageId: string;
+ private _rawSession: CDPSession | null = null;
+ private _rawSessionListeners: RegisteredListener[] = [];
+ private _initializePromise: Promise | undefined;
+
+ constructor(context: BrowserContext, pageId: string) {
+ this._context = context;
+ this._pageId = pageId;
+ }
+
+ onconnect() {
+ this._initializePromise = this._initializeRawSession(this._pageId);
+ }
+
+ async dispatch(method: string, params: any): Promise {
+ await this._initializePromise;
+ if (!this._rawSession)
+ throw new Error('CDP session is not initialized');
+ return await this._rawSession.send(method, params);
+ }
+
+ onclose() {
+ eventsHelper.removeEventListeners(this._rawSessionListeners);
+ if (this._rawSession)
+ void this._rawSession.detach().catch(() => {});
+ this._rawSession = null;
+ this._initializePromise = undefined;
+ }
+
+ private async _initializeRawSession(pageId: string) {
+ const page = this._context.pages().find(p => p.guid === pageId);
+ if (!page) {
+ this.close?.();
+ return;
+ }
+ const crContext = this._context as CRBrowserContext;
+ const session = await crContext.newCDPSession(page);
+ this._rawSession = session;
+ this._rawSessionListeners = [
+ eventsHelper.addEventListener(session, CDPSession.Events.Event, (event: { method: string, params?: any }) => {
+ this.sendEvent?.(event.method, event.params);
+ }),
+ eventsHelper.addEventListener(session, CDPSession.Events.Closed, () => {
+ this.close?.();
+ }),
+ ];
+ }
+}
diff --git a/packages/playwright-core/src/server/utils/httpServer.ts b/packages/playwright-core/src/server/utils/httpServer.ts
index c001b0f0ad72c..e75fcce341cb7 100644
--- a/packages/playwright-core/src/server/utils/httpServer.ts
+++ b/packages/playwright-core/src/server/utils/httpServer.ts
@@ -63,12 +63,13 @@ export class HttpServer {
return this._port;
}
- createWebSocket(transportFactory: () => Transport, guid?: string) {
+ createWebSocket(transportFactory: (url: URL) => Transport, guid?: string) {
assert(!this._wsGuid, 'can only create one main websocket transport per server');
this._wsGuid = guid || createGuid();
const wss = new wsServer({ server: this._server, path: '/' + this._wsGuid });
- wss.on('connection', ws => {
- const transport = transportFactory();
+ wss.on('connection', (ws, request) => {
+ const url = new URL(request.url ?? '/', 'http://localhost');
+ const transport = transportFactory(url);
transport.sendEvent = (method, params) => ws.send(JSON.stringify({ method, params }));
transport.close = () => ws.close();
transport.onconnect();
diff --git a/packages/playwright-core/types/protocol.d.ts b/packages/playwright-core/types/protocol.d.ts
index 265faf3fcc13f..c87f3556c207c 100644
--- a/packages/playwright-core/types/protocol.d.ts
+++ b/packages/playwright-core/types/protocol.d.ts
@@ -695,7 +695,7 @@ percentage [0 - 100] for scroll driven animations
export interface AffectedFrame {
frameId: Page.FrameId;
}
- export type CookieExclusionReason = "ExcludeSameSiteUnspecifiedTreatedAsLax"|"ExcludeSameSiteNoneInsecure"|"ExcludeSameSiteLax"|"ExcludeSameSiteStrict"|"ExcludeInvalidSameParty"|"ExcludeSamePartyCrossPartyContext"|"ExcludeDomainNonASCII"|"ExcludeThirdPartyCookieBlockedInFirstPartySet"|"ExcludeThirdPartyPhaseout"|"ExcludePortMismatch"|"ExcludeSchemeMismatch";
+ export type CookieExclusionReason = "ExcludeSameSiteUnspecifiedTreatedAsLax"|"ExcludeSameSiteNoneInsecure"|"ExcludeSameSiteLax"|"ExcludeSameSiteStrict"|"ExcludeDomainNonASCII"|"ExcludeThirdPartyCookieBlockedInFirstPartySet"|"ExcludeThirdPartyPhaseout"|"ExcludePortMismatch"|"ExcludeSchemeMismatch";
export type CookieWarningReason = "WarnSameSiteUnspecifiedCrossSiteContext"|"WarnSameSiteNoneInsecure"|"WarnSameSiteUnspecifiedLaxAllowUnsafe"|"WarnSameSiteStrictLaxDowngradeStrict"|"WarnSameSiteStrictCrossDowngradeStrict"|"WarnSameSiteStrictCrossDowngradeLax"|"WarnSameSiteLaxCrossDowngradeStrict"|"WarnSameSiteLaxCrossDowngradeLax"|"WarnAttributeValueExceedsMaxSize"|"WarnDomainNonASCII"|"WarnThirdPartyPhaseout"|"WarnCrossSiteRedirectDowngradeChangesInclusion"|"WarnDeprecationTrialMetadata"|"WarnThirdPartyCookieHeuristic";
export type CookieOperation = "SetCookie"|"ReadCookie";
/**
@@ -863,6 +863,7 @@ CORS RFC1918 enforcement.
export type SharedDictionaryError = "UseErrorCrossOriginNoCorsRequest"|"UseErrorDictionaryLoadFailure"|"UseErrorMatchingDictionaryNotUsed"|"UseErrorUnexpectedContentDictionaryHeader"|"WriteErrorCossOriginNoCorsRequest"|"WriteErrorDisallowedBySettings"|"WriteErrorExpiredResponse"|"WriteErrorFeatureDisabled"|"WriteErrorInsufficientResources"|"WriteErrorInvalidMatchField"|"WriteErrorInvalidStructuredHeader"|"WriteErrorInvalidTTLField"|"WriteErrorNavigationRequest"|"WriteErrorNoMatchField"|"WriteErrorNonIntegerTTLField"|"WriteErrorNonListMatchDestField"|"WriteErrorNonSecureContext"|"WriteErrorNonStringIdField"|"WriteErrorNonStringInMatchDestList"|"WriteErrorNonStringMatchField"|"WriteErrorNonTokenTypeField"|"WriteErrorRequestAborted"|"WriteErrorShuttingDown"|"WriteErrorTooLongIdField"|"WriteErrorUnsupportedType";
export type SRIMessageSignatureError = "MissingSignatureHeader"|"MissingSignatureInputHeader"|"InvalidSignatureHeader"|"InvalidSignatureInputHeader"|"SignatureHeaderValueIsNotByteSequence"|"SignatureHeaderValueIsParameterized"|"SignatureHeaderValueIsIncorrectLength"|"SignatureInputHeaderMissingLabel"|"SignatureInputHeaderValueNotInnerList"|"SignatureInputHeaderValueMissingComponents"|"SignatureInputHeaderInvalidComponentType"|"SignatureInputHeaderInvalidComponentName"|"SignatureInputHeaderInvalidHeaderComponentParameter"|"SignatureInputHeaderInvalidDerivedComponentParameter"|"SignatureInputHeaderKeyIdLength"|"SignatureInputHeaderInvalidParameter"|"SignatureInputHeaderMissingRequiredParameters"|"ValidationFailedSignatureExpired"|"ValidationFailedInvalidLength"|"ValidationFailedSignatureMismatch"|"ValidationFailedIntegrityMismatch";
export type UnencodedDigestError = "MalformedDictionary"|"UnknownAlgorithm"|"IncorrectDigestType"|"IncorrectDigestLength";
+ export type ConnectionAllowlistError = "InvalidHeader"|"MoreThanOneList"|"ItemNotInnerList"|"InvalidAllowlistItemType"|"ReportingEndpointNotToken"|"InvalidUrlPattern";
/**
* Details for issues around "Attribution Reporting API" usage.
Explainer: https://github.com/WICG/attribution-reporting-api
@@ -906,6 +907,10 @@ instead of "limited-quirks".
error: UnencodedDigestError;
request: AffectedRequest;
}
+ export interface ConnectionAllowlistIssueDetails {
+ error: ConnectionAllowlistError;
+ request: AffectedRequest;
+ }
export type GenericIssueErrorType = "FormLabelForNameError"|"FormDuplicateIdForInputError"|"FormInputWithNoLabelError"|"FormAutocompleteAttributeEmptyError"|"FormEmptyIdAndNameAttributesForInputError"|"FormAriaLabelledByToNonExistingIdError"|"FormInputAssignedAutocompleteValueToIdOrNameAttributeError"|"FormLabelHasNeitherForNorNestedInputError"|"FormLabelForMatchesNonExistingIdError"|"FormInputHasWrongButWellIntendedAutocompleteValueError"|"ResponseWasBlockedByORB"|"NavigationEntryMarkedSkippable"|"AutofillAndManualTextPolicyControlledFeaturesInfo"|"AutofillPolicyControlledFeatureInfo"|"ManualTextPolicyControlledFeatureInfo";
/**
* Depending on the concrete errorType, different properties are set.
@@ -1108,7 +1113,7 @@ Used for messages that reference a specific permission name
optional fields in InspectorIssueDetails to convey more specific
information about the kind of issue.
*/
- export type InspectorIssueCode = "CookieIssue"|"MixedContentIssue"|"BlockedByResponseIssue"|"HeavyAdIssue"|"ContentSecurityPolicyIssue"|"SharedArrayBufferIssue"|"LowTextContrastIssue"|"CorsIssue"|"AttributionReportingIssue"|"QuirksModeIssue"|"PartitioningBlobURLIssue"|"NavigatorUserAgentIssue"|"GenericIssue"|"DeprecationIssue"|"ClientHintIssue"|"FederatedAuthRequestIssue"|"BounceTrackingIssue"|"CookieDeprecationMetadataIssue"|"StylesheetLoadingIssue"|"FederatedAuthUserInfoRequestIssue"|"PropertyRuleIssue"|"SharedDictionaryIssue"|"ElementAccessibilityIssue"|"SRIMessageSignatureIssue"|"UnencodedDigestIssue"|"UserReidentificationIssue"|"PermissionElementIssue";
+ export type InspectorIssueCode = "CookieIssue"|"MixedContentIssue"|"BlockedByResponseIssue"|"HeavyAdIssue"|"ContentSecurityPolicyIssue"|"SharedArrayBufferIssue"|"LowTextContrastIssue"|"CorsIssue"|"AttributionReportingIssue"|"QuirksModeIssue"|"PartitioningBlobURLIssue"|"NavigatorUserAgentIssue"|"GenericIssue"|"DeprecationIssue"|"ClientHintIssue"|"FederatedAuthRequestIssue"|"BounceTrackingIssue"|"CookieDeprecationMetadataIssue"|"StylesheetLoadingIssue"|"FederatedAuthUserInfoRequestIssue"|"PropertyRuleIssue"|"SharedDictionaryIssue"|"ElementAccessibilityIssue"|"SRIMessageSignatureIssue"|"UnencodedDigestIssue"|"ConnectionAllowlistIssue"|"UserReidentificationIssue"|"PermissionElementIssue";
/**
* This struct holds a list of optional fields with additional information
specific to the kind of issue. When adding a new issue code, please also
@@ -1140,6 +1145,7 @@ add a new optional field to this type.
elementAccessibilityIssueDetails?: ElementAccessibilityIssueDetails;
sriMessageSignatureIssueDetails?: SRIMessageSignatureIssueDetails;
unencodedDigestIssueDetails?: UnencodedDigestIssueDetails;
+ connectionAllowlistIssueDetails?: ConnectionAllowlistIssueDetails;
userReidentificationIssueDetails?: UserReidentificationIssueDetails;
permissionElementIssueDetails?: PermissionElementIssueDetails;
}
@@ -3446,6 +3452,8 @@ they were property's declaration. If a value cannot be parsed according
to the provided property syntax, the value is parsed using combined
syntax as if null `propertyName` was provided. If the value cannot be
resolved even then, return the provided value without any changes.
+Note: this function currently does not resolve CSS random() function,
+it returns unmodified random() function parts.`
*/
export type resolveValuesParameters = {
/**
@@ -7479,6 +7487,23 @@ reported through Debugger domain, similarly to regular breakpoints being hit.
export type StorageArea = "session"|"local"|"sync"|"managed";
+ /**
+ * Runs an extension default action.
+Available if the client is connected using the --remote-debugging-pipe
+flag and the --enable-unsafe-extension-debugging flag is set.
+ */
+ export type triggerActionParameters = {
+ /**
+ * Extension id.
+ */
+ id: string;
+ /**
+ * A tab target ID to trigger the default extension action on.
+ */
+ targetId: string;
+ }
+ export type triggerActionReturnValue = {
+ }
/**
* Installs an unpacked extension from the filesystem similar to
--load-extension CLI flags. Returns extension ID once the extension
@@ -7491,6 +7516,10 @@ flag is set.
* Absolute file path.
*/
path: string;
+ /**
+ * Enable the extension in incognito
+ */
+ enableInIncognito?: boolean;
}
export type loadUnpackedReturnValue = {
/**
@@ -10274,7 +10303,7 @@ applicable or not known.
/**
* The reason why request was blocked.
*/
- export type CorsError = "DisallowedByMode"|"InvalidResponse"|"WildcardOriginNotAllowed"|"MissingAllowOriginHeader"|"MultipleAllowOriginValues"|"InvalidAllowOriginValue"|"AllowOriginMismatch"|"InvalidAllowCredentials"|"CorsDisabledScheme"|"PreflightInvalidStatus"|"PreflightDisallowedRedirect"|"PreflightWildcardOriginNotAllowed"|"PreflightMissingAllowOriginHeader"|"PreflightMultipleAllowOriginValues"|"PreflightInvalidAllowOriginValue"|"PreflightAllowOriginMismatch"|"PreflightInvalidAllowCredentials"|"PreflightMissingAllowExternal"|"PreflightInvalidAllowExternal"|"PreflightMissingAllowPrivateNetwork"|"PreflightInvalidAllowPrivateNetwork"|"InvalidAllowMethodsPreflightResponse"|"InvalidAllowHeadersPreflightResponse"|"MethodDisallowedByPreflightResponse"|"HeaderDisallowedByPreflightResponse"|"RedirectContainsCredentials"|"InsecurePrivateNetwork"|"InvalidPrivateNetworkAccess"|"UnexpectedPrivateNetworkAccess"|"NoCorsRedirectModeNotFollow"|"PreflightMissingPrivateNetworkAccessId"|"PreflightMissingPrivateNetworkAccessName"|"PrivateNetworkAccessPermissionUnavailable"|"PrivateNetworkAccessPermissionDenied"|"LocalNetworkAccessPermissionDenied";
+ export type CorsError = "DisallowedByMode"|"InvalidResponse"|"WildcardOriginNotAllowed"|"MissingAllowOriginHeader"|"MultipleAllowOriginValues"|"InvalidAllowOriginValue"|"AllowOriginMismatch"|"InvalidAllowCredentials"|"CorsDisabledScheme"|"PreflightInvalidStatus"|"PreflightDisallowedRedirect"|"PreflightWildcardOriginNotAllowed"|"PreflightMissingAllowOriginHeader"|"PreflightMultipleAllowOriginValues"|"PreflightInvalidAllowOriginValue"|"PreflightAllowOriginMismatch"|"PreflightInvalidAllowCredentials"|"PreflightMissingAllowExternal"|"PreflightInvalidAllowExternal"|"InvalidAllowMethodsPreflightResponse"|"InvalidAllowHeadersPreflightResponse"|"MethodDisallowedByPreflightResponse"|"HeaderDisallowedByPreflightResponse"|"RedirectContainsCredentials"|"InsecureLocalNetwork"|"InvalidLocalNetworkAccess"|"NoCorsRedirectModeNotFollow"|"LocalNetworkAccessPermissionDenied";
export interface CorsErrorStatus {
corsError: CorsError;
failedParameter: string;
@@ -10618,10 +10647,6 @@ JSON (±Inf).
* Cookie Priority
*/
priority: CookiePriority;
- /**
- * True if cookie is SameParty.
- */
- sameParty: boolean;
/**
* Cookie source scheme type.
*/
@@ -10644,11 +10669,11 @@ This is a temporary ability and it will be removed in the future.
/**
* Types of reasons why a cookie may not be stored from a response.
*/
- export type SetCookieBlockedReason = "SecureOnly"|"SameSiteStrict"|"SameSiteLax"|"SameSiteUnspecifiedTreatedAsLax"|"SameSiteNoneInsecure"|"UserPreferences"|"ThirdPartyPhaseout"|"ThirdPartyBlockedInFirstPartySet"|"SyntaxError"|"SchemeNotSupported"|"OverwriteSecure"|"InvalidDomain"|"InvalidPrefix"|"UnknownError"|"SchemefulSameSiteStrict"|"SchemefulSameSiteLax"|"SchemefulSameSiteUnspecifiedTreatedAsLax"|"SamePartyFromCrossPartyContext"|"SamePartyConflictsWithOtherAttributes"|"NameValuePairExceedsMaxSize"|"DisallowedCharacter"|"NoCookieContent";
+ export type SetCookieBlockedReason = "SecureOnly"|"SameSiteStrict"|"SameSiteLax"|"SameSiteUnspecifiedTreatedAsLax"|"SameSiteNoneInsecure"|"UserPreferences"|"ThirdPartyPhaseout"|"ThirdPartyBlockedInFirstPartySet"|"SyntaxError"|"SchemeNotSupported"|"OverwriteSecure"|"InvalidDomain"|"InvalidPrefix"|"UnknownError"|"SchemefulSameSiteStrict"|"SchemefulSameSiteLax"|"SchemefulSameSiteUnspecifiedTreatedAsLax"|"NameValuePairExceedsMaxSize"|"DisallowedCharacter"|"NoCookieContent";
/**
* Types of reasons why a cookie may not be sent with a request.
*/
- export type CookieBlockedReason = "SecureOnly"|"NotOnPath"|"DomainMismatch"|"SameSiteStrict"|"SameSiteLax"|"SameSiteUnspecifiedTreatedAsLax"|"SameSiteNoneInsecure"|"UserPreferences"|"ThirdPartyPhaseout"|"ThirdPartyBlockedInFirstPartySet"|"UnknownError"|"SchemefulSameSiteStrict"|"SchemefulSameSiteLax"|"SchemefulSameSiteUnspecifiedTreatedAsLax"|"SamePartyFromCrossPartyContext"|"NameValuePairExceedsMaxSize"|"PortMismatch"|"SchemeMismatch"|"AnonymousContext";
+ export type CookieBlockedReason = "SecureOnly"|"NotOnPath"|"DomainMismatch"|"SameSiteStrict"|"SameSiteLax"|"SameSiteUnspecifiedTreatedAsLax"|"SameSiteNoneInsecure"|"UserPreferences"|"ThirdPartyPhaseout"|"ThirdPartyBlockedInFirstPartySet"|"UnknownError"|"SchemefulSameSiteStrict"|"SchemefulSameSiteLax"|"SchemefulSameSiteUnspecifiedTreatedAsLax"|"NameValuePairExceedsMaxSize"|"PortMismatch"|"SchemeMismatch"|"AnonymousContext";
/**
* Types of reasons why a cookie should have been blocked by 3PCD but is exempted for the request.
*/
@@ -10755,10 +10780,6 @@ default domain, path, source port, and source scheme values of the created cooki
* Cookie Priority.
*/
priority?: CookiePriority;
- /**
- * True if cookie is SameParty.
- */
- sameParty?: boolean;
/**
* Cookie source scheme type.
*/
@@ -11065,7 +11086,7 @@ Expected to be unsigned integer.
*/
remotePort?: number;
}
- export type PrivateNetworkRequestPolicy = "Allow"|"BlockFromInsecureToMorePrivate"|"WarnFromInsecureToMorePrivate"|"PermissionBlock"|"PermissionWarn";
+ export type LocalNetworkAccessRequestPolicy = "Allow"|"BlockFromInsecureToMorePrivate"|"WarnFromInsecureToMorePrivate"|"PermissionBlock"|"PermissionWarn";
export type IPAddressSpace = "Loopback"|"Local"|"Public"|"Unknown";
export interface ConnectTiming {
/**
@@ -11078,7 +11099,7 @@ the same request (but not for redirected requests).
export interface ClientSecurityState {
initiatorIsSecureContext: boolean;
initiatorIPAddressSpace: IPAddressSpace;
- privateNetworkRequestPolicy: PrivateNetworkRequestPolicy;
+ localNetworkAccessRequestPolicy: LocalNetworkAccessRequestPolicy;
}
export type CrossOriginOpenerPolicyValue = "SameOrigin"|"SameOriginAllowPopups"|"RestrictProperties"|"UnsafeNone"|"SameOriginPlusCoep"|"RestrictPropertiesPlusCoep"|"NoopenerAllowPopups";
export interface CrossOriginOpenerPolicyStatus {
@@ -11165,6 +11186,19 @@ the same request (but not for redirected requests).
*/
id: string;
}
+ /**
+ * How a device bound session was used during a request.
+ */
+ export interface DeviceBoundSessionWithUsage {
+ /**
+ * The key for the session.
+ */
+ sessionKey: DeviceBoundSessionKey;
+ /**
+ * How the session was used (or not used).
+ */
+ usage: "NotInScope"|"InScopeRefreshNotYetNeeded"|"InScopeRefreshNotAllowed"|"ProactiveRefreshNotPossible"|"ProactiveRefreshAttempted"|"Deferred";
+ }
/**
* A device bound session's cookie craving.
*/
@@ -11967,6 +12001,10 @@ the request and the ones not sent; the latter are distinguished by having blocke
* Connection timing information for the request.
*/
connectTiming: ConnectTiming;
+ /**
+ * How the request site's device bound sessions were used during this request.
+ */
+ deviceBoundSessionUsages?: DeviceBoundSessionWithUsage[];
/**
* The client security state set for the request.
*/
@@ -12663,10 +12701,6 @@ default domain, path, source port, and source scheme values of the created cooki
* Cookie Priority type.
*/
priority?: CookiePriority;
- /**
- * True if cookie is SameParty.
- */
- sameParty?: boolean;
/**
* Cookie source scheme type.
*/
@@ -13261,6 +13295,16 @@ Page reload is required before the new cookie behavior will be observed
maskColor?: DOM.RGBA;
}
export type InspectMode = "searchForNode"|"searchForUAShadowDOM"|"captureAreaScreenshot"|"none";
+ export interface InspectedElementAnchorConfig {
+ /**
+ * Identifier of the node to highlight.
+ */
+ nodeId?: DOM.NodeId;
+ /**
+ * Identifier of the backend node to highlight.
+ */
+ backendNodeId?: DOM.BackendNodeId;
+ }
/**
* Fired when the node should be inspected. This happens after call to `setInspectMode` or when
@@ -13287,6 +13331,24 @@ user manually inspects an element.
*/
viewport: Page.Viewport;
}
+ /**
+ * Fired when user asks to show the Inspect panel.
+ */
+ export type inspectPanelShowRequestedPayload = {
+ /**
+ * Id of the node to show in the panel.
+ */
+ backendNodeId: DOM.BackendNodeId;
+ }
+ /**
+ * Fired when user asks to restore the Inspected Element floating window.
+ */
+ export type inspectedElementWindowRestoredPayload = {
+ /**
+ * Id of the node to restore the floating window for.
+ */
+ backendNodeId: DOM.BackendNodeId;
+ }
/**
* Fired when user cancels the inspect mode.
*/
@@ -13594,6 +13656,14 @@ Backend then generates 'inspectNodeRequested' event upon element selection.
}
export type setShowContainerQueryOverlaysReturnValue = {
}
+ export type setShowInspectedElementAnchorParameters = {
+ /**
+ * Node identifier for which to show an anchor for.
+ */
+ inspectedElementAnchorConfig: InspectedElementAnchorConfig;
+ }
+ export type setShowInspectedElementAnchorReturnValue = {
+ }
/**
* Requests that backend shows paint rectangles
*/
@@ -14531,7 +14601,7 @@ https://github.com/WICG/manifest-incubations/blob/gh-pages/scope_extensions-expl
/**
* List of not restored reasons for back-forward cache.
*/
- export type BackForwardCacheNotRestoredReason = "NotPrimaryMainFrame"|"BackForwardCacheDisabled"|"RelatedActiveContentsExist"|"HTTPStatusNotOK"|"SchemeNotHTTPOrHTTPS"|"Loading"|"WasGrantedMediaAccess"|"DisableForRenderFrameHostCalled"|"DomainNotAllowed"|"HTTPMethodNotGET"|"SubframeIsNavigating"|"Timeout"|"CacheLimit"|"JavaScriptExecution"|"RendererProcessKilled"|"RendererProcessCrashed"|"SchedulerTrackedFeatureUsed"|"ConflictingBrowsingInstance"|"CacheFlushed"|"ServiceWorkerVersionActivation"|"SessionRestored"|"ServiceWorkerPostMessage"|"EnteredBackForwardCacheBeforeServiceWorkerHostAdded"|"RenderFrameHostReused_SameSite"|"RenderFrameHostReused_CrossSite"|"ServiceWorkerClaim"|"IgnoreEventAndEvict"|"HaveInnerContents"|"TimeoutPuttingInCache"|"BackForwardCacheDisabledByLowMemory"|"BackForwardCacheDisabledByCommandLine"|"NetworkRequestDatapipeDrainedAsBytesConsumer"|"NetworkRequestRedirected"|"NetworkRequestTimeout"|"NetworkExceedsBufferLimit"|"NavigationCancelledWhileRestoring"|"NotMostRecentNavigationEntry"|"BackForwardCacheDisabledForPrerender"|"UserAgentOverrideDiffers"|"ForegroundCacheLimit"|"BrowsingInstanceNotSwapped"|"BackForwardCacheDisabledForDelegate"|"UnloadHandlerExistsInMainFrame"|"UnloadHandlerExistsInSubFrame"|"ServiceWorkerUnregistration"|"CacheControlNoStore"|"CacheControlNoStoreCookieModified"|"CacheControlNoStoreHTTPOnlyCookieModified"|"NoResponseHead"|"Unknown"|"ActivationNavigationsDisallowedForBug1234857"|"ErrorDocument"|"FencedFramesEmbedder"|"CookieDisabled"|"HTTPAuthRequired"|"CookieFlushed"|"BroadcastChannelOnMessage"|"WebViewSettingsChanged"|"WebViewJavaScriptObjectChanged"|"WebViewMessageListenerInjected"|"WebViewSafeBrowsingAllowlistChanged"|"WebViewDocumentStartJavascriptChanged"|"WebSocket"|"WebTransport"|"WebRTC"|"MainResourceHasCacheControlNoStore"|"MainResourceHasCacheControlNoCache"|"SubresourceHasCacheControlNoStore"|"SubresourceHasCacheControlNoCache"|"ContainsPlugins"|"DocumentLoaded"|"OutstandingNetworkRequestOthers"|"RequestedMIDIPermission"|"RequestedAudioCapturePermission"|"RequestedVideoCapturePermission"|"RequestedBackForwardCacheBlockedSensors"|"RequestedBackgroundWorkPermission"|"BroadcastChannel"|"WebXR"|"SharedWorker"|"SharedWorkerMessage"|"SharedWorkerWithNoActiveClient"|"WebLocks"|"WebHID"|"WebBluetooth"|"WebShare"|"RequestedStorageAccessGrant"|"WebNfc"|"OutstandingNetworkRequestFetch"|"OutstandingNetworkRequestXHR"|"AppBanner"|"Printing"|"WebDatabase"|"PictureInPicture"|"SpeechRecognizer"|"IdleManager"|"PaymentManager"|"SpeechSynthesis"|"KeyboardLock"|"WebOTPService"|"OutstandingNetworkRequestDirectSocket"|"InjectedJavascript"|"InjectedStyleSheet"|"KeepaliveRequest"|"IndexedDBEvent"|"Dummy"|"JsNetworkRequestReceivedCacheControlNoStoreResource"|"WebRTCUsedWithCCNS"|"WebTransportUsedWithCCNS"|"WebSocketUsedWithCCNS"|"SmartCard"|"LiveMediaStreamTrack"|"UnloadHandler"|"ParserAborted"|"ContentSecurityHandler"|"ContentWebAuthenticationAPI"|"ContentFileChooser"|"ContentSerial"|"ContentFileSystemAccess"|"ContentMediaDevicesDispatcherHost"|"ContentWebBluetooth"|"ContentWebUSB"|"ContentMediaSessionService"|"ContentScreenReader"|"ContentDiscarded"|"EmbedderPopupBlockerTabHelper"|"EmbedderSafeBrowsingTriggeredPopupBlocker"|"EmbedderSafeBrowsingThreatDetails"|"EmbedderAppBannerManager"|"EmbedderDomDistillerViewerSource"|"EmbedderDomDistillerSelfDeletingRequestDelegate"|"EmbedderOomInterventionTabHelper"|"EmbedderOfflinePage"|"EmbedderChromePasswordManagerClientBindCredentialManager"|"EmbedderPermissionRequestManager"|"EmbedderModalDialog"|"EmbedderExtensions"|"EmbedderExtensionMessaging"|"EmbedderExtensionMessagingForOpenPort"|"EmbedderExtensionSentMessageToCachedFrame"|"RequestedByWebViewClient"|"PostMessageByWebViewClient"|"CacheControlNoStoreDeviceBoundSessionTerminated"|"CacheLimitPrunedOnModerateMemoryPressure"|"CacheLimitPrunedOnCriticalMemoryPressure";
+ export type BackForwardCacheNotRestoredReason = "NotPrimaryMainFrame"|"BackForwardCacheDisabled"|"RelatedActiveContentsExist"|"HTTPStatusNotOK"|"SchemeNotHTTPOrHTTPS"|"Loading"|"WasGrantedMediaAccess"|"DisableForRenderFrameHostCalled"|"DomainNotAllowed"|"HTTPMethodNotGET"|"SubframeIsNavigating"|"Timeout"|"CacheLimit"|"JavaScriptExecution"|"RendererProcessKilled"|"RendererProcessCrashed"|"SchedulerTrackedFeatureUsed"|"ConflictingBrowsingInstance"|"CacheFlushed"|"ServiceWorkerVersionActivation"|"SessionRestored"|"ServiceWorkerPostMessage"|"EnteredBackForwardCacheBeforeServiceWorkerHostAdded"|"RenderFrameHostReused_SameSite"|"RenderFrameHostReused_CrossSite"|"ServiceWorkerClaim"|"IgnoreEventAndEvict"|"HaveInnerContents"|"TimeoutPuttingInCache"|"BackForwardCacheDisabledByLowMemory"|"BackForwardCacheDisabledByCommandLine"|"NetworkRequestDatapipeDrainedAsBytesConsumer"|"NetworkRequestRedirected"|"NetworkRequestTimeout"|"NetworkExceedsBufferLimit"|"NavigationCancelledWhileRestoring"|"NotMostRecentNavigationEntry"|"BackForwardCacheDisabledForPrerender"|"UserAgentOverrideDiffers"|"ForegroundCacheLimit"|"BrowsingInstanceNotSwapped"|"BackForwardCacheDisabledForDelegate"|"UnloadHandlerExistsInMainFrame"|"UnloadHandlerExistsInSubFrame"|"ServiceWorkerUnregistration"|"CacheControlNoStore"|"CacheControlNoStoreCookieModified"|"CacheControlNoStoreHTTPOnlyCookieModified"|"NoResponseHead"|"Unknown"|"ActivationNavigationsDisallowedForBug1234857"|"ErrorDocument"|"FencedFramesEmbedder"|"CookieDisabled"|"HTTPAuthRequired"|"CookieFlushed"|"BroadcastChannelOnMessage"|"WebViewSettingsChanged"|"WebViewJavaScriptObjectChanged"|"WebViewMessageListenerInjected"|"WebViewSafeBrowsingAllowlistChanged"|"WebViewDocumentStartJavascriptChanged"|"WebSocket"|"WebTransport"|"WebRTC"|"MainResourceHasCacheControlNoStore"|"MainResourceHasCacheControlNoCache"|"SubresourceHasCacheControlNoStore"|"SubresourceHasCacheControlNoCache"|"ContainsPlugins"|"DocumentLoaded"|"OutstandingNetworkRequestOthers"|"RequestedMIDIPermission"|"RequestedAudioCapturePermission"|"RequestedVideoCapturePermission"|"RequestedBackForwardCacheBlockedSensors"|"RequestedBackgroundWorkPermission"|"BroadcastChannel"|"WebXR"|"SharedWorker"|"SharedWorkerMessage"|"SharedWorkerWithNoActiveClient"|"WebLocks"|"WebLocksContention"|"WebHID"|"WebBluetooth"|"WebShare"|"RequestedStorageAccessGrant"|"WebNfc"|"OutstandingNetworkRequestFetch"|"OutstandingNetworkRequestXHR"|"AppBanner"|"Printing"|"WebDatabase"|"PictureInPicture"|"SpeechRecognizer"|"IdleManager"|"PaymentManager"|"SpeechSynthesis"|"KeyboardLock"|"WebOTPService"|"OutstandingNetworkRequestDirectSocket"|"InjectedJavascript"|"InjectedStyleSheet"|"KeepaliveRequest"|"IndexedDBEvent"|"Dummy"|"JsNetworkRequestReceivedCacheControlNoStoreResource"|"WebRTCUsedWithCCNS"|"WebTransportUsedWithCCNS"|"WebSocketUsedWithCCNS"|"SmartCard"|"LiveMediaStreamTrack"|"UnloadHandler"|"ParserAborted"|"ContentSecurityHandler"|"ContentWebAuthenticationAPI"|"ContentFileChooser"|"ContentSerial"|"ContentFileSystemAccess"|"ContentMediaDevicesDispatcherHost"|"ContentWebBluetooth"|"ContentWebUSB"|"ContentMediaSessionService"|"ContentScreenReader"|"ContentDiscarded"|"EmbedderPopupBlockerTabHelper"|"EmbedderSafeBrowsingTriggeredPopupBlocker"|"EmbedderSafeBrowsingThreatDetails"|"EmbedderAppBannerManager"|"EmbedderDomDistillerViewerSource"|"EmbedderDomDistillerSelfDeletingRequestDelegate"|"EmbedderOomInterventionTabHelper"|"EmbedderOfflinePage"|"EmbedderChromePasswordManagerClientBindCredentialManager"|"EmbedderPermissionRequestManager"|"EmbedderModalDialog"|"EmbedderExtensions"|"EmbedderExtensionMessaging"|"EmbedderExtensionMessagingForOpenPort"|"EmbedderExtensionSentMessageToCachedFrame"|"RequestedByWebViewClient"|"PostMessageByWebViewClient"|"CacheControlNoStoreDeviceBoundSessionTerminated"|"CacheLimitPrunedOnModerateMemoryPressure"|"CacheLimitPrunedOnCriticalMemoryPressure";
/**
* Types of not restored reasons for back-forward cache.
*/
@@ -16771,6 +16841,407 @@ For cached script it is the last time the cache entry was validated.
}
}
+ export namespace SmartCardEmulation {
+ /**
+ * Indicates the PC/SC error code.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__ErrorCodes.html
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/secauthn/authentication-return-values
+ */
+ export type ResultCode = "success"|"removed-card"|"reset-card"|"unpowered-card"|"unresponsive-card"|"unsupported-card"|"reader-unavailable"|"sharing-violation"|"not-transacted"|"no-smartcard"|"proto-mismatch"|"system-cancelled"|"not-ready"|"cancelled"|"insufficient-buffer"|"invalid-handle"|"invalid-parameter"|"invalid-value"|"no-memory"|"timeout"|"unknown-reader"|"unsupported-feature"|"no-readers-available"|"service-stopped"|"no-service"|"comm-error"|"internal-error"|"server-too-busy"|"unexpected"|"shutdown"|"unknown-card"|"unknown";
+ /**
+ * Maps to the |SCARD_SHARE_*| values.
+ */
+ export type ShareMode = "shared"|"exclusive"|"direct";
+ /**
+ * Indicates what the reader should do with the card.
+ */
+ export type Disposition = "leave-card"|"reset-card"|"unpower-card"|"eject-card";
+ /**
+ * Maps to |SCARD_*| connection state values.
+ */
+ export type ConnectionState = "absent"|"present"|"swallowed"|"powered"|"negotiable"|"specific";
+ /**
+ * Maps to the |SCARD_STATE_*| flags.
+ */
+ export interface ReaderStateFlags {
+ unaware?: boolean;
+ ignore?: boolean;
+ changed?: boolean;
+ unknown?: boolean;
+ unavailable?: boolean;
+ empty?: boolean;
+ present?: boolean;
+ exclusive?: boolean;
+ inuse?: boolean;
+ mute?: boolean;
+ unpowered?: boolean;
+ }
+ /**
+ * Maps to the |SCARD_PROTOCOL_*| flags.
+ */
+ export interface ProtocolSet {
+ t0?: boolean;
+ t1?: boolean;
+ raw?: boolean;
+ }
+ /**
+ * Maps to the |SCARD_PROTOCOL_*| values.
+ */
+ export type Protocol = "t0"|"t1"|"raw";
+ export interface ReaderStateIn {
+ reader: string;
+ currentState: ReaderStateFlags;
+ currentInsertionCount: number;
+ }
+ export interface ReaderStateOut {
+ reader: string;
+ eventState: ReaderStateFlags;
+ eventCount: number;
+ atr: binary;
+ }
+
+ /**
+ * Fired when |SCardEstablishContext| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardestablishcontext
+ */
+ export type establishContextRequestedPayload = {
+ requestId: string;
+ }
+ /**
+ * Fired when |SCardReleaseContext| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga6aabcba7744c5c9419fdd6404f73a934
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardreleasecontext
+ */
+ export type releaseContextRequestedPayload = {
+ requestId: string;
+ contextId: number;
+ }
+ /**
+ * Fired when |SCardListReaders| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga93b07815789b3cf2629d439ecf20f0d9
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardlistreadersa
+ */
+ export type listReadersRequestedPayload = {
+ requestId: string;
+ contextId: number;
+ }
+ /**
+ * Fired when |SCardGetStatusChange| is called. Timeout is specified in milliseconds.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga33247d5d1257d59e55647c3bb717db24
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetstatuschangea
+ */
+ export type getStatusChangeRequestedPayload = {
+ requestId: string;
+ contextId: number;
+ readerStates: ReaderStateIn[];
+ /**
+ * in milliseconds, if absent, it means "infinite"
+ */
+ timeout?: number;
+ }
+ /**
+ * Fired when |SCardCancel| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacbbc0c6d6c0cbbeb4f4debf6fbeeee6
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcancel
+ */
+ export type cancelRequestedPayload = {
+ requestId: string;
+ contextId: number;
+ }
+ /**
+ * Fired when |SCardConnect| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardconnecta
+ */
+ export type connectRequestedPayload = {
+ requestId: string;
+ contextId: number;
+ reader: string;
+ shareMode: ShareMode;
+ preferredProtocols: ProtocolSet;
+ }
+ /**
+ * Fired when |SCardDisconnect| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4be198045c73ec0deb79e66c0ca1738a
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scarddisconnect
+ */
+ export type disconnectRequestedPayload = {
+ requestId: string;
+ handle: number;
+ disposition: Disposition;
+ }
+ /**
+ * Fired when |SCardTransmit| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga9a2d77242a271310269065e64633ab99
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardtransmit
+ */
+ export type transmitRequestedPayload = {
+ requestId: string;
+ handle: number;
+ data: binary;
+ protocol?: Protocol;
+ }
+ /**
+ * Fired when |SCardControl| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gac3454d4657110fd7f753b2d3d8f4e32f
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcontrol
+ */
+ export type controlRequestedPayload = {
+ requestId: string;
+ handle: number;
+ controlCode: number;
+ data: binary;
+ }
+ /**
+ * Fired when |SCardGetAttrib| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacfec51917255b7a25b94c5104961602
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetattrib
+ */
+ export type getAttribRequestedPayload = {
+ requestId: string;
+ handle: number;
+ attribId: number;
+ }
+ /**
+ * Fired when |SCardSetAttrib| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga060f0038a4ddfd5dd2b8fadf3c3a2e4f
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardsetattrib
+ */
+ export type setAttribRequestedPayload = {
+ requestId: string;
+ handle: number;
+ attribId: number;
+ data: binary;
+ }
+ /**
+ * Fired when |SCardStatus| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae49c3c894ad7ac12a5b896bde70d0382
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardstatusa
+ */
+ export type statusRequestedPayload = {
+ requestId: string;
+ handle: number;
+ }
+ /**
+ * Fired when |SCardBeginTransaction| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaddb835dce01a0da1d6ca02d33ee7d861
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardbegintransaction
+ */
+ export type beginTransactionRequestedPayload = {
+ requestId: string;
+ handle: number;
+ }
+ /**
+ * Fired when |SCardEndTransaction| is called.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae8742473b404363e5c587f570d7e2f3b
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardendtransaction
+ */
+ export type endTransactionRequestedPayload = {
+ requestId: string;
+ handle: number;
+ disposition: Disposition;
+ }
+
+ /**
+ * Enables the |SmartCardEmulation| domain.
+ */
+ export type enableParameters = {
+ }
+ export type enableReturnValue = {
+ }
+ /**
+ * Disables the |SmartCardEmulation| domain.
+ */
+ export type disableParameters = {
+ }
+ export type disableReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardEstablishContext| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardestablishcontext
+ */
+ export type reportEstablishContextResultParameters = {
+ requestId: string;
+ contextId: number;
+ }
+ export type reportEstablishContextResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardReleaseContext| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga6aabcba7744c5c9419fdd6404f73a934
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardreleasecontext
+ */
+ export type reportReleaseContextResultParameters = {
+ requestId: string;
+ }
+ export type reportReleaseContextResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardListReaders| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga93b07815789b3cf2629d439ecf20f0d9
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardlistreadersa
+ */
+ export type reportListReadersResultParameters = {
+ requestId: string;
+ readers: string[];
+ }
+ export type reportListReadersResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardGetStatusChange| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga33247d5d1257d59e55647c3bb717db24
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetstatuschangea
+ */
+ export type reportGetStatusChangeResultParameters = {
+ requestId: string;
+ readerStates: ReaderStateOut[];
+ }
+ export type reportGetStatusChangeResultReturnValue = {
+ }
+ /**
+ * Reports the result of a |SCardBeginTransaction| call.
+On success, this creates a new transaction object.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaddb835dce01a0da1d6ca02d33ee7d861
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardbegintransaction
+ */
+ export type reportBeginTransactionResultParameters = {
+ requestId: string;
+ handle: number;
+ }
+ export type reportBeginTransactionResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a call that returns only a result code.
+Used for: |SCardCancel|, |SCardDisconnect|, |SCardSetAttrib|, |SCardEndTransaction|.
+
+This maps to:
+1. SCardCancel
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacbbc0c6d6c0cbbeb4f4debf6fbeeee6
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcancel
+
+2. SCardDisconnect
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4be198045c73ec0deb79e66c0ca1738a
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scarddisconnect
+
+3. SCardSetAttrib
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga060f0038a4ddfd5dd2b8fadf3c3a2e4f
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardsetattrib
+
+4. SCardEndTransaction
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae8742473b404363e5c587f570d7e2f3b
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardendtransaction
+ */
+ export type reportPlainResultParameters = {
+ requestId: string;
+ }
+ export type reportPlainResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardConnect| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardconnecta
+ */
+ export type reportConnectResultParameters = {
+ requestId: string;
+ handle: number;
+ activeProtocol?: Protocol;
+ }
+ export type reportConnectResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a call that sends back data on success.
+Used for |SCardTransmit|, |SCardControl|, and |SCardGetAttrib|.
+
+This maps to:
+1. SCardTransmit
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga9a2d77242a271310269065e64633ab99
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardtransmit
+
+2. SCardControl
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gac3454d4657110fd7f753b2d3d8f4e32f
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcontrol
+
+3. SCardGetAttrib
+ PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacfec51917255b7a25b94c5104961602
+ Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetattrib
+ */
+ export type reportDataResultParameters = {
+ requestId: string;
+ data: binary;
+ }
+ export type reportDataResultReturnValue = {
+ }
+ /**
+ * Reports the successful result of a |SCardStatus| call.
+
+This maps to:
+PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae49c3c894ad7ac12a5b896bde70d0382
+Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardstatusa
+ */
+ export type reportStatusResultParameters = {
+ requestId: string;
+ readerName: string;
+ state: ConnectionState;
+ atr: binary;
+ protocol?: Protocol;
+ }
+ export type reportStatusResultReturnValue = {
+ }
+ /**
+ * Reports an error result for the given request.
+ */
+ export type reportErrorParameters = {
+ requestId: string;
+ resultCode: ResultCode;
+ }
+ export type reportErrorReturnValue = {
+ }
+ }
+
export namespace Storage {
export type SerializedStorageKey = string;
/**
@@ -18393,6 +18864,16 @@ present in the tab UI strip. Cannot be created with `forTab: true`, `newWindow:
`background: false`. The life-time of the tab is limited to the life-time of the session.
*/
hidden?: boolean;
+ /**
+ * If specified, the option is used to determine if the new target should
+be focused or not. By default, the focus behavior depends on the
+value of the background field. For example, background=false and focus=false
+will result in the target tab being opened but the browser window remain
+unchanged (if it was in the background, it will remain in the background)
+and background=false with focus=undefined will result in the window being focused.
+Using background: true and focus: true is not supported and will result in an error.
+ */
+ focus?: boolean;
}
export type createTargetReturnValue = {
/**
@@ -22191,6 +22672,8 @@ Error was thrown.
"Overlay.inspectNodeRequested": Overlay.inspectNodeRequestedPayload;
"Overlay.nodeHighlightRequested": Overlay.nodeHighlightRequestedPayload;
"Overlay.screenshotRequested": Overlay.screenshotRequestedPayload;
+ "Overlay.inspectPanelShowRequested": Overlay.inspectPanelShowRequestedPayload;
+ "Overlay.inspectedElementWindowRestored": Overlay.inspectedElementWindowRestoredPayload;
"Overlay.inspectModeCanceled": Overlay.inspectModeCanceledPayload;
"Page.domContentEventFired": Page.domContentEventFiredPayload;
"Page.fileChooserOpened": Page.fileChooserOpenedPayload;
@@ -22234,6 +22717,20 @@ Error was thrown.
"ServiceWorker.workerErrorReported": ServiceWorker.workerErrorReportedPayload;
"ServiceWorker.workerRegistrationUpdated": ServiceWorker.workerRegistrationUpdatedPayload;
"ServiceWorker.workerVersionUpdated": ServiceWorker.workerVersionUpdatedPayload;
+ "SmartCardEmulation.establishContextRequested": SmartCardEmulation.establishContextRequestedPayload;
+ "SmartCardEmulation.releaseContextRequested": SmartCardEmulation.releaseContextRequestedPayload;
+ "SmartCardEmulation.listReadersRequested": SmartCardEmulation.listReadersRequestedPayload;
+ "SmartCardEmulation.getStatusChangeRequested": SmartCardEmulation.getStatusChangeRequestedPayload;
+ "SmartCardEmulation.cancelRequested": SmartCardEmulation.cancelRequestedPayload;
+ "SmartCardEmulation.connectRequested": SmartCardEmulation.connectRequestedPayload;
+ "SmartCardEmulation.disconnectRequested": SmartCardEmulation.disconnectRequestedPayload;
+ "SmartCardEmulation.transmitRequested": SmartCardEmulation.transmitRequestedPayload;
+ "SmartCardEmulation.controlRequested": SmartCardEmulation.controlRequestedPayload;
+ "SmartCardEmulation.getAttribRequested": SmartCardEmulation.getAttribRequestedPayload;
+ "SmartCardEmulation.setAttribRequested": SmartCardEmulation.setAttribRequestedPayload;
+ "SmartCardEmulation.statusRequested": SmartCardEmulation.statusRequestedPayload;
+ "SmartCardEmulation.beginTransactionRequested": SmartCardEmulation.beginTransactionRequestedPayload;
+ "SmartCardEmulation.endTransactionRequested": SmartCardEmulation.endTransactionRequestedPayload;
"Storage.cacheStorageContentUpdated": Storage.cacheStorageContentUpdatedPayload;
"Storage.cacheStorageListUpdated": Storage.cacheStorageListUpdatedPayload;
"Storage.indexedDBContentUpdated": Storage.indexedDBContentUpdatedPayload;
@@ -22412,6 +22909,8 @@ Error was thrown.
["Overlay.inspectNodeRequested"]: [Overlay.inspectNodeRequestedPayload];
["Overlay.nodeHighlightRequested"]: [Overlay.nodeHighlightRequestedPayload];
["Overlay.screenshotRequested"]: [Overlay.screenshotRequestedPayload];
+ ["Overlay.inspectPanelShowRequested"]: [Overlay.inspectPanelShowRequestedPayload];
+ ["Overlay.inspectedElementWindowRestored"]: [Overlay.inspectedElementWindowRestoredPayload];
["Overlay.inspectModeCanceled"]: [Overlay.inspectModeCanceledPayload];
["Page.domContentEventFired"]: [Page.domContentEventFiredPayload];
["Page.fileChooserOpened"]: [Page.fileChooserOpenedPayload];
@@ -22455,6 +22954,20 @@ Error was thrown.
["ServiceWorker.workerErrorReported"]: [ServiceWorker.workerErrorReportedPayload];
["ServiceWorker.workerRegistrationUpdated"]: [ServiceWorker.workerRegistrationUpdatedPayload];
["ServiceWorker.workerVersionUpdated"]: [ServiceWorker.workerVersionUpdatedPayload];
+ ["SmartCardEmulation.establishContextRequested"]: [SmartCardEmulation.establishContextRequestedPayload];
+ ["SmartCardEmulation.releaseContextRequested"]: [SmartCardEmulation.releaseContextRequestedPayload];
+ ["SmartCardEmulation.listReadersRequested"]: [SmartCardEmulation.listReadersRequestedPayload];
+ ["SmartCardEmulation.getStatusChangeRequested"]: [SmartCardEmulation.getStatusChangeRequestedPayload];
+ ["SmartCardEmulation.cancelRequested"]: [SmartCardEmulation.cancelRequestedPayload];
+ ["SmartCardEmulation.connectRequested"]: [SmartCardEmulation.connectRequestedPayload];
+ ["SmartCardEmulation.disconnectRequested"]: [SmartCardEmulation.disconnectRequestedPayload];
+ ["SmartCardEmulation.transmitRequested"]: [SmartCardEmulation.transmitRequestedPayload];
+ ["SmartCardEmulation.controlRequested"]: [SmartCardEmulation.controlRequestedPayload];
+ ["SmartCardEmulation.getAttribRequested"]: [SmartCardEmulation.getAttribRequestedPayload];
+ ["SmartCardEmulation.setAttribRequested"]: [SmartCardEmulation.setAttribRequestedPayload];
+ ["SmartCardEmulation.statusRequested"]: [SmartCardEmulation.statusRequestedPayload];
+ ["SmartCardEmulation.beginTransactionRequested"]: [SmartCardEmulation.beginTransactionRequestedPayload];
+ ["SmartCardEmulation.endTransactionRequested"]: [SmartCardEmulation.endTransactionRequestedPayload];
["Storage.cacheStorageContentUpdated"]: [Storage.cacheStorageContentUpdatedPayload];
["Storage.cacheStorageListUpdated"]: [Storage.cacheStorageListUpdatedPayload];
["Storage.indexedDBContentUpdated"]: [Storage.indexedDBContentUpdatedPayload];
@@ -22764,6 +23277,7 @@ Error was thrown.
"EventBreakpoints.setInstrumentationBreakpoint": EventBreakpoints.setInstrumentationBreakpointParameters;
"EventBreakpoints.removeInstrumentationBreakpoint": EventBreakpoints.removeInstrumentationBreakpointParameters;
"EventBreakpoints.disable": EventBreakpoints.disableParameters;
+ "Extensions.triggerAction": Extensions.triggerActionParameters;
"Extensions.loadUnpacked": Extensions.loadUnpackedParameters;
"Extensions.uninstall": Extensions.uninstallParameters;
"Extensions.getStorageItems": Extensions.getStorageItemsParameters;
@@ -22904,6 +23418,7 @@ Error was thrown.
"Overlay.setShowFlexOverlays": Overlay.setShowFlexOverlaysParameters;
"Overlay.setShowScrollSnapOverlays": Overlay.setShowScrollSnapOverlaysParameters;
"Overlay.setShowContainerQueryOverlays": Overlay.setShowContainerQueryOverlaysParameters;
+ "Overlay.setShowInspectedElementAnchor": Overlay.setShowInspectedElementAnchorParameters;
"Overlay.setShowPaintRects": Overlay.setShowPaintRectsParameters;
"Overlay.setShowLayoutShiftRegions": Overlay.setShowLayoutShiftRegionsParameters;
"Overlay.setShowScrollBottleneckRects": Overlay.setShowScrollBottleneckRectsParameters;
@@ -23005,6 +23520,18 @@ Error was thrown.
"ServiceWorker.stopWorker": ServiceWorker.stopWorkerParameters;
"ServiceWorker.unregister": ServiceWorker.unregisterParameters;
"ServiceWorker.updateRegistration": ServiceWorker.updateRegistrationParameters;
+ "SmartCardEmulation.enable": SmartCardEmulation.enableParameters;
+ "SmartCardEmulation.disable": SmartCardEmulation.disableParameters;
+ "SmartCardEmulation.reportEstablishContextResult": SmartCardEmulation.reportEstablishContextResultParameters;
+ "SmartCardEmulation.reportReleaseContextResult": SmartCardEmulation.reportReleaseContextResultParameters;
+ "SmartCardEmulation.reportListReadersResult": SmartCardEmulation.reportListReadersResultParameters;
+ "SmartCardEmulation.reportGetStatusChangeResult": SmartCardEmulation.reportGetStatusChangeResultParameters;
+ "SmartCardEmulation.reportBeginTransactionResult": SmartCardEmulation.reportBeginTransactionResultParameters;
+ "SmartCardEmulation.reportPlainResult": SmartCardEmulation.reportPlainResultParameters;
+ "SmartCardEmulation.reportConnectResult": SmartCardEmulation.reportConnectResultParameters;
+ "SmartCardEmulation.reportDataResult": SmartCardEmulation.reportDataResultParameters;
+ "SmartCardEmulation.reportStatusResult": SmartCardEmulation.reportStatusResultParameters;
+ "SmartCardEmulation.reportError": SmartCardEmulation.reportErrorParameters;
"Storage.getStorageKeyForFrame": Storage.getStorageKeyForFrameParameters;
"Storage.getStorageKey": Storage.getStorageKeyParameters;
"Storage.clearDataForOrigin": Storage.clearDataForOriginParameters;
@@ -23414,6 +23941,7 @@ Error was thrown.
"EventBreakpoints.setInstrumentationBreakpoint": EventBreakpoints.setInstrumentationBreakpointReturnValue;
"EventBreakpoints.removeInstrumentationBreakpoint": EventBreakpoints.removeInstrumentationBreakpointReturnValue;
"EventBreakpoints.disable": EventBreakpoints.disableReturnValue;
+ "Extensions.triggerAction": Extensions.triggerActionReturnValue;
"Extensions.loadUnpacked": Extensions.loadUnpackedReturnValue;
"Extensions.uninstall": Extensions.uninstallReturnValue;
"Extensions.getStorageItems": Extensions.getStorageItemsReturnValue;
@@ -23554,6 +24082,7 @@ Error was thrown.
"Overlay.setShowFlexOverlays": Overlay.setShowFlexOverlaysReturnValue;
"Overlay.setShowScrollSnapOverlays": Overlay.setShowScrollSnapOverlaysReturnValue;
"Overlay.setShowContainerQueryOverlays": Overlay.setShowContainerQueryOverlaysReturnValue;
+ "Overlay.setShowInspectedElementAnchor": Overlay.setShowInspectedElementAnchorReturnValue;
"Overlay.setShowPaintRects": Overlay.setShowPaintRectsReturnValue;
"Overlay.setShowLayoutShiftRegions": Overlay.setShowLayoutShiftRegionsReturnValue;
"Overlay.setShowScrollBottleneckRects": Overlay.setShowScrollBottleneckRectsReturnValue;
@@ -23655,6 +24184,18 @@ Error was thrown.
"ServiceWorker.stopWorker": ServiceWorker.stopWorkerReturnValue;
"ServiceWorker.unregister": ServiceWorker.unregisterReturnValue;
"ServiceWorker.updateRegistration": ServiceWorker.updateRegistrationReturnValue;
+ "SmartCardEmulation.enable": SmartCardEmulation.enableReturnValue;
+ "SmartCardEmulation.disable": SmartCardEmulation.disableReturnValue;
+ "SmartCardEmulation.reportEstablishContextResult": SmartCardEmulation.reportEstablishContextResultReturnValue;
+ "SmartCardEmulation.reportReleaseContextResult": SmartCardEmulation.reportReleaseContextResultReturnValue;
+ "SmartCardEmulation.reportListReadersResult": SmartCardEmulation.reportListReadersResultReturnValue;
+ "SmartCardEmulation.reportGetStatusChangeResult": SmartCardEmulation.reportGetStatusChangeResultReturnValue;
+ "SmartCardEmulation.reportBeginTransactionResult": SmartCardEmulation.reportBeginTransactionResultReturnValue;
+ "SmartCardEmulation.reportPlainResult": SmartCardEmulation.reportPlainResultReturnValue;
+ "SmartCardEmulation.reportConnectResult": SmartCardEmulation.reportConnectResultReturnValue;
+ "SmartCardEmulation.reportDataResult": SmartCardEmulation.reportDataResultReturnValue;
+ "SmartCardEmulation.reportStatusResult": SmartCardEmulation.reportStatusResultReturnValue;
+ "SmartCardEmulation.reportError": SmartCardEmulation.reportErrorReturnValue;
"Storage.getStorageKeyForFrame": Storage.getStorageKeyForFrameReturnValue;
"Storage.getStorageKey": Storage.getStorageKeyReturnValue;
"Storage.clearDataForOrigin": Storage.clearDataForOriginReturnValue;
diff --git a/tests/bidi/expectations/moz-firefox-nightly-library.txt b/tests/bidi/expectations/moz-firefox-nightly-library.txt
index 98b9aff914adc..7e9c386290a69 100644
--- a/tests/bidi/expectations/moz-firefox-nightly-library.txt
+++ b/tests/bidi/expectations/moz-firefox-nightly-library.txt
@@ -43,6 +43,7 @@ library/browsercontext-reuse.spec.ts › reuse connect › should not cache reso
library/browsercontext-reuse.spec.ts › reuse connect › should update viewport and media [fail]
library/browsercontext-reuse.spec.ts › reuse launch › should not cache resources [fail]
library/browsercontext-reuse.spec.ts › reuse launch › should update viewport and media [fail]
+library/browsercontext-service-worker-policy.spec.ts › block › should not throw error on about:blank [fail]
library/browsercontext-storage-state.spec.ts › should roundtrip local storage in third-party context [fail]
library/browsercontext-storage-state.spec.ts › should set local storage in third-party context [fail]
library/browsercontext-viewport-mobile.spec.ts › mobile viewport › default mobile viewports to 980 width [fail]
@@ -133,6 +134,7 @@ library/emulation-focus.spec.ts › should focus with more than one page/context
library/emulation-focus.spec.ts › should think that all pages are focused @smoke [fail]
library/fetch-proxy.spec.ts › context request should pick up proxy credentials [timeout]
library/firefox/launcher.spec.ts › should support custom firefox policies [fail]
+library/geolocation.spec.ts › should use context options for popup [timeout]
library/har.spec.ts › should have connection details [fail]
library/har.spec.ts › should have connection details for failed requests [fail]
library/har.spec.ts › should have connection details for redirects [fail]
@@ -179,6 +181,7 @@ library/popup.spec.ts › should inherit user agent from browser context @smoke
library/popup.spec.ts › should inherit viewport size from browser context [fail]
library/popup.spec.ts › should not dispatch binding on a closed page [fail]
library/popup.spec.ts › should not throw when click closes popup [timeout]
+library/popup.spec.ts › should use viewport size from window features [timeout]
library/role-utils.spec.ts › axe-core accessible-text [timeout]
library/role-utils.spec.ts › wpt accname #2 [timeout]
library/screenshot.spec.ts › page screenshot › should work with device scale factor and scale:css [fail]
diff --git a/tests/bidi/expectations/moz-firefox-nightly-page.txt b/tests/bidi/expectations/moz-firefox-nightly-page.txt
index 38d6e54299e34..354aff25a27b3 100644
--- a/tests/bidi/expectations/moz-firefox-nightly-page.txt
+++ b/tests/bidi/expectations/moz-firefox-nightly-page.txt
@@ -16,7 +16,6 @@ page/frame-evaluate.spec.ts › should dispose context on cross-origin navigatio
page/frame-evaluate.spec.ts › should dispose context on navigation [fail]
page/frame-evaluate.spec.ts › should not allow cross-frame element handles when frames do not script each other [fail]
page/frame-goto.spec.ts › should continue after client redirect [flaky]
-page/frame-hierarchy.spec.ts › should send "framenavigated" when navigating on anchor URLs [timeout]
page/frame-hierarchy.spec.ts › should support framesets [fail]
page/interception.spec.ts › should disable memory cache when intercepting [timeout]
page/interception.spec.ts › should intercept worker requests when enabled after worker creation [timeout]
@@ -106,7 +105,6 @@ page/page-fill.spec.ts › should throw nice error without injected script stack
page/page-goto.spec.ts › should override referrer-policy [fail]
page/page-goto.spec.ts › should send referer [fail]
page/page-goto.spec.ts › should send referer of cross-origin URL [fail]
-page/page-goto.spec.ts › should work with anchor navigation [timeout]
page/page-goto.spec.ts › should work with subframes return 204 with domcontentloaded [flaky]
page/page-history.spec.ts › goBack/goForward should work with bfcache-able pages [timeout]
page/page-history.spec.ts › page.goBack should work for file urls [timeout]