diff --git a/MODULE.bazel b/MODULE.bazel index aa5f69e2214f0..e9fa31a2c4a3e 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -406,6 +406,28 @@ use_repo( "download_sm_windows", ) +webref_cddl_extension = use_extension("//common:webref_cddl.bzl", "webref_cddl_extension") +use_repo( + webref_cddl_extension, + "at_driver_all_cddl", + "at_driver_local_cddl", + "at_driver_remote_cddl", + "permissions_all_cddl", + "permissions_local_cddl", + "permissions_remote_cddl", + "prefetch_all_cddl", + "prefetch_local_cddl", + "ua_client_hints_all_cddl", + "ua_client_hints_local_cddl", + "ua_client_hints_remote_cddl", + "web_bluetooth_all_cddl", + "web_bluetooth_local_cddl", + "web_bluetooth_remote_cddl", + "webdriver_bidi_all_cddl", + "webdriver_bidi_local_cddl", + "webdriver_bidi_remote_cddl", +) + pin_browsers_extension = use_extension("//common:repositories.bzl", "pin_browsers_extension") use_repo( pin_browsers_extension, diff --git a/common/bidi/spec/BUILD.bazel b/common/bidi/spec/BUILD.bazel deleted file mode 100644 index 74c3cffd35ed0..0000000000000 --- a/common/bidi/spec/BUILD.bazel +++ /dev/null @@ -1,13 +0,0 @@ -package( - default_visibility = [ - "//py:__pkg__", - ], -) - -exports_files( - srcs = [ - "all.cddl", - "local.cddl", - "remote.cddl", - ], -) diff --git a/common/bidi/spec/all.cddl b/common/bidi/spec/all.cddl deleted file mode 100644 index e10b42723b0f5..0000000000000 --- a/common/bidi/spec/all.cddl +++ /dev/null @@ -1,2498 +0,0 @@ -Command = { - id: js-uint, - CommandData, - Extensible, -} - -CommandData = ( - BrowserCommand // - BrowsingContextCommand // - EmulationCommand // - InputCommand // - NetworkCommand // - ScriptCommand // - SessionCommand // - StorageCommand // - WebExtensionCommand -) - -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 = ( - BrowserResult / - BrowsingContextResult / - EmulationResult / - InputResult / - NetworkResult / - ScriptResult / - SessionResult / - StorageResult / - WebExtensionResult -) - -EmptyResult = { - Extensible -} - -Event = { - type: "event", - EventData, - Extensible -} - -EventData = ( - BrowsingContextEvent // - InputEvent // - LogEvent // - NetworkEvent // - ScriptEvent -) - -Extensible = (*text => any) - -js-int = -9007199254740991..9007199254740991 -js-uint = 0..9007199254740991 - -ErrorCode = "invalid argument" / - "invalid selector" / - "invalid session id" / - "invalid web extension" / - "move target out of bounds" / - "no such alert" / - "no such network collector" / - "no such element" / - "no such frame" / - "no such handle" / - "no such history entry" / - "no such intercept" / - "no such network data" / - "no such node" / - "no such request" / - "no such script" / - "no such storage partition" / - "no such user context" / - "no such web extension" / - "session not created" / - "unable to capture screen" / - "unable to close browser" / - "unable to set cookie" / - "unable to set file input" / - "unavailable network data" / - "underspecified storage partition" / - "unknown command" / - "unknown error" / - "unsupported operation" - -SessionCommand = ( - session.End // - session.New // - session.Status // - session.Subscribe // - session.Unsubscribe -) - -SessionResult = ( - session.EndResult / - session.NewResult / - session.StatusResult / - session.SubscribeResult / - session.UnsubscribeResult -) - -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", - ? 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, - ? file: session.UserPromptHandlerType, - ? prompt: session.UserPromptHandlerType, -} - -session.UserPromptHandlerType = "accept" / "dismiss" / "ignore"; - -session.Subscription = text - -session.SubscribeParameters = { - events: [+text], - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -session.UnsubscribeByIDRequest = { - subscriptions: [+session.Subscription], -} - -session.UnsubscribeByAttributesRequest = { - events: [+text], -} - -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.EndResult = EmptyResult - -session.Subscribe = ( - method: "session.subscribe", - params: session.SubscribeParameters -) - -session.SubscribeResult = { - subscription: session.Subscription, -} - -session.Unsubscribe = ( - method: "session.unsubscribe", - params: session.UnsubscribeParameters, -) - -session.UnsubscribeParameters = session.UnsubscribeByAttributesRequest / session.UnsubscribeByIDRequest - -session.UnsubscribeResult = EmptyResult - -BrowserCommand = ( - browser.Close // - browser.CreateUserContext // - browser.GetClientWindows // - browser.GetUserContexts // - browser.RemoveUserContext // - browser.SetClientWindowState // - browser.SetDownloadBehavior -) - -BrowserResult = ( - browser.CloseResult / - browser.CreateUserContextResult / - browser.GetClientWindowsResult / - browser.GetUserContextsResult / - browser.RemoveUserContextResult / - browser.SetClientWindowStateResult / - browser.SetDownloadBehaviorResult -) - -browser.ClientWindow = text; - -browser.ClientWindowInfo = { - active: bool, - clientWindow: browser.ClientWindow, - height: js-uint, - state: "fullscreen" / "maximized" / "minimized" / "normal", - width: js-uint, - x: js-int, - y: js-int, -} - -browser.UserContext = text; - -browser.UserContextInfo = { - userContext: browser.UserContext -} - -browser.Close = ( - method: "browser.close", - params: EmptyParams, -) - -browser.CloseResult = EmptyResult - -browser.CreateUserContext = ( - method: "browser.createUserContext", - params: browser.CreateUserContextParameters, -) - -browser.CreateUserContextParameters = { - ? acceptInsecureCerts: bool, - ? proxy: session.ProxyConfiguration, - ? unhandledPromptBehavior: session.UserPromptHandler -} - -browser.CreateUserContextResult = browser.UserContextInfo - -browser.GetClientWindows = ( - method: "browser.getClientWindows", - params: EmptyParams, -) - -browser.GetClientWindowsResult = { - clientWindows: [ * browser.ClientWindowInfo] -} - -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 -} - -browser.RemoveUserContextResult = EmptyResult - -browser.SetClientWindowState = ( - method: "browser.setClientWindowState", - params: browser.SetClientWindowStateParameters -) - -browser.SetClientWindowStateParameters = { - clientWindow: browser.ClientWindow, - (browser.ClientWindowNamedState // browser.ClientWindowRectState) -} - -browser.ClientWindowNamedState = ( - state: "fullscreen" / "maximized" / "minimized" -) - -browser.ClientWindowRectState = ( - state: "normal", - ? width: js-uint, - ? height: js-uint, - ? x: js-int, - ? y: js-int, -) - -browser.SetClientWindowStateResult = browser.ClientWindowInfo - -browser.SetDownloadBehavior = ( - method: "browser.setDownloadBehavior", - params: browser.SetDownloadBehaviorParameters -) - -browser.SetDownloadBehaviorParameters = { - downloadBehavior: browser.DownloadBehavior / null, - ? userContexts: [+browser.UserContext] -} - -browser.DownloadBehavior = { - ( - browser.DownloadBehaviorAllowed // - browser.DownloadBehaviorDenied - ) -} - -browser.DownloadBehaviorAllowed = ( - type: "allowed", - destinationFolder: text -) - -browser.DownloadBehaviorDenied = ( - type: "denied" -) - -browser.SetDownloadBehaviorResult = EmptyResult - -BrowsingContextCommand = ( - browsingContext.Activate // - browsingContext.CaptureScreenshot // - browsingContext.Close // - browsingContext.Create // - browsingContext.GetTree // - browsingContext.HandleUserPrompt // - browsingContext.LocateNodes // - browsingContext.Navigate // - browsingContext.Print // - browsingContext.Reload // - browsingContext.SetBypassCSP // - browsingContext.SetViewport // - browsingContext.TraverseHistory -) - -BrowsingContextResult = ( - browsingContext.ActivateResult / - browsingContext.CaptureScreenshotResult / - browsingContext.CloseResult / - browsingContext.CreateResult / - browsingContext.GetTreeResult / - browsingContext.HandleUserPromptResult / - browsingContext.LocateNodesResult / - browsingContext.NavigateResult / - browsingContext.PrintResult / - browsingContext.ReloadResult / - browsingContext.SetBypassCSPResult / - browsingContext.SetViewportResult / - browsingContext.TraverseHistoryResult -) - -BrowsingContextEvent = ( - browsingContext.ContextCreated // - browsingContext.ContextDestroyed // - browsingContext.DomContentLoaded // - browsingContext.DownloadEnd // - browsingContext.DownloadWillBegin // - browsingContext.FragmentNavigated // - browsingContext.HistoryUpdated // - browsingContext.Load // - browsingContext.NavigationAborted // - browsingContext.NavigationCommitted // - browsingContext.NavigationFailed // - browsingContext.NavigationStarted // - browsingContext.UserPromptClosed // - browsingContext.UserPromptOpened -) - -browsingContext.BrowsingContext = text; - -browsingContext.InfoList = [*browsingContext.Info] - -browsingContext.Info = { - children: browsingContext.InfoList / null, - clientWindow: browser.ClientWindow, - context: browsingContext.BrowsingContext, - originalOpener: browsingContext.BrowsingContext / null, - url: text, - userContext: browser.UserContext, - ? parent: browsingContext.BrowsingContext / null, -} - -browsingContext.Locator = ( - browsingContext.AccessibilityLocator / - browsingContext.CssLocator / - browsingContext.ContextLocator / - browsingContext.InnerTextLocator / - browsingContext.XPathLocator -) - -browsingContext.AccessibilityLocator = { - type: "accessibility", - value: { - ? name: text, - ? role: text, - } -} - -browsingContext.CssLocator = { - type: "css", - value: text -} - -browsingContext.ContextLocator = { - type: "context", - value: { - context: browsingContext.BrowsingContext, - } -} - -browsingContext.InnerTextLocator = { - type: "innerText", - value: text, - ? ignoreCase: bool - ? matchType: "full" / "partial", - ? maxDepth: js-uint, -} - -browsingContext.XPathLocator = { - type: "xpath", - value: text -} - -browsingContext.Navigation = text; - -browsingContext.BaseNavigationInfo = ( - context: browsingContext.BrowsingContext, - navigation: browsingContext.Navigation / null, - timestamp: js-uint, - url: text, - ? userContext: browser.UserContext, -) - -browsingContext.NavigationInfo = { - browsingContext.BaseNavigationInfo -} - -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.ActivateResult = EmptyResult - -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.CloseResult = EmptyResult - -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, - ? userContext: browser.UserContext -} - -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.HandleUserPromptResult = EmptyResult - -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.ReloadResult = browsingContext.NavigateResult - -browsingContext.SetBypassCSP = ( - method: "browsingContext.setBypassCSP", - params: browsingContext.SetBypassCSPParameters -) - -browsingContext.SetBypassCSPParameters = { - bypass: true / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -browsingContext.SetBypassCSPResult = EmptyResult - -browsingContext.SetViewport = ( - method: "browsingContext.setViewport", - params: browsingContext.SetViewportParameters -) - -browsingContext.SetViewportParameters = { - ? context: browsingContext.BrowsingContext, - ? viewport: browsingContext.Viewport / null, - ? devicePixelRatio: (float .gt 0.0) / null, - ? userContexts: [+browser.UserContext], -} - -browsingContext.Viewport = { - width: js-uint, - height: js-uint, -} - -browsingContext.SetViewportResult = EmptyResult - -browsingContext.TraverseHistory = ( - method: "browsingContext.traverseHistory", - params: browsingContext.TraverseHistoryParameters -) - -browsingContext.TraverseHistoryParameters = { - context: browsingContext.BrowsingContext, - delta: js-int, -} - -browsingContext.TraverseHistoryResult = EmptyResult - -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.HistoryUpdated = ( - method: "browsingContext.historyUpdated", - params: browsingContext.HistoryUpdatedParameters -) - -browsingContext.HistoryUpdatedParameters = { - context: browsingContext.BrowsingContext, - timestamp: js-uint, - url: text, - ? userContext: browser.UserContext -} - -browsingContext.DomContentLoaded = ( - method: "browsingContext.domContentLoaded", - params: browsingContext.NavigationInfo -) - -browsingContext.Load = ( - method: "browsingContext.load", - params: browsingContext.NavigationInfo -) - -browsingContext.DownloadWillBegin = ( - method: "browsingContext.downloadWillBegin", - params: browsingContext.DownloadWillBeginParams -) - -browsingContext.DownloadWillBeginParams = { - suggestedFilename: text, - browsingContext.BaseNavigationInfo -} - -browsingContext.DownloadEnd = ( - method: "browsingContext.downloadEnd", - params: browsingContext.DownloadEndParams -) - -browsingContext.DownloadEndParams = { - ( - browsingContext.DownloadCanceledParams // - browsingContext.DownloadCompleteParams - ) -} - -browsingContext.DownloadCanceledParams = ( - status: "canceled", - browsingContext.BaseNavigationInfo -) - -browsingContext.DownloadCompleteParams = ( - status: "complete", - filepath: text / null, - browsingContext.BaseNavigationInfo -) - -browsingContext.NavigationAborted = ( - method: "browsingContext.navigationAborted", - params: browsingContext.NavigationInfo -) - -browsingContext.NavigationCommitted = ( - method: "browsingContext.navigationCommitted", - 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, - ? userContext: browser.UserContext, - ? userText: text -} - -browsingContext.UserPromptOpened = ( - method: "browsingContext.userPromptOpened", - params: browsingContext.UserPromptOpenedParameters -) - -browsingContext.UserPromptOpenedParameters = { - context: browsingContext.BrowsingContext, - handler: session.UserPromptHandlerType, - message: text, - type: browsingContext.UserPromptType, - ? userContext: browser.UserContext, - ? defaultValue: text -} - -EmulationCommand = ( - emulation.SetForcedColorsModeThemeOverride // - emulation.SetGeolocationOverride // - emulation.SetLocaleOverride // - emulation.SetNetworkConditions // - emulation.SetScreenOrientationOverride // - emulation.SetScreenSettingsOverride // - emulation.SetScriptingEnabled // - emulation.SetScrollbarTypeOverride // - emulation.SetTimezoneOverride // - emulation.SetTouchOverride // - emulation.SetUserAgentOverride -) - - -EmulationResult = ( - emulation.SetForcedColorsModeThemeOverrideResult / - emulation.SetGeolocationOverrideResult / - emulation.SetLocaleOverrideResult / - emulation.SetScreenOrientationOverrideResult / - emulation.SetScriptingEnabledResult / - emulation.SetScrollbarTypeOverrideResult / - emulation.SetTimezoneOverrideResult / - emulation.SetTouchOverrideResult / - emulation.SetUserAgentOverrideResult -) - -emulation.SetForcedColorsModeThemeOverride = ( - method: "emulation.setForcedColorsModeThemeOverride", - params: emulation.SetForcedColorsModeThemeOverrideParameters -) - -emulation.SetForcedColorsModeThemeOverrideParameters = { - theme: emulation.ForcedColorsModeTheme / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.ForcedColorsModeTheme = "light" / "dark" - -emulation.SetForcedColorsModeThemeOverrideResult = EmptyResult - -emulation.SetGeolocationOverride = ( - method: "emulation.setGeolocationOverride", - params: emulation.SetGeolocationOverrideParameters -) - -emulation.SetGeolocationOverrideParameters = { - ( - (coordinates: emulation.GeolocationCoordinates / null) // - (error: emulation.GeolocationPositionError) - ), - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.GeolocationCoordinates = { - latitude: -90.0..90.0, - longitude: -180.0..180.0, - ? accuracy: (float .ge 0.0) .default 1.0, - ? altitude: float / null .default null, - ? altitudeAccuracy: (float .ge 0.0) / null .default null, - ? heading: (0.0...360.0) / null .default null, - ? speed: (float .ge 0.0) / null .default null, -} - -emulation.GeolocationPositionError = { - type: "positionUnavailable" -} - -emulation.SetGeolocationOverrideResult = EmptyResult - -emulation.SetLocaleOverride = ( - method: "emulation.setLocaleOverride", - params: emulation.SetLocaleOverrideParameters -) - -emulation.SetLocaleOverrideParameters = { - locale: text / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetLocaleOverrideResult = EmptyResult - -emulation.SetNetworkConditions = ( - method: "emulation.setNetworkConditions", - params: emulation.SetNetworkConditionsParameters -) - -emulation.SetNetworkConditionsParameters = { - networkConditions: emulation.NetworkConditions / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.NetworkConditions = emulation.NetworkConditionsOffline - -emulation.NetworkConditionsOffline = { - type: "offline" -} - -emulation.SetNetworkConditionsResult = EmptyResult - -emulation.SetScreenSettingsOverride = ( - method: "emulation.setScreenSettingsOverride", - params: emulation.SetScreenSettingsOverrideParameters -) - -emulation.ScreenArea = { - width: js-uint, - height: js-uint -} - -emulation.SetScreenSettingsOverrideParameters = { - screenArea: emulation.ScreenArea / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetScreenSettingsOverrideResult = EmptyResult - -emulation.SetScreenOrientationOverride = ( - method: "emulation.setScreenOrientationOverride", - params: emulation.SetScreenOrientationOverrideParameters -) - -emulation.ScreenOrientationNatural = "portrait" / "landscape" -emulation.ScreenOrientationType = "portrait-primary" / "portrait-secondary" / "landscape-primary" / "landscape-secondary" - -emulation.ScreenOrientation = { - natural: emulation.ScreenOrientationNatural, - type: emulation.ScreenOrientationType -} - -emulation.SetScreenOrientationOverrideParameters = { - screenOrientation: emulation.ScreenOrientation / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetScreenOrientationOverrideResult = EmptyResult - -emulation.SetUserAgentOverride = ( - method: "emulation.setUserAgentOverride", - params: emulation.SetUserAgentOverrideParameters -) - -emulation.SetUserAgentOverrideParameters = { - userAgent: text / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetUserAgentOverrideResult = EmptyResult - -emulation.SetScriptingEnabled = ( - method: "emulation.setScriptingEnabled", - params: emulation.SetScriptingEnabledParameters -) - -emulation.SetScriptingEnabledParameters = { - enabled: false / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetScriptingEnabledResult = EmptyResult - -emulation.SetScrollbarTypeOverride = ( - method: "emulation.setScrollbarTypeOverride", - params: emulation.SetScrollbarTypeOverrideParameters -) - -emulation.SetScrollbarTypeOverrideParameters = { - scrollbarType: "classic" / "overlay" / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetScrollbarTypeOverrideResult = EmptyResult - -emulation.SetTimezoneOverride = ( - method: "emulation.setTimezoneOverride", - params: emulation.SetTimezoneOverrideParameters -) - -emulation.SetTimezoneOverrideParameters = { - timezone: text / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetTimezoneOverrideResult = EmptyResult - -emulation.SetTouchOverride = ( - method: "emulation.setTouchOverride", - params: emulation.SetTouchOverrideParameters -) - -emulation.SetTouchOverrideParameters = { - maxTouchPoints: (js-uint .ge 1) / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetTouchOverrideResult = EmptyResult - - -NetworkCommand = ( - network.AddDataCollector // - network.AddIntercept // - network.ContinueRequest // - network.ContinueResponse // - network.ContinueWithAuth // - network.DisownData // - network.FailRequest // - network.GetData // - network.ProvideResponse // - network.RemoveDataCollector // - network.RemoveIntercept // - network.SetCacheBehavior // - network.SetExtraHeaders -) - - - -NetworkResult = ( - network.AddDataCollectorResult / - network.AddInterceptResult / - network.ContinueRequestResult / - network.ContinueResponseResult / - network.ContinueWithAuthResult / - network.DisownDataResult / - network.FailRequestResult / - network.GetDataResult / - network.ProvideResponseResult / - network.RemoveDataCollectorResult / - network.RemoveInterceptResult / - network.SetCacheBehaviorResult / - network.SetExtraHeadersResult -) - -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, - ? userContext: browser.UserContext / null, - ? intercepts: [+network.Intercept] -) - -network.BytesValue = network.StringValue / network.Base64Value; - -network.StringValue = { - type: "string", - value: text, -} - -network.Base64Value = { - type: "base64", - value: text, -} - -network.Collector = text - -network.CollectorType = "blob" - - -network.SameSite = "strict" / "lax" / "none" / "default" - - -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.DataType = "request" / "response" - -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 = { - ? columnNumber: js-uint, - ? lineNumber: js-uint, - ? request: network.Request, - ? stackTrace: script.StackTrace, - ? type: "parser" / "script" / "preflight" / "other" -} - -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, - destination: text, - initiatorType: text / 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.AddDataCollector = ( - method: "network.addDataCollector", - params: network.AddDataCollectorParameters -) - -network.AddDataCollectorParameters = { - dataTypes: [+network.DataType], - maxEncodedDataSize: js-uint, - ? collectorType: network.CollectorType .default "blob", - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -network.AddDataCollectorResult = { - collector: network.Collector -} - -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.ContinueRequestResult = EmptyResult - -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.ContinueResponseResult = EmptyResult - -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.ContinueWithAuthResult = EmptyResult - -network.DisownData = ( - method: "network.disownData", - params: network.DisownDataParameters -) - -network.DisownDataParameters = { - dataType: network.DataType, - collector: network.Collector, - request: network.Request, -} - -network.DisownDataResult = EmptyResult - -network.FailRequest = ( - method: "network.failRequest", - params: network.FailRequestParameters -) - -network.FailRequestParameters = { - request: network.Request, -} - -network.FailRequestResult = EmptyResult - -network.GetData = ( - method: "network.getData", - params: network.GetDataParameters -) - -network.GetDataParameters = { - dataType: network.DataType, - ? collector: network.Collector, - ? disown: bool .default false, - request: network.Request, -} - -network.GetDataResult = { - bytes: network.BytesValue, -} - -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.ProvideResponseResult = EmptyResult - -network.RemoveDataCollector = ( - method: "network.removeDataCollector", - params: network.RemoveDataCollectorParameters -) - -network.RemoveDataCollectorParameters = { - collector: network.Collector -} - -network.RemoveDataCollectorResult = EmptyResult - -network.RemoveIntercept = ( - method: "network.removeIntercept", - params: network.RemoveInterceptParameters -) - -network.RemoveInterceptParameters = { - intercept: network.Intercept -} - -network.RemoveInterceptResult = EmptyResult - -network.SetCacheBehavior = ( - method: "network.setCacheBehavior", - params: network.SetCacheBehaviorParameters -) - -network.SetCacheBehaviorParameters = { - cacheBehavior: "default" / "bypass", - ? contexts: [+browsingContext.BrowsingContext] -} - -network.SetCacheBehaviorResult = EmptyResult - -network.SetExtraHeaders = ( - method: "network.setExtraHeaders", - params: network.SetExtraHeadersParameters -) - -network.SetExtraHeadersParameters = { - headers: [*network.Header] - ? contexts: [+browsingContext.BrowsingContext] - ? userContexts: [+browser.UserContext] -} - -network.SetExtraHeadersResult = EmptyResult - -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.CallFunctionResult / - script.DisownResult / - script.EvaluateResult / - script.GetRealmsResult / - script.RemovePreloadScriptResult -) - -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, - ? userContext: browser.UserContext, - ? 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 = { - script.RegExpLocalValue, - ? handle: script.Handle, - ? internalId: script.InternalId, -} - -script.DateRemoteValue = { - script.DateLocalValue, - ? handle: script.Handle, - ? internalId: script.InternalId, -} - -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, - ? userContext: browser.UserContext -} - -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], - ? userContexts: [+browser.UserContext], - ? sandbox: text -} - -script.AddPreloadScriptResult = { - script: script.PreloadScript -} - -script.Disown = ( - method: "script.disown", - params: script.DisownParameters -) - -script.DisownParameters = { - handles: [*script.Handle] - target: script.Target; -} - -script.DisownResult = EmptyResult - -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.CallFunctionResult = script.EvaluateResult - -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.RemovePreloadScriptResult = EmptyResult - - 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 -) - -InputResult = ( - input.PerformActionsResult / - input.ReleaseActionsResult / - input.SetFilesResult -) - - -InputEvent = ( - input.FileDialogOpened -) - -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: float, - y: float, - ? 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, - ? height: js-uint, - ? pressure: (0.0..1.0), - ? tangentialPressure: (-1.0..1.0), - ? twist: (0..359), - ; 0 .. Math.PI / 2 - ? altitudeAngle: (0.0..1.5707963267948966), - ; 0 .. 2 * Math.PI - ? azimuthAngle: (0.0..6.283185307179586), -) - -input.Origin = "viewport" / "pointer" / input.ElementOrigin - -input.PerformActionsResult = EmptyResult - -input.ReleaseActions = ( - method: "input.releaseActions", - params: input.ReleaseActionsParameters -) - -input.ReleaseActionsParameters = { - context: browsingContext.BrowsingContext, -} - -input.ReleaseActionsResult = EmptyResult - -input.SetFiles = ( - method: "input.setFiles", - params: input.SetFilesParameters -) - -input.SetFilesParameters = { - context: browsingContext.BrowsingContext, - element: script.SharedReference, - files: [*text] -} - -input.SetFilesResult = EmptyResult - -input.FileDialogOpened = ( - method: "input.fileDialogOpened", - params: input.FileDialogInfo -) - -input.FileDialogInfo = { - context: browsingContext.BrowsingContext, - ? userContext: browser.UserContext, - ? element: script.SharedReference, - multiple: bool, -} - -WebExtensionCommand = ( - webExtension.Install // - webExtension.Uninstall -) - -WebExtensionResult = ( - webExtension.InstallResult / - webExtension.UninstallResult -) - -webExtension.Extension = text - -webExtension.Install = ( - method: "webExtension.install", - params: webExtension.InstallParameters -) - -webExtension.InstallParameters = { - extensionData: webExtension.ExtensionData, -} - -webExtension.ExtensionData = ( - webExtension.ExtensionArchivePath / - webExtension.ExtensionBase64Encoded / - webExtension.ExtensionPath -) - -webExtension.ExtensionPath = { - type: "path", - path: text, -} - -webExtension.ExtensionArchivePath = { - type: "archivePath", - path: text, -} - -webExtension.ExtensionBase64Encoded = { - type: "base64", - value: text, -} - -webExtension.InstallResult = { - extension: webExtension.Extension -} - -webExtension.Uninstall = ( - method: "webExtension.uninstall", - params: webExtension.UninstallParameters -) - -webExtension.UninstallParameters = { - extension: webExtension.Extension, -} - -webExtension.UninstallResult = EmptyResult diff --git a/common/bidi/spec/local.cddl b/common/bidi/spec/local.cddl deleted file mode 100644 index 1bb2ce612e2c2..0000000000000 --- a/common/bidi/spec/local.cddl +++ /dev/null @@ -1,1346 +0,0 @@ -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 = ( - BrowserResult / - BrowsingContextResult / - EmulationResult / - InputResult / - NetworkResult / - ScriptResult / - SessionResult / - StorageResult / - WebExtensionResult -) - -EmptyResult = { - Extensible -} - -Event = { - type: "event", - EventData, - Extensible -} - -EventData = ( - BrowsingContextEvent // - InputEvent // - LogEvent // - NetworkEvent // - ScriptEvent -) - -Extensible = (*text => any) - -js-int = -9007199254740991..9007199254740991 -js-uint = 0..9007199254740991 - -ErrorCode = "invalid argument" / - "invalid selector" / - "invalid session id" / - "invalid web extension" / - "move target out of bounds" / - "no such alert" / - "no such network collector" / - "no such element" / - "no such frame" / - "no such handle" / - "no such history entry" / - "no such intercept" / - "no such network data" / - "no such node" / - "no such request" / - "no such script" / - "no such storage partition" / - "no such user context" / - "no such web extension" / - "session not created" / - "unable to capture screen" / - "unable to close browser" / - "unable to set cookie" / - "unable to set file input" / - "unavailable network data" / - "underspecified storage partition" / - "unknown command" / - "unknown error" / - "unsupported operation" - -SessionResult = ( - session.EndResult / - session.NewResult / - session.StatusResult / - session.SubscribeResult / - session.UnsubscribeResult -) - -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", - ? 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, - ? file: session.UserPromptHandlerType, - ? prompt: session.UserPromptHandlerType, -} - -session.UserPromptHandlerType = "accept" / "dismiss" / "ignore"; - -session.Subscription = text - -session.StatusResult = { - ready: bool, - message: text, -} - -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.EndResult = EmptyResult - -session.SubscribeResult = { - subscription: session.Subscription, -} - -session.UnsubscribeResult = EmptyResult - -BrowserResult = ( - browser.CloseResult / - browser.CreateUserContextResult / - browser.GetClientWindowsResult / - browser.GetUserContextsResult / - browser.RemoveUserContextResult / - browser.SetClientWindowStateResult / - browser.SetDownloadBehaviorResult -) - -browser.ClientWindow = text; - -browser.ClientWindowInfo = { - active: bool, - clientWindow: browser.ClientWindow, - height: js-uint, - state: "fullscreen" / "maximized" / "minimized" / "normal", - width: js-uint, - x: js-int, - y: js-int, -} - -browser.UserContext = text; - -browser.UserContextInfo = { - userContext: browser.UserContext -} - -browser.CloseResult = EmptyResult - -browser.CreateUserContextResult = browser.UserContextInfo - -browser.GetClientWindowsResult = { - clientWindows: [ * browser.ClientWindowInfo] -} - -browser.GetUserContextsResult = { - userContexts: [ + browser.UserContextInfo] -} - -browser.RemoveUserContextResult = EmptyResult - -browser.SetClientWindowStateResult = browser.ClientWindowInfo - -browser.SetDownloadBehaviorResult = EmptyResult - -BrowsingContextResult = ( - browsingContext.ActivateResult / - browsingContext.CaptureScreenshotResult / - browsingContext.CloseResult / - browsingContext.CreateResult / - browsingContext.GetTreeResult / - browsingContext.HandleUserPromptResult / - browsingContext.LocateNodesResult / - browsingContext.NavigateResult / - browsingContext.PrintResult / - browsingContext.ReloadResult / - browsingContext.SetBypassCSPResult / - browsingContext.SetViewportResult / - browsingContext.TraverseHistoryResult -) - -BrowsingContextEvent = ( - browsingContext.ContextCreated // - browsingContext.ContextDestroyed // - browsingContext.DomContentLoaded // - browsingContext.DownloadEnd // - browsingContext.DownloadWillBegin // - browsingContext.FragmentNavigated // - browsingContext.HistoryUpdated // - browsingContext.Load // - browsingContext.NavigationAborted // - browsingContext.NavigationCommitted // - browsingContext.NavigationFailed // - browsingContext.NavigationStarted // - browsingContext.UserPromptClosed // - browsingContext.UserPromptOpened -) - -browsingContext.BrowsingContext = text; - -browsingContext.InfoList = [*browsingContext.Info] - -browsingContext.Info = { - children: browsingContext.InfoList / null, - clientWindow: browser.ClientWindow, - context: browsingContext.BrowsingContext, - originalOpener: browsingContext.BrowsingContext / null, - url: text, - userContext: browser.UserContext, - ? parent: browsingContext.BrowsingContext / null, -} - -browsingContext.Locator = ( - browsingContext.AccessibilityLocator / - browsingContext.CssLocator / - browsingContext.ContextLocator / - browsingContext.InnerTextLocator / - browsingContext.XPathLocator -) - -browsingContext.AccessibilityLocator = { - type: "accessibility", - value: { - ? name: text, - ? role: text, - } -} - -browsingContext.CssLocator = { - type: "css", - value: text -} - -browsingContext.ContextLocator = { - type: "context", - value: { - context: browsingContext.BrowsingContext, - } -} - -browsingContext.InnerTextLocator = { - type: "innerText", - value: text, - ? ignoreCase: bool - ? matchType: "full" / "partial", - ? maxDepth: js-uint, -} - -browsingContext.XPathLocator = { - type: "xpath", - value: text -} - -browsingContext.Navigation = text; - -browsingContext.BaseNavigationInfo = ( - context: browsingContext.BrowsingContext, - navigation: browsingContext.Navigation / null, - timestamp: js-uint, - url: text, - ? userContext: browser.UserContext, -) - -browsingContext.NavigationInfo = { - browsingContext.BaseNavigationInfo -} - -browsingContext.UserPromptType = "alert" / "beforeunload" / "confirm" / "prompt"; - -browsingContext.ActivateResult = EmptyResult - -browsingContext.CaptureScreenshotResult = { - data: text -} - -browsingContext.CloseResult = EmptyResult - -browsingContext.CreateResult = { - context: browsingContext.BrowsingContext, - ? userContext: browser.UserContext -} - -browsingContext.GetTreeResult = { - contexts: browsingContext.InfoList -} - -browsingContext.HandleUserPromptResult = EmptyResult - -browsingContext.LocateNodesResult = { - nodes: [ * script.NodeRemoteValue ] -} - -browsingContext.NavigateResult = { - navigation: browsingContext.Navigation / null, - url: text, -} - -browsingContext.PrintResult = { - data: text -} - -browsingContext.ReloadResult = browsingContext.NavigateResult - -browsingContext.SetBypassCSPResult = EmptyResult - -browsingContext.SetViewportResult = EmptyResult - -browsingContext.TraverseHistoryResult = EmptyResult - -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.HistoryUpdated = ( - method: "browsingContext.historyUpdated", - params: browsingContext.HistoryUpdatedParameters -) - -browsingContext.HistoryUpdatedParameters = { - context: browsingContext.BrowsingContext, - timestamp: js-uint, - url: text, - ? userContext: browser.UserContext -} - -browsingContext.DomContentLoaded = ( - method: "browsingContext.domContentLoaded", - params: browsingContext.NavigationInfo -) - -browsingContext.Load = ( - method: "browsingContext.load", - params: browsingContext.NavigationInfo -) - -browsingContext.DownloadWillBegin = ( - method: "browsingContext.downloadWillBegin", - params: browsingContext.DownloadWillBeginParams -) - -browsingContext.DownloadWillBeginParams = { - suggestedFilename: text, - browsingContext.BaseNavigationInfo -} - -browsingContext.DownloadEnd = ( - method: "browsingContext.downloadEnd", - params: browsingContext.DownloadEndParams -) - -browsingContext.DownloadEndParams = { - ( - browsingContext.DownloadCanceledParams // - browsingContext.DownloadCompleteParams - ) -} - -browsingContext.DownloadCanceledParams = ( - status: "canceled", - browsingContext.BaseNavigationInfo -) - -browsingContext.DownloadCompleteParams = ( - status: "complete", - filepath: text / null, - browsingContext.BaseNavigationInfo -) - -browsingContext.NavigationAborted = ( - method: "browsingContext.navigationAborted", - params: browsingContext.NavigationInfo -) - -browsingContext.NavigationCommitted = ( - method: "browsingContext.navigationCommitted", - 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, - ? userContext: browser.UserContext, - ? userText: text -} - -browsingContext.UserPromptOpened = ( - method: "browsingContext.userPromptOpened", - params: browsingContext.UserPromptOpenedParameters -) - -browsingContext.UserPromptOpenedParameters = { - context: browsingContext.BrowsingContext, - handler: session.UserPromptHandlerType, - message: text, - type: browsingContext.UserPromptType, - ? userContext: browser.UserContext, - ? defaultValue: text -} - -EmulationResult = ( - emulation.SetForcedColorsModeThemeOverrideResult / - emulation.SetGeolocationOverrideResult / - emulation.SetLocaleOverrideResult / - emulation.SetScreenOrientationOverrideResult / - emulation.SetScriptingEnabledResult / - emulation.SetScrollbarTypeOverrideResult / - emulation.SetTimezoneOverrideResult / - emulation.SetTouchOverrideResult / - emulation.SetUserAgentOverrideResult -) - -emulation.SetForcedColorsModeThemeOverrideResult = EmptyResult - -emulation.SetGeolocationOverrideResult = EmptyResult - -emulation.SetLocaleOverrideResult = EmptyResult - -emulation.SetNetworkConditionsResult = EmptyResult - -emulation.SetScreenSettingsOverrideResult = EmptyResult - -emulation.SetScreenOrientationOverrideResult = EmptyResult - -emulation.SetUserAgentOverrideResult = EmptyResult - -emulation.SetScriptingEnabledResult = EmptyResult - -emulation.SetScrollbarTypeOverrideResult = EmptyResult - -emulation.SetTimezoneOverrideResult = EmptyResult - -emulation.SetTouchOverrideResult = EmptyResult - - -NetworkResult = ( - network.AddDataCollectorResult / - network.AddInterceptResult / - network.ContinueRequestResult / - network.ContinueResponseResult / - network.ContinueWithAuthResult / - network.DisownDataResult / - network.FailRequestResult / - network.GetDataResult / - network.ProvideResponseResult / - network.RemoveDataCollectorResult / - network.RemoveInterceptResult / - network.SetCacheBehaviorResult / - network.SetExtraHeadersResult -) - -NetworkEvent = ( - network.AuthRequired // - network.BeforeRequestSent // - network.FetchError // - network.ResponseCompleted // - network.ResponseStarted -) - - -network.AuthChallenge = { - scheme: text, - realm: text, -} - -network.BaseParameters = ( - context: browsingContext.BrowsingContext / null, - isBlocked: bool, - navigation: browsingContext.Navigation / null, - redirectCount: js-uint, - request: network.RequestData, - timestamp: js-uint, - ? userContext: browser.UserContext / null, - ? intercepts: [+network.Intercept] -) - -network.BytesValue = network.StringValue / network.Base64Value; - -network.StringValue = { - type: "string", - value: text, -} - -network.Base64Value = { - type: "base64", - value: text, -} - -network.Collector = text - -network.CollectorType = "blob" - - -network.SameSite = "strict" / "lax" / "none" / "default" - - -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.DataType = "request" / "response" - -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 = { - ? columnNumber: js-uint, - ? lineNumber: js-uint, - ? request: network.Request, - ? stackTrace: script.StackTrace, - ? type: "parser" / "script" / "preflight" / "other" -} - -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, - destination: text, - initiatorType: text / 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.AddDataCollectorResult = { - collector: network.Collector -} - -network.AddInterceptResult = { - intercept: network.Intercept -} - -network.ContinueRequestResult = EmptyResult - -network.ContinueResponseResult = EmptyResult - -network.ContinueWithAuthResult = EmptyResult - -network.DisownDataResult = EmptyResult - -network.FailRequestResult = EmptyResult - -network.GetDataResult = { - bytes: network.BytesValue, -} - -network.ProvideResponseResult = EmptyResult - -network.RemoveDataCollectorResult = EmptyResult - -network.RemoveInterceptResult = EmptyResult - -network.SetCacheBehaviorResult = EmptyResult - -network.SetExtraHeadersResult = EmptyResult - -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, -} - -ScriptResult = ( - script.AddPreloadScriptResult / - script.CallFunctionResult / - script.DisownResult / - script.EvaluateResult / - script.GetRealmsResult / - script.RemovePreloadScriptResult -) - -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, - ? userContext: browser.UserContext, - ? 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 = { - script.RegExpLocalValue, - ? handle: script.Handle, - ? internalId: script.InternalId, -} - -script.DateRemoteValue = { - script.DateLocalValue, - ? handle: script.Handle, - ? internalId: script.InternalId, -} - -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, - ? userContext: browser.UserContext -} - -script.AddPreloadScriptResult = { - script: script.PreloadScript -} - -script.DisownResult = EmptyResult - -script.CallFunctionResult = script.EvaluateResult - -script.GetRealmsResult = { - realms: [*script.RealmInfo] -} - -script.RemovePreloadScriptResult = EmptyResult - - 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 -} - - -StorageResult = ( - storage.DeleteCookiesResult / - storage.GetCookiesResult / - storage.SetCookieResult -) - -storage.PartitionKey = { - ? userContext: text, - ? sourceOrigin: text, - Extensible, -} - -storage.GetCookiesResult = { - cookies: [*network.Cookie], - partitionKey: storage.PartitionKey, -} - -storage.SetCookieResult = { - partitionKey: storage.PartitionKey -} - -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, -) - -InputResult = ( - input.PerformActionsResult / - input.ReleaseActionsResult / - input.SetFilesResult -) - - -InputEvent = ( - input.FileDialogOpened -) - -input.PerformActionsResult = EmptyResult - -input.ReleaseActionsResult = EmptyResult - -input.SetFilesResult = EmptyResult - -input.FileDialogOpened = ( - method: "input.fileDialogOpened", - params: input.FileDialogInfo -) - -input.FileDialogInfo = { - context: browsingContext.BrowsingContext, - ? userContext: browser.UserContext, - ? element: script.SharedReference, - multiple: bool, -} - -WebExtensionResult = ( - webExtension.InstallResult / - webExtension.UninstallResult -) - -webExtension.Extension = text - -webExtension.InstallResult = { - extension: webExtension.Extension -} - -webExtension.UninstallResult = EmptyResult diff --git a/common/bidi/spec/remote.cddl b/common/bidi/spec/remote.cddl deleted file mode 100644 index 7490df1b44bc7..0000000000000 --- a/common/bidi/spec/remote.cddl +++ /dev/null @@ -1,1699 +0,0 @@ -Command = { - id: js-uint, - CommandData, - Extensible, -} - -CommandData = ( - BrowserCommand // - BrowsingContextCommand // - EmulationCommand // - InputCommand // - NetworkCommand // - ScriptCommand // - SessionCommand // - StorageCommand // - WebExtensionCommand -) - -EmptyParams = { - Extensible -} - -Extensible = (*text => any) - -js-int = -9007199254740991..9007199254740991 -js-uint = 0..9007199254740991 - -SessionCommand = ( - session.End // - session.New // - session.Status // - session.Subscribe // - session.Unsubscribe -) - -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", - ? 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, - ? file: session.UserPromptHandlerType, - ? prompt: session.UserPromptHandlerType, -} - -session.UserPromptHandlerType = "accept" / "dismiss" / "ignore"; - -session.Subscription = text - -session.SubscribeParameters = { - events: [+text], - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -session.UnsubscribeByIDRequest = { - subscriptions: [+session.Subscription], -} - -session.UnsubscribeByAttributesRequest = { - events: [+text], -} - -session.Status = ( - method: "session.status", - params: EmptyParams, -) - -session.New = ( - method: "session.new", - params: session.NewParameters -) - -session.NewParameters = { - capabilities: session.CapabilitiesRequest -} - -session.End = ( - method: "session.end", - params: EmptyParams -) - - -session.Subscribe = ( - method: "session.subscribe", - params: session.SubscribeParameters -) - -session.Unsubscribe = ( - method: "session.unsubscribe", - params: session.UnsubscribeParameters, -) - -session.UnsubscribeParameters = session.UnsubscribeByAttributesRequest / session.UnsubscribeByIDRequest - -BrowserCommand = ( - browser.Close // - browser.CreateUserContext // - browser.GetClientWindows // - browser.GetUserContexts // - browser.RemoveUserContext // - browser.SetClientWindowState // - browser.SetDownloadBehavior -) - -browser.ClientWindow = text; - -browser.ClientWindowInfo = { - active: bool, - clientWindow: browser.ClientWindow, - height: js-uint, - state: "fullscreen" / "maximized" / "minimized" / "normal", - width: js-uint, - x: js-int, - y: js-int, -} - -browser.UserContext = text; - -browser.UserContextInfo = { - userContext: browser.UserContext -} - -browser.Close = ( - method: "browser.close", - params: EmptyParams, -) - -browser.CreateUserContext = ( - method: "browser.createUserContext", - params: browser.CreateUserContextParameters, -) - -browser.CreateUserContextParameters = { - ? acceptInsecureCerts: bool, - ? proxy: session.ProxyConfiguration, - ? unhandledPromptBehavior: session.UserPromptHandler -} - -browser.GetClientWindows = ( - method: "browser.getClientWindows", - params: EmptyParams, -) - -browser.GetUserContexts = ( - method: "browser.getUserContexts", - params: EmptyParams, -) - -browser.RemoveUserContext = ( - method: "browser.removeUserContext", - params: browser.RemoveUserContextParameters -) - -browser.RemoveUserContextParameters = { - userContext: browser.UserContext -} - -browser.SetClientWindowState = ( - method: "browser.setClientWindowState", - params: browser.SetClientWindowStateParameters -) - -browser.SetClientWindowStateParameters = { - clientWindow: browser.ClientWindow, - (browser.ClientWindowNamedState // browser.ClientWindowRectState) -} - -browser.ClientWindowNamedState = ( - state: "fullscreen" / "maximized" / "minimized" -) - -browser.ClientWindowRectState = ( - state: "normal", - ? width: js-uint, - ? height: js-uint, - ? x: js-int, - ? y: js-int, -) - -browser.SetDownloadBehavior = ( - method: "browser.setDownloadBehavior", - params: browser.SetDownloadBehaviorParameters -) - -browser.SetDownloadBehaviorParameters = { - downloadBehavior: browser.DownloadBehavior / null, - ? userContexts: [+browser.UserContext] -} - -browser.DownloadBehavior = { - ( - browser.DownloadBehaviorAllowed // - browser.DownloadBehaviorDenied - ) -} - -browser.DownloadBehaviorAllowed = ( - type: "allowed", - destinationFolder: text -) - -browser.DownloadBehaviorDenied = ( - type: "denied" -) - -BrowsingContextCommand = ( - browsingContext.Activate // - browsingContext.CaptureScreenshot // - browsingContext.Close // - browsingContext.Create // - browsingContext.GetTree // - browsingContext.HandleUserPrompt // - browsingContext.LocateNodes // - browsingContext.Navigate // - browsingContext.Print // - browsingContext.Reload // - browsingContext.SetBypassCSP // - browsingContext.SetViewport // - browsingContext.TraverseHistory -) - -browsingContext.BrowsingContext = text; - -browsingContext.Locator = ( - browsingContext.AccessibilityLocator / - browsingContext.CssLocator / - browsingContext.ContextLocator / - browsingContext.InnerTextLocator / - browsingContext.XPathLocator -) - -browsingContext.AccessibilityLocator = { - type: "accessibility", - value: { - ? name: text, - ? role: text, - } -} - -browsingContext.CssLocator = { - type: "css", - value: text -} - -browsingContext.ContextLocator = { - type: "context", - value: { - context: browsingContext.BrowsingContext, - } -} - -browsingContext.InnerTextLocator = { - type: "innerText", - value: text, - ? ignoreCase: bool - ? matchType: "full" / "partial", - ? maxDepth: js-uint, -} - -browsingContext.XPathLocator = { - type: "xpath", - value: text -} - -browsingContext.Navigation = 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.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.GetTree = ( - method: "browsingContext.getTree", - params: browsingContext.GetTreeParameters -) - -browsingContext.GetTreeParameters = { - ? maxDepth: js-uint, - ? root: browsingContext.BrowsingContext, -} - -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.Navigate = ( - method: "browsingContext.navigate", - params: browsingContext.NavigateParameters -) - -browsingContext.NavigateParameters = { - context: browsingContext.BrowsingContext, - url: text, - ? wait: browsingContext.ReadinessState, -} - -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.Reload = ( - method: "browsingContext.reload", - params: browsingContext.ReloadParameters -) - -browsingContext.ReloadParameters = { - context: browsingContext.BrowsingContext, - ? ignoreCache: bool, - ? wait: browsingContext.ReadinessState, -} - -browsingContext.SetBypassCSP = ( - method: "browsingContext.setBypassCSP", - params: browsingContext.SetBypassCSPParameters -) - -browsingContext.SetBypassCSPParameters = { - bypass: true / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -browsingContext.SetViewport = ( - method: "browsingContext.setViewport", - params: browsingContext.SetViewportParameters -) - -browsingContext.SetViewportParameters = { - ? context: browsingContext.BrowsingContext, - ? viewport: browsingContext.Viewport / null, - ? devicePixelRatio: (float .gt 0.0) / null, - ? userContexts: [+browser.UserContext], -} - -browsingContext.Viewport = { - width: js-uint, - height: js-uint, -} - -browsingContext.TraverseHistory = ( - method: "browsingContext.traverseHistory", - params: browsingContext.TraverseHistoryParameters -) - -browsingContext.TraverseHistoryParameters = { - context: browsingContext.BrowsingContext, - delta: js-int, -} - -EmulationCommand = ( - emulation.SetForcedColorsModeThemeOverride // - emulation.SetGeolocationOverride // - emulation.SetLocaleOverride // - emulation.SetNetworkConditions // - emulation.SetScreenOrientationOverride // - emulation.SetScreenSettingsOverride // - emulation.SetScriptingEnabled // - emulation.SetScrollbarTypeOverride // - emulation.SetTimezoneOverride // - emulation.SetTouchOverride // - emulation.SetUserAgentOverride -) - - -emulation.SetForcedColorsModeThemeOverride = ( - method: "emulation.setForcedColorsModeThemeOverride", - params: emulation.SetForcedColorsModeThemeOverrideParameters -) - -emulation.SetForcedColorsModeThemeOverrideParameters = { - theme: emulation.ForcedColorsModeTheme / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.ForcedColorsModeTheme = "light" / "dark" - -emulation.SetGeolocationOverride = ( - method: "emulation.setGeolocationOverride", - params: emulation.SetGeolocationOverrideParameters -) - -emulation.SetGeolocationOverrideParameters = { - ( - (coordinates: emulation.GeolocationCoordinates / null) // - (error: emulation.GeolocationPositionError) - ), - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.GeolocationCoordinates = { - latitude: -90.0..90.0, - longitude: -180.0..180.0, - ? accuracy: (float .ge 0.0) .default 1.0, - ? altitude: float / null .default null, - ? altitudeAccuracy: (float .ge 0.0) / null .default null, - ? heading: (0.0...360.0) / null .default null, - ? speed: (float .ge 0.0) / null .default null, -} - -emulation.GeolocationPositionError = { - type: "positionUnavailable" -} - -emulation.SetLocaleOverride = ( - method: "emulation.setLocaleOverride", - params: emulation.SetLocaleOverrideParameters -) - -emulation.SetLocaleOverrideParameters = { - locale: text / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetNetworkConditions = ( - method: "emulation.setNetworkConditions", - params: emulation.SetNetworkConditionsParameters -) - -emulation.SetNetworkConditionsParameters = { - networkConditions: emulation.NetworkConditions / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.NetworkConditions = emulation.NetworkConditionsOffline - -emulation.NetworkConditionsOffline = { - type: "offline" -} - -emulation.SetScreenSettingsOverride = ( - method: "emulation.setScreenSettingsOverride", - params: emulation.SetScreenSettingsOverrideParameters -) - -emulation.ScreenArea = { - width: js-uint, - height: js-uint -} - -emulation.SetScreenSettingsOverrideParameters = { - screenArea: emulation.ScreenArea / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetScreenOrientationOverride = ( - method: "emulation.setScreenOrientationOverride", - params: emulation.SetScreenOrientationOverrideParameters -) - -emulation.ScreenOrientationNatural = "portrait" / "landscape" -emulation.ScreenOrientationType = "portrait-primary" / "portrait-secondary" / "landscape-primary" / "landscape-secondary" - -emulation.ScreenOrientation = { - natural: emulation.ScreenOrientationNatural, - type: emulation.ScreenOrientationType -} - -emulation.SetScreenOrientationOverrideParameters = { - screenOrientation: emulation.ScreenOrientation / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetUserAgentOverride = ( - method: "emulation.setUserAgentOverride", - params: emulation.SetUserAgentOverrideParameters -) - -emulation.SetUserAgentOverrideParameters = { - userAgent: text / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetScriptingEnabled = ( - method: "emulation.setScriptingEnabled", - params: emulation.SetScriptingEnabledParameters -) - -emulation.SetScriptingEnabledParameters = { - enabled: false / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetScrollbarTypeOverride = ( - method: "emulation.setScrollbarTypeOverride", - params: emulation.SetScrollbarTypeOverrideParameters -) - -emulation.SetScrollbarTypeOverrideParameters = { - scrollbarType: "classic" / "overlay" / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetTimezoneOverride = ( - method: "emulation.setTimezoneOverride", - params: emulation.SetTimezoneOverrideParameters -) - -emulation.SetTimezoneOverrideParameters = { - timezone: text / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -emulation.SetTouchOverride = ( - method: "emulation.setTouchOverride", - params: emulation.SetTouchOverrideParameters -) - -emulation.SetTouchOverrideParameters = { - maxTouchPoints: (js-uint .ge 1) / null, - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - - -NetworkCommand = ( - network.AddDataCollector // - network.AddIntercept // - network.ContinueRequest // - network.ContinueResponse // - network.ContinueWithAuth // - network.DisownData // - network.FailRequest // - network.GetData // - network.ProvideResponse // - network.RemoveDataCollector // - network.RemoveIntercept // - network.SetCacheBehavior // - network.SetExtraHeaders -) - - -network.AuthCredentials = { - type: "password", - username: text, - password: text, -} - -network.BytesValue = network.StringValue / network.Base64Value; - -network.StringValue = { - type: "string", - value: text, -} - -network.Base64Value = { - type: "base64", - value: text, -} - -network.Collector = text - -network.CollectorType = "blob" - - -network.SameSite = "strict" / "lax" / "none" / "default" - - -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.DataType = "request" / "response" - -network.Header = { - name: text, - value: network.BytesValue, -} - -network.Intercept = text - -network.Request = text; - - -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.AddDataCollector = ( - method: "network.addDataCollector", - params: network.AddDataCollectorParameters -) - -network.AddDataCollectorParameters = { - dataTypes: [+network.DataType], - maxEncodedDataSize: js-uint, - ? collectorType: network.CollectorType .default "blob", - ? contexts: [+browsingContext.BrowsingContext], - ? userContexts: [+browser.UserContext], -} - -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.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.DisownData = ( - method: "network.disownData", - params: network.DisownDataParameters -) - -network.DisownDataParameters = { - dataType: network.DataType, - collector: network.Collector, - request: network.Request, -} - -network.FailRequest = ( - method: "network.failRequest", - params: network.FailRequestParameters -) - -network.FailRequestParameters = { - request: network.Request, -} - -network.GetData = ( - method: "network.getData", - params: network.GetDataParameters -) - -network.GetDataParameters = { - dataType: network.DataType, - ? collector: network.Collector, - ? disown: bool .default false, - 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.RemoveDataCollector = ( - method: "network.removeDataCollector", - params: network.RemoveDataCollectorParameters -) - -network.RemoveDataCollectorParameters = { - collector: network.Collector -} - -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.SetExtraHeaders = ( - method: "network.setExtraHeaders", - params: network.SetExtraHeadersParameters -) - -network.SetExtraHeadersParameters = { - headers: [*network.Header] - ? contexts: [+browsingContext.BrowsingContext] - ? userContexts: [+browser.UserContext] -} - -ScriptCommand = ( - script.AddPreloadScript // - script.CallFunction // - script.Disown // - script.Evaluate // - script.GetRealms // - script.RemovePreloadScript -) - -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.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 = { - script.RegExpLocalValue, - ? handle: script.Handle, - ? internalId: script.InternalId, -} - -script.DateRemoteValue = { - script.DateLocalValue, - ? handle: script.Handle, - ? internalId: script.InternalId, -} - -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.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], - ? userContexts: [+browser.UserContext], - ? sandbox: text -} - -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.RemovePreloadScript = ( - method: "script.removePreloadScript", - params: script.RemovePreloadScriptParameters -) - -script.RemovePreloadScriptParameters = { - script: script.PreloadScript -} - -StorageCommand = ( - storage.DeleteCookies // - storage.GetCookies // - storage.SetCookie -) - -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.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.DeleteCookies = ( - method: "storage.deleteCookies", - params: storage.DeleteCookiesParameters, -) - -storage.DeleteCookiesParameters = { - ? filter: storage.CookieFilter, - ? partition: storage.PartitionDescriptor, -} - -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: float, - y: float, - ? 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, - ? height: js-uint, - ? pressure: (0.0..1.0), - ? tangentialPressure: (-1.0..1.0), - ? twist: (0..359), - ; 0 .. Math.PI / 2 - ? altitudeAngle: (0.0..1.5707963267948966), - ; 0 .. 2 * Math.PI - ? azimuthAngle: (0.0..6.283185307179586), -) - -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] -} - -WebExtensionCommand = ( - webExtension.Install // - webExtension.Uninstall -) - -webExtension.Extension = text - -webExtension.Install = ( - method: "webExtension.install", - params: webExtension.InstallParameters -) - -webExtension.InstallParameters = { - extensionData: webExtension.ExtensionData, -} - -webExtension.ExtensionData = ( - webExtension.ExtensionArchivePath / - webExtension.ExtensionBase64Encoded / - webExtension.ExtensionPath -) - -webExtension.ExtensionPath = { - type: "path", - path: text, -} - -webExtension.ExtensionArchivePath = { - type: "archivePath", - path: text, -} - -webExtension.ExtensionBase64Encoded = { - type: "base64", - value: text, -} - -webExtension.Uninstall = ( - method: "webExtension.uninstall", - params: webExtension.UninstallParameters -) - -webExtension.UninstallParameters = { - extension: webExtension.Extension, -} diff --git a/common/webref_cddl.bzl b/common/webref_cddl.bzl new file mode 100644 index 0000000000000..75d1eb202af2d --- /dev/null +++ b/common/webref_cddl.bzl @@ -0,0 +1,46 @@ +"""Module extension to download CDDL spec files from w3c/webref at a pinned commit.""" + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") + +_COMMIT = "5301ec52f85f9156ae696f24523d722193fc0817" +_BASE_URL = "https://raw.githubusercontent.com/w3c/webref/{commit}/ed/cddl".format(commit = _COMMIT) + +# All CDDL files in https://github.com/w3c/webref/tree/{commit}/ed/cddl +# Each entry is (repo_name, filename, sha256). +# Files are downloaded as "spec.cddl" in each repo, so consumers can reference +# them consistently as @//file:spec.cddl. +_CDDL_FILES = [ + ("at_driver_all_cddl", "at-driver-all.cddl", "f8502ca866e494d9c46a5209eb0cfec57107fffe587d154a365a19e8b93dd7aa"), + ("at_driver_local_cddl", "at-driver-local-cddl.cddl", "f1b64b2d852c5ea826cc9a6431196979cdf7c73a0182c98dc7c3c40005bdbcba"), + ("at_driver_remote_cddl", "at-driver-remote-cddl.cddl", "18ec6dc05d515b6f01169db3aa27f36c38f3ecb0c7c070735d27c7f1b1957533"), + ("permissions_all_cddl", "permissions-all.cddl", "50e9b0017415e27a18a190bf37df048d4513f8432e42fe97901c9f2d55204b50"), + ("permissions_local_cddl", "permissions-local-cddl.cddl", "0f9f266f9e991eb7656848e917318b5aae4b06b4cf3b48e95ee50ed264912cb8"), + ("permissions_remote_cddl", "permissions-remote-cddl.cddl", "17b968bbaf97782908c69637cc1152d0119c559f5f50b047e5e30894bf798983"), + ("prefetch_all_cddl", "prefetch-all.cddl", "51409b998176a81f681252f8ee16bea5a54a3be9d1cfee9f13ca34efd1feb5ea"), + ("prefetch_local_cddl", "prefetch-local-cddl.cddl", "51409b998176a81f681252f8ee16bea5a54a3be9d1cfee9f13ca34efd1feb5ea"), + ("ua_client_hints_all_cddl", "ua-client-hints-all.cddl", "6bb41f05d09c755305226b7350970e54f6404698510ea2e1e7a931eaa2647aeb"), + ("ua_client_hints_local_cddl", "ua-client-hints-local-cddl.cddl", "c71077e4ecea5f1cbed309cfb16418195ffdb631621eff3f9c784907c9c2c7dc"), + ("ua_client_hints_remote_cddl", "ua-client-hints-remote-cddl.cddl", "c62185206132fbea3085e87af93315a7ecc39c802c20a2aa5d808d668e5664f7"), + ("web_bluetooth_all_cddl", "web-bluetooth-all.cddl", "bc687d19c1e92cf4f0a37bbf7f9aa21db956344b34d8cdda4319b7f4615b6d1d"), + ("web_bluetooth_local_cddl", "web-bluetooth-local-cddl.cddl", "bc687d19c1e92cf4f0a37bbf7f9aa21db956344b34d8cdda4319b7f4615b6d1d"), + ("web_bluetooth_remote_cddl", "web-bluetooth-remote-cddl.cddl", "25bef59834f25d7113e123898b952f6d37b78836b05c1a3b58012879ccebe176"), + ("webdriver_bidi_all_cddl", "webdriver-bidi-all.cddl", "58baffeda459e2fee2d9b58a896eb4394e87e861ada5cb761a169d32e122138f"), + ("webdriver_bidi_local_cddl", "webdriver-bidi-local-cddl.cddl", "a88eec3567ed06b3a3884f9b4ef334c1726a64050e4290ae66c417ef1c77ea06"), + ("webdriver_bidi_remote_cddl", "webdriver-bidi-remote-cddl.cddl", "e51f3f0103664842b3c1211d4c6726b014658945d6166155054617904f40cbe0"), +] + +def webref_cddl(): + for name, filename, sha256 in _CDDL_FILES: + http_file( + name = name, + downloaded_file_path = "spec.cddl", + sha256 = sha256, + url = _BASE_URL + "/" + filename, + ) + +def _webref_cddl_impl(_ctx): + webref_cddl() + +webref_cddl_extension = module_extension( + implementation = _webref_cddl_impl, +) diff --git a/py/BUILD.bazel b/py/BUILD.bazel index 3079d49571780..93b7072604b1f 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -622,7 +622,7 @@ generate_devtools_latest( # Generate BiDi source files from CDDL specification generate_bidi( name = "create-bidi-src", - cddl_file = "//common/bidi/spec:all.cddl", + cddl_file = "@webdriver_bidi_all_cddl//file:spec.cddl", enhancements_manifest = "//py/private:bidi_enhancements_manifest.py", extra_srcs = [ "//py/private:_event_manager.py",