Created
August 22, 2024 13:18
-
-
Save Elchi3/13c08b12773dc5b5a58e5cf19d0f4238 to your computer and use it in GitHub Desktop.
WebDriver-Bidi CDDL file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Command = { | |
id: js-uint, | |
CommandData, | |
Extensible, | |
} | |
CommandData = ( | |
BrowserCommand // | |
BrowsingContextCommand // | |
InputCommand // | |
NetworkCommand // | |
ScriptCommand // | |
SessionCommand // | |
StorageCommand | |
) | |
EmptyParams = { | |
Extensible | |
} | |
Message = ( | |
CommandResponse / | |
ErrorResponse / | |
Event | |
) | |
CommandResponse = { | |
type: "success", | |
id: js-uint, | |
result: ResultData, | |
Extensible | |
} | |
ErrorResponse = { | |
type: "error", | |
id: js-uint / null, | |
error: ErrorCode, | |
message: text, | |
? stacktrace: text, | |
Extensible | |
} | |
ResultData = ( | |
BrowsingContextResult / | |
EmptyResult / | |
NetworkResult / | |
ScriptResult / | |
SessionResult / | |
StorageResult | |
) | |
EmptyResult = { | |
Extensible | |
} | |
Event = { | |
type: "event", | |
EventData, | |
Extensible | |
} | |
EventData = ( | |
BrowsingContextEvent // | |
LogEvent // | |
NetworkEvent // | |
ScriptEvent | |
) | |
Extensible = (*text => any) | |
js-int = -9007199254740991..9007199254740991 | |
js-uint = 0..9007199254740991 | |
ErrorCode = "invalid argument" / | |
"invalid selector" / | |
"invalid session id" / | |
"move target out of bounds" / | |
"no such alert" / | |
"no such element" / | |
"no such frame" / | |
"no such handle" / | |
"no such history entry" / | |
"no such intercept" / | |
"no such node" / | |
"no such request" / | |
"no such script" / | |
"no such storage partition" / | |
"no such user context" / | |
"session not created" / | |
"unable to capture screen" / | |
"unable to close browser" / | |
"unable to set cookie" / | |
"unable to set file input" / | |
"underspecified storage partition" / | |
"unknown command" / | |
"unknown error" / | |
"unsupported operation" | |
SessionCommand = ( | |
session.End // | |
session.New // | |
session.Status // | |
session.Subscribe // | |
session.Unsubscribe | |
) | |
SessionResult = ( | |
session.NewResult / | |
session.StatusResult | |
) | |
session.CapabilitiesRequest = { | |
? alwaysMatch: session.CapabilityRequest, | |
? firstMatch: [*session.CapabilityRequest] | |
} | |
session.CapabilityRequest = { | |
? acceptInsecureCerts: bool, | |
? browserName: text, | |
? browserVersion: text, | |
? platformName: text, | |
? proxy: session.ProxyConfiguration, | |
? unhandledPromptBehavior: session.UserPromptHandler, | |
Extensible | |
}; | |
session.ProxyConfiguration = { | |
session.AutodetectProxyConfiguration // | |
session.DirectProxyConfiguration // | |
session.ManualProxyConfiguration // | |
session.PacProxyConfiguration // | |
session.SystemProxyConfiguration // | |
} | |
session.AutodetectProxyConfiguration = ( | |
proxyType: "autodetect", | |
Extensible | |
) | |
session.DirectProxyConfiguration = ( | |
proxyType: "direct", | |
Extensible | |
) | |
session.ManualProxyConfiguration = ( | |
proxyType: "manual", | |
? ftpProxy: text, | |
? httpProxy: text, | |
? sslProxy: text, | |
? session.SocksProxyConfiguration, | |
? noProxy: [*text], | |
Extensible | |
) | |
session.SocksProxyConfiguration = ( | |
socksProxy: text, | |
socksVersion: 0..255, | |
) | |
session.PacProxyConfiguration = ( | |
proxyType: "pac", | |
proxyAutoconfigUrl: text, | |
Extensible | |
) | |
session.SystemProxyConfiguration = ( | |
proxyType: "system" | |
Extensible | |
) | |
session.UserPromptHandler = { | |
? alert: session.UserPromptHandlerType, | |
? beforeUnload: session.UserPromptHandlerType, | |
? confirm: session.UserPromptHandlerType, | |
? default: session.UserPromptHandlerType, | |
? prompt: session.UserPromptHandlerType, | |
}; | |
session.UserPromptHandlerType = "accept" / "dismiss" / "ignore"; | |
session.SubscriptionRequest = { | |
events: [+text], | |
? contexts: [+browsingContext.BrowsingContext], | |
} | |
session.Status = ( | |
method: "session.status", | |
params: EmptyParams, | |
) | |
session.StatusResult = { | |
ready: bool, | |
message: text, | |
} | |
session.New = ( | |
method: "session.new", | |
params: session.NewParameters | |
) | |
session.NewParameters = { | |
capabilities: session.CapabilitiesRequest | |
} | |
session.NewResult = { | |
sessionId: text, | |
capabilities: { | |
acceptInsecureCerts: bool, | |
browserName: text, | |
browserVersion: text, | |
platformName: text, | |
setWindowRect: bool, | |
userAgent: text, | |
? proxy: session.ProxyConfiguration, | |
? unhandledPromptBehavior: session.UserPromptHandler, | |
? webSocketUrl: text, | |
Extensible | |
} | |
} | |
session.End = ( | |
method: "session.end", | |
params: EmptyParams | |
) | |
session.Subscribe = ( | |
method: "session.subscribe", | |
params: session.SubscriptionRequest | |
) | |
session.Unsubscribe = ( | |
method: "session.unsubscribe", | |
params: session.SubscriptionRequest | |
) | |
BrowserCommand = ( | |
browser.Close // | |
browser.CreateUserContext // | |
browser.GetUserContexts // | |
browser.RemoveUserContext | |
) | |
BrowserResult = ( | |
browser.CreateUserContextResult / | |
browser.GetUserContextsResult | |
) | |
browser.UserContext = text; | |
browser.UserContextInfo = { | |
userContext: browser.UserContext | |
} | |
browser.Close = ( | |
method: "browser.close", | |
params: EmptyParams, | |
) | |
browser.CreateUserContext = ( | |
method: "browser.createUserContext", | |
params: EmptyParams, | |
) | |
browser.CreateUserContextResult = browser.UserContextInfo | |
browser.GetUserContexts = ( | |
method: "browser.getUserContexts", | |
params: EmptyParams, | |
) | |
browser.GetUserContextsResult = { | |
userContexts: [ + browser.UserContextInfo] | |
} | |
browser.RemoveUserContext = ( | |
method: "browser.removeUserContext", | |
params: browser.RemoveUserContextParameters | |
) | |
browser.RemoveUserContextParameters = { | |
userContext: browser.UserContext | |
} | |
BrowsingContextCommand = ( | |
browsingContext.Activate // | |
browsingContext.CaptureScreenshot // | |
browsingContext.Close // | |
browsingContext.Create // | |
browsingContext.GetTree // | |
browsingContext.HandleUserPrompt // | |
browsingContext.LocateNodes // | |
browsingContext.Navigate // | |
browsingContext.Print // | |
browsingContext.Reload // | |
browsingContext.SetViewport // | |
browsingContext.TraverseHistory | |
) | |
BrowsingContextResult = ( | |
browsingContext.CaptureScreenshotResult / | |
browsingContext.CreateResult / | |
browsingContext.GetTreeResult / | |
browsingContext.LocateNodesResult / | |
browsingContext.NavigateResult / | |
browsingContext.PrintResult / | |
browsingContext.TraverseHistoryResult | |
) | |
BrowsingContextEvent = ( | |
browsingContext.ContextCreated // | |
browsingContext.ContextDestroyed // | |
browsingContext.DomContentLoaded // | |
browsingContext.DownloadWillBegin // | |
browsingContext.FragmentNavigated // | |
browsingContext.Load // | |
browsingContext.NavigationAborted // | |
browsingContext.NavigationFailed // | |
browsingContext.NavigationStarted // | |
browsingContext.UserPromptClosed // | |
browsingContext.UserPromptOpened | |
) | |
browsingContext.BrowsingContext = text; | |
browsingContext.InfoList = [*browsingContext.Info] | |
browsingContext.Info = { | |
children: browsingContext.InfoList / null, | |
context: browsingContext.BrowsingContext, | |
originalOpener: browsingContext.BrowsingContext / null, | |
url: text, | |
userContext: browser.UserContext, | |
? parent: browsingContext.BrowsingContext / null, | |
} | |
browsingContext.Locator = ( | |
browsingContext.AccessibilityLocator / | |
browsingContext.CssLocator / | |
browsingContext.InnerTextLocator / | |
browsingContext.XPathLocator | |
) | |
browsingContext.AccessibilityLocator = { | |
type: "accessibility", | |
value: { | |
? name: text, | |
? role: text, | |
} | |
} | |
browsingContext.CssLocator = { | |
type: "css", | |
value: text | |
} | |
browsingContext.InnerTextLocator = { | |
type: "innerText", | |
value: text, | |
? ignoreCase: bool | |
? matchType: "full" / "partial", | |
? maxDepth: js-uint, | |
} | |
browsingContext.XPathLocator = { | |
type: "xpath", | |
value: text | |
} | |
browsingContext.Navigation = text; | |
browsingContext.NavigationInfo = { | |
context: browsingContext.BrowsingContext, | |
navigation: browsingContext.Navigation / null, | |
timestamp: js-uint, | |
url: text, | |
} | |
browsingContext.ReadinessState = "none" / "interactive" / "complete" | |
browsingContext.UserPromptType = "alert" / "beforeunload" / "confirm" / "prompt"; | |
browsingContext.Activate = ( | |
method: "browsingContext.activate", | |
params: browsingContext.ActivateParameters | |
) | |
browsingContext.ActivateParameters = { | |
context: browsingContext.BrowsingContext | |
} | |
browsingContext.CaptureScreenshot = ( | |
method: "browsingContext.captureScreenshot", | |
params: browsingContext.CaptureScreenshotParameters | |
) | |
browsingContext.CaptureScreenshotParameters = { | |
context: browsingContext.BrowsingContext, | |
? origin: ("viewport" / "document") .default "viewport", | |
? format: browsingContext.ImageFormat, | |
? clip: browsingContext.ClipRectangle, | |
} | |
browsingContext.ImageFormat = { | |
type: text, | |
? quality: 0.0..1.0, | |
} | |
browsingContext.ClipRectangle = ( | |
browsingContext.BoxClipRectangle / | |
browsingContext.ElementClipRectangle | |
) | |
browsingContext.ElementClipRectangle = { | |
type: "element", | |
element: script.SharedReference | |
} | |
browsingContext.BoxClipRectangle = { | |
type: "box", | |
x: float, | |
y: float, | |
width: float, | |
height: float | |
} | |
browsingContext.CaptureScreenshotResult = { | |
data: text | |
} | |
browsingContext.Close = ( | |
method: "browsingContext.close", | |
params: browsingContext.CloseParameters | |
) | |
browsingContext.CloseParameters = { | |
context: browsingContext.BrowsingContext, | |
? promptUnload: bool .default false | |
} | |
browsingContext.Create = ( | |
method: "browsingContext.create", | |
params: browsingContext.CreateParameters | |
) | |
browsingContext.CreateType = "tab" / "window" | |
browsingContext.CreateParameters = { | |
type: browsingContext.CreateType, | |
? referenceContext: browsingContext.BrowsingContext, | |
? background: bool .default false, | |
? userContext: browser.UserContext | |
} | |
browsingContext.CreateResult = { | |
context: browsingContext.BrowsingContext | |
} | |
browsingContext.GetTree = ( | |
method: "browsingContext.getTree", | |
params: browsingContext.GetTreeParameters | |
) | |
browsingContext.GetTreeParameters = { | |
? maxDepth: js-uint, | |
? root: browsingContext.BrowsingContext, | |
} | |
browsingContext.GetTreeResult = { | |
contexts: browsingContext.InfoList | |
} | |
browsingContext.HandleUserPrompt = ( | |
method: "browsingContext.handleUserPrompt", | |
params: browsingContext.HandleUserPromptParameters | |
) | |
browsingContext.HandleUserPromptParameters = { | |
context: browsingContext.BrowsingContext, | |
? accept: bool, | |
? userText: text, | |
} | |
browsingContext.LocateNodes = ( | |
method: "browsingContext.locateNodes", | |
params: browsingContext.LocateNodesParameters | |
) | |
browsingContext.LocateNodesParameters = { | |
context: browsingContext.BrowsingContext, | |
locator: browsingContext.Locator, | |
? maxNodeCount: (js-uint .ge 1), | |
? serializationOptions: script.SerializationOptions, | |
? startNodes: [ + script.SharedReference ] | |
} | |
browsingContext.LocateNodesResult = { | |
nodes: [ * script.NodeRemoteValue ] | |
} | |
browsingContext.Navigate = ( | |
method: "browsingContext.navigate", | |
params: browsingContext.NavigateParameters | |
) | |
browsingContext.NavigateParameters = { | |
context: browsingContext.BrowsingContext, | |
url: text, | |
? wait: browsingContext.ReadinessState, | |
} | |
browsingContext.NavigateResult = { | |
navigation: browsingContext.Navigation / null, | |
url: text, | |
} | |
browsingContext.Print = ( | |
method: "browsingContext.print", | |
params: browsingContext.PrintParameters | |
) | |
browsingContext.PrintParameters = { | |
context: browsingContext.BrowsingContext, | |
? background: bool .default false, | |
? margin: browsingContext.PrintMarginParameters, | |
? orientation: ("portrait" / "landscape") .default "portrait", | |
? page: browsingContext.PrintPageParameters, | |
? pageRanges: [*(js-uint / text)], | |
? scale: (0.1..2.0) .default 1.0, | |
? shrinkToFit: bool .default true, | |
} | |
browsingContext.PrintMarginParameters = { | |
? bottom: (float .ge 0.0) .default 1.0, | |
? left: (float .ge 0.0) .default 1.0, | |
? right: (float .ge 0.0) .default 1.0, | |
? top: (float .ge 0.0) .default 1.0, | |
} | |
; Minimum size is 1pt x 1pt. Conversion follows from | |
; https://www.w3.org/TR/css3-values/#absolute-lengths | |
browsingContext.PrintPageParameters = { | |
? height: (float .ge 0.0352) .default 27.94, | |
? width: (float .ge 0.0352) .default 21.59, | |
} | |
browsingContext.PrintResult = { | |
data: text | |
} | |
browsingContext.Reload = ( | |
method: "browsingContext.reload", | |
params: browsingContext.ReloadParameters | |
) | |
browsingContext.ReloadParameters = { | |
context: browsingContext.BrowsingContext, | |
? ignoreCache: bool, | |
? wait: browsingContext.ReadinessState, | |
} | |
browsingContext.SetViewport = ( | |
method: "browsingContext.setViewport", | |
params: browsingContext.SetViewportParameters | |
) | |
browsingContext.SetViewportParameters = { | |
context: browsingContext.BrowsingContext, | |
? viewport: browsingContext.Viewport / null, | |
? devicePixelRatio: (float .gt 0.0) / null, | |
} | |
browsingContext.Viewport = { | |
width: js-uint, | |
height: js-uint, | |
} | |
browsingContext.TraverseHistory = ( | |
method: "browsingContext.traverseHistory", | |
params: browsingContext.TraverseHistoryParameters | |
) | |
browsingContext.TraverseHistoryParameters = { | |
context: browsingContext.BrowsingContext, | |
delta: js-int, | |
} | |
browsingContext.TraverseHistoryResult = { | |
} | |
browsingContext.ContextCreated = ( | |
method: "browsingContext.contextCreated", | |
params: browsingContext.Info | |
) | |
browsingContext.ContextDestroyed = ( | |
method: "browsingContext.contextDestroyed", | |
params: browsingContext.Info | |
) | |
browsingContext.NavigationStarted = ( | |
method: "browsingContext.navigationStarted", | |
params: browsingContext.NavigationInfo | |
) | |
browsingContext.FragmentNavigated = ( | |
method: "browsingContext.fragmentNavigated", | |
params: browsingContext.NavigationInfo | |
) | |
browsingContext.DomContentLoaded = ( | |
method: "browsingContext.domContentLoaded", | |
params: browsingContext.NavigationInfo | |
) | |
browsingContext.Load = ( | |
method: "browsingContext.load", | |
params: browsingContext.NavigationInfo | |
) | |
browsingContext.DownloadWillBegin = ( | |
method: "browsingContext.downloadWillBegin", | |
params: browsingContext.NavigationInfo | |
) | |
browsingContext.NavigationAborted = ( | |
method: "browsingContext.navigationAborted", | |
params: browsingContext.NavigationInfo | |
) | |
browsingContext.NavigationFailed = ( | |
method: "browsingContext.navigationFailed", | |
params: browsingContext.NavigationInfo | |
) | |
browsingContext.UserPromptClosed = ( | |
method: "browsingContext.userPromptClosed", | |
params: browsingContext.UserPromptClosedParameters | |
) | |
browsingContext.UserPromptClosedParameters = { | |
context: browsingContext.BrowsingContext, | |
accepted: bool, | |
type: browsingContext.UserPromptType, | |
? userText: text | |
} | |
browsingContext.UserPromptOpened = ( | |
method: "browsingContext.userPromptOpened", | |
params: browsingContext.UserPromptOpenedParameters | |
) | |
browsingContext.UserPromptOpenedParameters = { | |
context: browsingContext.BrowsingContext, | |
handler: session.UserPromptHandlerType, | |
message: text, | |
type: browsingContext.UserPromptType, | |
? defaultValue: text | |
} | |
NetworkCommand = ( | |
network.AddIntercept // | |
network.ContinueRequest // | |
network.ContinueResponse // | |
network.ContinueWithAuth // | |
network.FailRequest // | |
network.ProvideResponse // | |
network.RemoveIntercept // | |
network.SetCacheBehavior | |
) | |
NetworkResult = ( | |
network.AddInterceptResult | |
) | |
NetworkEvent = ( | |
network.AuthRequired // | |
network.BeforeRequestSent // | |
network.FetchError // | |
network.ResponseCompleted // | |
network.ResponseStarted | |
) | |
network.AuthChallenge = { | |
scheme: text, | |
realm: text, | |
} | |
network.AuthCredentials = { | |
type: "password", | |
username: text, | |
password: text, | |
} | |
network.BaseParameters = ( | |
context: browsingContext.BrowsingContext / null, | |
isBlocked: bool, | |
navigation: browsingContext.Navigation / null, | |
redirectCount: js-uint, | |
request: network.RequestData, | |
timestamp: js-uint, | |
? intercepts: [+network.Intercept] | |
) | |
network.BytesValue = network.StringValue / network.Base64Value; | |
network.StringValue = { | |
type: "string", | |
value: text, | |
} | |
network.Base64Value = { | |
type: "base64", | |
value: text, | |
} | |
network.SameSite = "strict" / "lax" / "none" | |
network.Cookie = { | |
name: text, | |
value: network.BytesValue, | |
domain: text, | |
path: text, | |
size: js-uint, | |
httpOnly: bool, | |
secure: bool, | |
sameSite: network.SameSite, | |
? expiry: js-uint, | |
Extensible, | |
}; | |
network.CookieHeader = { | |
name: text, | |
value: network.BytesValue, | |
}; | |
network.FetchTimingInfo = { | |
timeOrigin: float, | |
requestTime: float, | |
redirectStart: float, | |
redirectEnd: float, | |
fetchStart: float, | |
dnsStart: float, | |
dnsEnd: float, | |
connectStart: float, | |
connectEnd: float, | |
tlsStart: float, | |
requestStart: float, | |
responseStart: float, | |
responseEnd: float, | |
}; | |
network.Header = { | |
name: text, | |
value: network.BytesValue, | |
} | |
network.Initiator = { | |
type: "parser" / "script" / "preflight" / "other", | |
? columnNumber: js-uint, | |
? lineNumber: js-uint, | |
? stackTrace: script.StackTrace, | |
? request: network.Request | |
}; | |
network.Intercept = text | |
network.Request = text; | |
network.RequestData = { | |
request: network.Request, | |
url: text, | |
method: text, | |
headers: [*network.Header], | |
cookies: [*network.Cookie], | |
headersSize: js-uint, | |
bodySize: js-uint / null, | |
timings: network.FetchTimingInfo, | |
}; | |
network.ResponseContent = { | |
size: js-uint | |
}; | |
network.ResponseData = { | |
url: text, | |
protocol: text, | |
status: js-uint, | |
statusText: text, | |
fromCache: bool, | |
headers: [*network.Header], | |
mimeType: text, | |
bytesReceived: js-uint, | |
headersSize: js-uint / null, | |
bodySize: js-uint / null, | |
content: network.ResponseContent, | |
?authChallenges: [*network.AuthChallenge], | |
}; | |
network.SetCookieHeader = { | |
name: text, | |
value: network.BytesValue, | |
? domain: text, | |
? httpOnly: bool, | |
? expiry: text, | |
? maxAge: js-int, | |
? path: text, | |
? sameSite: network.SameSite, | |
? secure: bool, | |
} | |
network.UrlPattern = ( | |
network.UrlPatternPattern / | |
network.UrlPatternString | |
) | |
network.UrlPatternPattern = { | |
type: "pattern", | |
?protocol: text, | |
?hostname: text, | |
?port: text, | |
?pathname: text, | |
?search: text, | |
} | |
network.UrlPatternString = { | |
type: "string", | |
pattern: text, | |
} | |
network.AddIntercept = ( | |
method: "network.addIntercept", | |
params: network.AddInterceptParameters | |
) | |
network.AddInterceptParameters = { | |
phases: [+network.InterceptPhase], | |
? contexts: [+browsingContext.BrowsingContext], | |
? urlPatterns: [*network.UrlPattern], | |
} | |
network.InterceptPhase = "beforeRequestSent" / "responseStarted" / | |
"authRequired" | |
network.AddInterceptResult = { | |
intercept: network.Intercept | |
} | |
network.ContinueRequest = ( | |
method: "network.continueRequest", | |
params: network.ContinueRequestParameters | |
) | |
network.ContinueRequestParameters = { | |
request: network.Request, | |
?body: network.BytesValue, | |
?cookies: [*network.CookieHeader], | |
?headers: [*network.Header], | |
?method: text, | |
?url: text, | |
} | |
network.ContinueResponse = ( | |
method: "network.continueResponse", | |
params: network.ContinueResponseParameters | |
) | |
network.ContinueResponseParameters = { | |
request: network.Request, | |
?cookies: [*network.SetCookieHeader] | |
?credentials: network.AuthCredentials, | |
?headers: [*network.Header], | |
?reasonPhrase: text, | |
?statusCode: js-uint, | |
} | |
network.ContinueWithAuth = ( | |
method: "network.continueWithAuth", | |
params: network.ContinueWithAuthParameters | |
) | |
network.ContinueWithAuthParameters = { | |
request: network.Request, | |
(network.ContinueWithAuthCredentials // network.ContinueWithAuthNoCredentials) | |
} | |
network.ContinueWithAuthCredentials = ( | |
action: "provideCredentials", | |
credentials: network.AuthCredentials | |
) | |
network.ContinueWithAuthNoCredentials = ( | |
action: "default" / "cancel" | |
) | |
network.FailRequest = ( | |
method: "network.failRequest", | |
params: network.FailRequestParameters | |
) | |
network.FailRequestParameters = { | |
request: network.Request, | |
} | |
network.ProvideResponse = ( | |
method: "network.provideResponse", | |
params: network.ProvideResponseParameters | |
) | |
network.ProvideResponseParameters = { | |
request: network.Request, | |
?body: network.BytesValue, | |
?cookies: [*network.SetCookieHeader], | |
?headers: [*network.Header], | |
?reasonPhrase: text, | |
?statusCode: js-uint, | |
} | |
network.RemoveIntercept = ( | |
method: "network.removeIntercept", | |
params: network.RemoveInterceptParameters | |
) | |
network.RemoveInterceptParameters = { | |
intercept: network.Intercept | |
} | |
network.SetCacheBehavior = ( | |
method: "network.setCacheBehavior", | |
params: network.SetCacheBehaviorParameters | |
) | |
network.SetCacheBehaviorParameters = { | |
cacheBehavior: "default" / "bypass", | |
? contexts: [+browsingContext.BrowsingContext] | |
} | |
network.AuthRequired = ( | |
method: "network.authRequired", | |
params: network.AuthRequiredParameters | |
) | |
network.AuthRequiredParameters = { | |
network.BaseParameters, | |
response: network.ResponseData | |
} | |
network.BeforeRequestSent = ( | |
method: "network.beforeRequestSent", | |
params: network.BeforeRequestSentParameters | |
) | |
network.BeforeRequestSentParameters = { | |
network.BaseParameters, | |
initiator: network.Initiator, | |
} | |
network.FetchError = ( | |
method: "network.fetchError", | |
params: network.FetchErrorParameters | |
) | |
network.FetchErrorParameters = { | |
network.BaseParameters, | |
errorText: text, | |
} | |
network.ResponseCompleted = ( | |
method: "network.responseCompleted", | |
params: network.ResponseCompletedParameters | |
) | |
network.ResponseCompletedParameters = { | |
network.BaseParameters, | |
response: network.ResponseData, | |
} | |
network.ResponseStarted = ( | |
method: "network.responseStarted", | |
params: network.ResponseStartedParameters | |
) | |
network.ResponseStartedParameters = { | |
network.BaseParameters, | |
response: network.ResponseData, | |
} | |
ScriptCommand = ( | |
script.AddPreloadScript // | |
script.CallFunction // | |
script.Disown // | |
script.Evaluate // | |
script.GetRealms // | |
script.RemovePreloadScript | |
) | |
ScriptResult = ( | |
script.AddPreloadScriptResult / | |
script.EvaluateResult / | |
script.GetRealmsResult | |
) | |
ScriptEvent = ( | |
script.Message // | |
script.RealmCreated // | |
script.RealmDestroyed | |
) | |
script.Channel = text; | |
script.ChannelValue = { | |
type: "channel", | |
value: script.ChannelProperties, | |
}; | |
script.ChannelProperties = { | |
channel: script.Channel, | |
? serializationOptions: script.SerializationOptions, | |
? ownership: script.ResultOwnership, | |
} | |
script.EvaluateResult = ( | |
script.EvaluateResultSuccess / | |
script.EvaluateResultException | |
) | |
script.EvaluateResultSuccess = { | |
type: "success", | |
result: script.RemoteValue, | |
realm: script.Realm | |
} | |
script.EvaluateResultException = { | |
type: "exception", | |
exceptionDetails: script.ExceptionDetails | |
realm: script.Realm | |
} | |
script.ExceptionDetails = { | |
columnNumber: js-uint, | |
exception: script.RemoteValue, | |
lineNumber: js-uint, | |
stackTrace: script.StackTrace, | |
text: text, | |
}; | |
script.Handle = text; | |
script.InternalId = text; | |
script.LocalValue = ( | |
script.RemoteReference / | |
script.PrimitiveProtocolValue / | |
script.ChannelValue / | |
script.ArrayLocalValue / | |
script.DateLocalValue / | |
script.MapLocalValue / | |
script.ObjectLocalValue / | |
script.RegExpLocalValue / | |
script.SetLocalValue | |
) | |
script.ListLocalValue = [*script.LocalValue]; | |
script.ArrayLocalValue = { | |
type: "array", | |
value: script.ListLocalValue, | |
} | |
script.DateLocalValue = { | |
type: "date", | |
value: text | |
} | |
script.MappingLocalValue = [*[(script.LocalValue / text), script.LocalValue]]; | |
script.MapLocalValue = { | |
type: "map", | |
value: script.MappingLocalValue, | |
} | |
script.ObjectLocalValue = { | |
type: "object", | |
value: script.MappingLocalValue, | |
} | |
script.RegExpValue = { | |
pattern: text, | |
? flags: text, | |
} | |
script.RegExpLocalValue = { | |
type: "regexp", | |
value: script.RegExpValue, | |
} | |
script.SetLocalValue = { | |
type: "set", | |
value: script.ListLocalValue, | |
} | |
script.PreloadScript = text; | |
script.Realm = text; | |
script.PrimitiveProtocolValue = ( | |
script.UndefinedValue / | |
script.NullValue / | |
script.StringValue / | |
script.NumberValue / | |
script.BooleanValue / | |
script.BigIntValue | |
) | |
script.UndefinedValue = { | |
type: "undefined", | |
} | |
script.NullValue = { | |
type: "null", | |
} | |
script.StringValue = { | |
type: "string", | |
value: text, | |
} | |
script.SpecialNumber = "NaN" / "-0" / "Infinity" / "-Infinity"; | |
script.NumberValue = { | |
type: "number", | |
value: number / script.SpecialNumber, | |
} | |
script.BooleanValue = { | |
type: "boolean", | |
value: bool, | |
} | |
script.BigIntValue = { | |
type: "bigint", | |
value: text, | |
} | |
script.RealmInfo = ( | |
script.WindowRealmInfo / | |
script.DedicatedWorkerRealmInfo / | |
script.SharedWorkerRealmInfo / | |
script.ServiceWorkerRealmInfo / | |
script.WorkerRealmInfo / | |
script.PaintWorkletRealmInfo / | |
script.AudioWorkletRealmInfo / | |
script.WorkletRealmInfo | |
) | |
script.BaseRealmInfo = ( | |
realm: script.Realm, | |
origin: text | |
) | |
script.WindowRealmInfo = { | |
script.BaseRealmInfo, | |
type: "window", | |
context: browsingContext.BrowsingContext, | |
? sandbox: text | |
} | |
script.DedicatedWorkerRealmInfo = { | |
script.BaseRealmInfo, | |
type: "dedicated-worker", | |
owners: [script.Realm] | |
} | |
script.SharedWorkerRealmInfo = { | |
script.BaseRealmInfo, | |
type: "shared-worker" | |
} | |
script.ServiceWorkerRealmInfo = { | |
script.BaseRealmInfo, | |
type: "service-worker" | |
} | |
script.WorkerRealmInfo = { | |
script.BaseRealmInfo, | |
type: "worker" | |
} | |
script.PaintWorkletRealmInfo = { | |
script.BaseRealmInfo, | |
type: "paint-worklet" | |
} | |
script.AudioWorkletRealmInfo = { | |
script.BaseRealmInfo, | |
type: "audio-worklet" | |
} | |
script.WorkletRealmInfo = { | |
script.BaseRealmInfo, | |
type: "worklet" | |
} | |
script.RealmType = "window" / "dedicated-worker" / "shared-worker" / "service-worker" / | |
"worker" / "paint-worklet" / "audio-worklet" / "worklet" | |
script.RemoteReference = ( | |
script.SharedReference / | |
script.RemoteObjectReference | |
) | |
script.SharedReference = { | |
sharedId: script.SharedId | |
? handle: script.Handle, | |
Extensible | |
} | |
script.RemoteObjectReference = { | |
handle: script.Handle, | |
? sharedId: script.SharedId | |
Extensible | |
} | |
script.RemoteValue = ( | |
script.PrimitiveProtocolValue / | |
script.SymbolRemoteValue / | |
script.ArrayRemoteValue / | |
script.ObjectRemoteValue / | |
script.FunctionRemoteValue / | |
script.RegExpRemoteValue / | |
script.DateRemoteValue / | |
script.MapRemoteValue / | |
script.SetRemoteValue / | |
script.WeakMapRemoteValue / | |
script.WeakSetRemoteValue / | |
script.GeneratorRemoteValue / | |
script.ErrorRemoteValue / | |
script.ProxyRemoteValue / | |
script.PromiseRemoteValue / | |
script.TypedArrayRemoteValue / | |
script.ArrayBufferRemoteValue / | |
script.NodeListRemoteValue / | |
script.HTMLCollectionRemoteValue / | |
script.NodeRemoteValue / | |
script.WindowProxyRemoteValue | |
) | |
script.ListRemoteValue = [*script.RemoteValue]; | |
script.MappingRemoteValue = [*[(script.RemoteValue / text), script.RemoteValue]]; | |
script.SymbolRemoteValue = { | |
type: "symbol", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} | |
script.ArrayRemoteValue = { | |
type: "array", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
? value: script.ListRemoteValue, | |
} | |
script.ObjectRemoteValue = { | |
type: "object", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
? value: script.MappingRemoteValue, | |
} | |
script.FunctionRemoteValue = { | |
type: "function", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} | |
script.RegExpRemoteValue = { | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} .and script.RegExpLocalValue | |
script.DateRemoteValue = { | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} .and script.DateLocalValue | |
script.MapRemoteValue = { | |
type: "map", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
? value: script.MappingRemoteValue, | |
} | |
script.SetRemoteValue = { | |
type: "set", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
? value: script.ListRemoteValue | |
} | |
script.WeakMapRemoteValue = { | |
type: "weakmap", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} | |
script.WeakSetRemoteValue = { | |
type: "weakset", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} | |
script.GeneratorRemoteValue = { | |
type: "generator", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} | |
script.ErrorRemoteValue = { | |
type: "error", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} | |
script.ProxyRemoteValue = { | |
type: "proxy", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} | |
script.PromiseRemoteValue = { | |
type: "promise", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} | |
script.TypedArrayRemoteValue = { | |
type: "typedarray", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} | |
script.ArrayBufferRemoteValue = { | |
type: "arraybuffer", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
} | |
script.NodeListRemoteValue = { | |
type: "nodelist", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
? value: script.ListRemoteValue, | |
} | |
script.HTMLCollectionRemoteValue = { | |
type: "htmlcollection", | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
? value: script.ListRemoteValue, | |
} | |
script.NodeRemoteValue = { | |
type: "node", | |
? sharedId: script.SharedId, | |
? handle: script.Handle, | |
? internalId: script.InternalId, | |
? value: script.NodeProperties, | |
} | |
script.NodeProperties = { | |
nodeType: js-uint, | |
childNodeCount: js-uint, | |
? attributes: {*text => text}, | |
? children: [*script.NodeRemoteValue], | |
? localName: text, | |
? mode: "open" / "closed", | |
? namespaceURI: text, | |
? nodeValue: text, | |
? shadowRoot: script.NodeRemoteValue / null, | |
} | |
script.WindowProxyRemoteValue = { | |
type: "window", | |
value: script.WindowProxyProperties, | |
? handle: script.Handle, | |
? internalId: script.InternalId | |
} | |
script.WindowProxyProperties = { | |
context: browsingContext.BrowsingContext | |
} | |
script.ResultOwnership = "root" / "none" | |
script.SerializationOptions = { | |
? maxDomDepth: (js-uint / null) .default 0, | |
? maxObjectDepth: (js-uint / null) .default null, | |
? includeShadowTree: ("none" / "open" / "all") .default "none", | |
} | |
script.SharedId = text; | |
script.StackFrame = { | |
columnNumber: js-uint, | |
functionName: text, | |
lineNumber: js-uint, | |
url: text, | |
} | |
script.StackTrace = { | |
callFrames: [*script.StackFrame], | |
} | |
script.Source = { | |
realm: script.Realm, | |
? context: browsingContext.BrowsingContext | |
} | |
script.RealmTarget = { | |
realm: script.Realm | |
}; | |
script.ContextTarget = { | |
context: browsingContext.BrowsingContext, | |
? sandbox: text | |
} | |
script.Target = ( | |
script.ContextTarget / | |
script.RealmTarget | |
); | |
script.AddPreloadScript = ( | |
method: "script.addPreloadScript", | |
params: script.AddPreloadScriptParameters | |
) | |
script.AddPreloadScriptParameters = { | |
functionDeclaration: text, | |
? arguments: [*script.ChannelValue], | |
? contexts: [+browsingContext.BrowsingContext], | |
? sandbox: text | |
} | |
script.AddPreloadScriptResult = { | |
script: script.PreloadScript | |
} | |
script.Disown = ( | |
method: "script.disown", | |
params: script.DisownParameters | |
) | |
script.DisownParameters = { | |
handles: [*script.Handle] | |
target: script.Target; | |
} | |
script.CallFunction = ( | |
method: "script.callFunction", | |
params: script.CallFunctionParameters | |
) | |
script.CallFunctionParameters = { | |
functionDeclaration: text, | |
awaitPromise: bool, | |
target: script.Target, | |
? arguments: [*script.LocalValue], | |
? resultOwnership: script.ResultOwnership, | |
? serializationOptions: script.SerializationOptions, | |
? this: script.LocalValue, | |
? userActivation: bool .default false, | |
} | |
script.Evaluate = ( | |
method: "script.evaluate", | |
params: script.EvaluateParameters | |
) | |
script.EvaluateParameters = { | |
expression: text, | |
target: script.Target, | |
awaitPromise: bool, | |
? resultOwnership: script.ResultOwnership, | |
? serializationOptions: script.SerializationOptions, | |
? userActivation: bool .default false, | |
} | |
script.GetRealms = ( | |
method: "script.getRealms", | |
params: script.GetRealmsParameters | |
) | |
script.GetRealmsParameters = { | |
? context: browsingContext.BrowsingContext, | |
? type: script.RealmType, | |
} | |
script.GetRealmsResult = { | |
realms: [*script.RealmInfo] | |
} | |
script.RemovePreloadScript = ( | |
method: "script.removePreloadScript", | |
params: script.RemovePreloadScriptParameters | |
) | |
script.RemovePreloadScriptParameters = { | |
script: script.PreloadScript | |
} | |
script.Message = ( | |
method: "script.message", | |
params: script.MessageParameters | |
) | |
script.MessageParameters = { | |
channel: script.Channel, | |
data: script.RemoteValue, | |
source: script.Source, | |
} | |
script.RealmCreated = ( | |
method: "script.realmCreated", | |
params: script.RealmInfo | |
) | |
script.RealmDestroyed = ( | |
method: "script.realmDestroyed", | |
params: script.RealmDestroyedParameters | |
) | |
script.RealmDestroyedParameters = { | |
realm: script.Realm | |
} | |
StorageCommand = ( | |
storage.DeleteCookies // | |
storage.GetCookies // | |
storage.SetCookie | |
) | |
StorageResult = ( | |
storage.DeleteCookiesResult / | |
storage.GetCookiesResult / | |
storage.SetCookieResult | |
) | |
storage.PartitionKey = { | |
? userContext: text, | |
? sourceOrigin: text, | |
Extensible, | |
} | |
storage.GetCookies = ( | |
method: "storage.getCookies", | |
params: storage.GetCookiesParameters | |
) | |
storage.CookieFilter = { | |
? name: text, | |
? value: network.BytesValue, | |
? domain: text, | |
? path: text, | |
? size: js-uint, | |
? httpOnly: bool, | |
? secure: bool, | |
? sameSite: network.SameSite, | |
? expiry: js-uint, | |
Extensible, | |
} | |
storage.BrowsingContextPartitionDescriptor = { | |
type: "context", | |
context: browsingContext.BrowsingContext | |
} | |
storage.StorageKeyPartitionDescriptor = { | |
type: "storageKey", | |
? userContext: text, | |
? sourceOrigin: text, | |
Extensible, | |
} | |
storage.PartitionDescriptor = ( | |
storage.BrowsingContextPartitionDescriptor / | |
storage.StorageKeyPartitionDescriptor | |
) | |
storage.GetCookiesParameters = { | |
? filter: storage.CookieFilter, | |
? partition: storage.PartitionDescriptor, | |
} | |
storage.GetCookiesResult = { | |
cookies: [*network.Cookie], | |
partitionKey: storage.PartitionKey, | |
} | |
storage.SetCookie = ( | |
method: "storage.setCookie", | |
params: storage.SetCookieParameters, | |
) | |
storage.PartialCookie = { | |
name: text, | |
value: network.BytesValue, | |
domain: text, | |
? path: text, | |
? httpOnly: bool, | |
? secure: bool, | |
? sameSite: network.SameSite, | |
? expiry: js-uint, | |
Extensible, | |
} | |
storage.SetCookieParameters = { | |
cookie: storage.PartialCookie, | |
? partition: storage.PartitionDescriptor, | |
} | |
storage.SetCookieResult = { | |
partitionKey: storage.PartitionKey | |
} | |
storage.DeleteCookies = ( | |
method: "storage.deleteCookies", | |
params: storage.DeleteCookiesParameters, | |
) | |
storage.DeleteCookiesParameters = { | |
? filter: storage.CookieFilter, | |
? partition: storage.PartitionDescriptor, | |
} | |
storage.DeleteCookiesResult = { | |
partitionKey: storage.PartitionKey | |
} | |
LogEvent = ( | |
log.EntryAdded | |
) | |
log.Level = "debug" / "info" / "warn" / "error" | |
log.Entry = ( | |
log.GenericLogEntry / | |
log.ConsoleLogEntry / | |
log.JavascriptLogEntry | |
) | |
log.BaseLogEntry = ( | |
level: log.Level, | |
source: script.Source, | |
text: text / null, | |
timestamp: js-uint, | |
? stackTrace: script.StackTrace, | |
) | |
log.GenericLogEntry = { | |
log.BaseLogEntry, | |
type: text, | |
} | |
log.ConsoleLogEntry = { | |
log.BaseLogEntry, | |
type: "console", | |
method: text, | |
args: [*script.RemoteValue], | |
} | |
log.JavascriptLogEntry = { | |
log.BaseLogEntry, | |
type: "javascript", | |
} | |
log.EntryAdded = ( | |
method: "log.entryAdded", | |
params: log.Entry, | |
) | |
InputCommand = ( | |
input.PerformActions // | |
input.ReleaseActions // | |
input.SetFiles | |
) | |
input.ElementOrigin = { | |
type: "element", | |
element: script.SharedReference | |
} | |
input.PerformActions = ( | |
method: "input.performActions", | |
params: input.PerformActionsParameters | |
) | |
input.PerformActionsParameters = { | |
context: browsingContext.BrowsingContext, | |
actions: [*input.SourceActions] | |
} | |
input.SourceActions = ( | |
input.NoneSourceActions / | |
input.KeySourceActions / | |
input.PointerSourceActions / | |
input.WheelSourceActions | |
) | |
input.NoneSourceActions = { | |
type: "none", | |
id: text, | |
actions: [*input.NoneSourceAction] | |
} | |
input.NoneSourceAction = input.PauseAction | |
input.KeySourceActions = { | |
type: "key", | |
id: text, | |
actions: [*input.KeySourceAction] | |
} | |
input.KeySourceAction = ( | |
input.PauseAction / | |
input.KeyDownAction / | |
input.KeyUpAction | |
) | |
input.PointerSourceActions = { | |
type: "pointer", | |
id: text, | |
? parameters: input.PointerParameters, | |
actions: [*input.PointerSourceAction] | |
} | |
input.PointerType = "mouse" / "pen" / "touch" | |
input.PointerParameters = { | |
? pointerType: input.PointerType .default "mouse" | |
} | |
input.PointerSourceAction = ( | |
input.PauseAction / | |
input.PointerDownAction / | |
input.PointerUpAction / | |
input.PointerMoveAction | |
) | |
input.WheelSourceActions = { | |
type: "wheel", | |
id: text, | |
actions: [*input.WheelSourceAction] | |
} | |
input.WheelSourceAction = ( | |
input.PauseAction / | |
input.WheelScrollAction | |
) | |
input.PauseAction = { | |
type: "pause", | |
? duration: js-uint | |
} | |
input.KeyDownAction = { | |
type: "keyDown", | |
value: text | |
} | |
input.KeyUpAction = { | |
type: "keyUp", | |
value: text | |
} | |
input.PointerUpAction = { | |
type: "pointerUp", | |
button: js-uint, | |
} | |
input.PointerDownAction = { | |
type: "pointerDown", | |
button: js-uint, | |
input.PointerCommonProperties | |
} | |
input.PointerMoveAction = { | |
type: "pointerMove", | |
x: js-int, | |
y: js-int, | |
? duration: js-uint, | |
? origin: input.Origin, | |
input.PointerCommonProperties | |
} | |
input.WheelScrollAction = { | |
type: "scroll", | |
x: js-int, | |
y: js-int, | |
deltaX: js-int, | |
deltaY: js-int, | |
? duration: js-uint, | |
? origin: input.Origin .default "viewport", | |
} | |
input.PointerCommonProperties = ( | |
? width: js-uint .default 1, | |
? height: js-uint .default 1, | |
? pressure: float .default 0.0, | |
? tangentialPressure: float .default 0.0, | |
? twist: (0..359) .default 0, | |
; 0 .. Math.PI / 2 | |
? altitudeAngle: (0.0..1.5707963267948966) .default 0.0, | |
; 0 .. 2 * Math.PI | |
? azimuthAngle: (0.0..6.283185307179586) .default 0.0, | |
) | |
input.Origin = "viewport" / "pointer" / input.ElementOrigin | |
input.ReleaseActions = ( | |
method: "input.releaseActions", | |
params: input.ReleaseActionsParameters | |
) | |
input.ReleaseActionsParameters = { | |
context: browsingContext.BrowsingContext, | |
} | |
input.SetFiles = ( | |
method: "input.setFiles", | |
params: input.SetFilesParameters | |
) | |
input.SetFilesParameters = { | |
context: browsingContext.BrowsingContext, | |
element: script.SharedReference, | |
files: [*text] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment