Fuchsia.web

添加次数:7

协议

上下文

fuchsia.web/context.fidl 中定义

管理与一组 Frame 关联的浏览状态(例如 LocalStorage、Cookie 等)。

CreateFrame

在此 Context 下创建一个新的 Frame。销毁 Context 会触发销毁其所有关联 Frame可传输到另一个组件,但不能在多个组件之间共享。

  • frame:将绑定到创建的 Frame 的接口请求。

请求

名称类型
frame server_end<Frame>

CreateFrameWithParams

Context.CreateFrame 类似,但具有额外的参数。

  • params:用于创建的配置。如果表无法克隆,此方法将失败并显示 ZX_ERR_INVALID_ARGS
  • frame:将绑定到创建的 Frame 的接口请求。

请求

名称类型
params CreateFrameParams
frame server_end<Frame>

GetCookieManager

用于观察在此上下文下托管的网站的 Cookie。

请求

名称类型
manager server_end<CookieManager>

GetRemoteDebuggingPort

等待一个或多个 Frame 支持调试,并返回开发者工具端口号。为了接收端口号,可能会有多个调用加入队列。

如果发生错误,ContextError 会被设为此值:

  • REMOTE_DEBUGGING_PORT_NOT_OPENED:未在 CreateContextParams 中设置 remote_debugging_port,或远程调试服务无法启动。

请求

<EMPTY>

响应

名称类型
payload Context_GetRemoteDebuggingPort_Result

ContextProvider

fuchsia.web/context.fidl 中定义

允许创建上下文资源的顶级服务接口。

创建

创建一个新的浏览器 Context,其状态完全独立且与其他 Context(Contexts) 隔离。

  • params:用于创建上下文的配置。
  • context:将接收绑定的上下文服务的接口请求。

请求

名称类型
params CreateContextParams
context server_end<Context>

CookieManager

fuchsia.web/cookie.fidl 中定义

提供监控和访问浏览器 Cookie 状态的方法。

GetCookieList

返回 Cookie 列表,可以选择仅限与 url 匹配的 Cookie,还可以选择返回 namecookies 会迭代匹配的 Cookie,包括其 value

请求

名称类型
url Url
name CookieName
cookies server_end<CookiesIterator>

ObserveCookieChanges

观察将通过请求发送到 url 的所有名为 name 的 Cookie 发生的更改。

如果 urlname 均未设置,则观察所有 Cookie。如果仅设置 url,则会观察该网址的所有 Cookie。如果同时设置了两者,则仅观察与这两个字段都匹配的 Cookie。

changes 遍历 Cookie 更改流。添加或更新表示为完整 Cookie,而删除表示为未设置 value 的 Cookie。

请求

名称类型
url Url
name CookieName
changes server_end<CookiesIterator>

CookiesIterator

fuchsia.web/cookie.fidl 中定义

用于对一组 Cookie 或对 Cookie 的一系列更改进行迭代。

GetNext

获取下一批 Cookie 或对 Cookie 的更改。RFC6265 不对可存储的 Cookie 数量指定上限。

请求

<EMPTY>

响应

名称类型
changed_cookies vector<Cookie>

调试

fuchsia.web/debug.fidl 中定义

用于启用针对上下文的开发者工具服务的调试服务。

EnableDevTools

在每次后续创建 Context 时启用开发者工具服务,并将后续的开发者工具事件传递给提供的 listener。回调指示 WebEngine 何时处于可调试状态。事件将发送到使用此方法注册的每个 listener

由于开发者工具调试功能使用 TCP 作为传输公开,因此只有可以使用网络功能创建的上下文才会将自身报告为可用于调试。

请求

名称类型
listener DevToolsListener

响应

<EMPTY>

DevToolsListener

fuchsia.web/debug.fidl 中定义

用于观察开发者工具服务可用性事件的界面。

OnContextDevToolsAvailable

当开发者工具服务在新的 Context 中可用时调用。

  • listener:将通过哪个渠道传递新上下文的开发者工具事件。当 Context 被销毁时,此通道将断开连接。

请求

名称类型
listener server_end<DevToolsPerContextListener>

DevToolsPerContextListener

fuchsia.web/debug.fidl 中定义

调试组件提供的接口,用于观察开发者工具服务打开事件。

OnHttpPortOpen

当开发者工具服务开始在 port 上接受 TCP 连接时调用。port 将保持打开状态,直到 Context 被销毁。

  • port:服务使用的端口。

请求

名称类型
port uint16

fuchsia.web/frame.fidl 中定义

AddBeforeLoadJavaScript

针对每次后续网页加载(其中 Frame 的网址在 origins 中反映的来源)时执行 UTF-8 编码的 script。脚本会在执行文档脚本之前提前执行。

脚本由客户端管理的标识符 id 标识。之前使用同一 id 注入的任何脚本都将被替换。

多个绑定的执行顺序与绑定的添加顺序相同。如果添加的脚本破坏了同一 id 的现有脚本,则前一个脚本在注入顺序中的优先级将保持不变。

必须至少指定一个 origins 条目。如果在 origins 中指定了通配符 "*",系统将无条件地评估脚本。

如果发生错误,FrameError 将设为以下值之一:

  • BUFFER_NOT_UTF8script 未经过 UTF-8 编码。
  • INVALID_ORIGINorigins 是一个空矢量。

请求

名称类型
id uint64
origins vector<string>
script fuchsia.mem/Buffer

响应

名称类型
payload Frame_AddBeforeLoadJavaScript_Result

关闭

请求妥善或立即拆解帧内容,并通过帧 epitaph 实现完成通知。

安全拆解允许在实现和 Web 内容(例如unload 事件处理脚本)最多运行指定时间段。立即拆解只会运行实现中最少的清理任务,不允许 Web 内容运行事件处理脚本。

  • 如果 timeout 为零,则立即启动拆解。该频道将以 ZX_OK 结束。这相当于调用方关闭 Frame 通道。

  • 如果 timeout 为非零值,则会启动安全拆解。如果 Frame 在指定的 timeout 内关闭,则通道将使用 ZX_OK 关闭,否则返回 ZX_ERR_TIMED_OUT

  • 如果未指定 timeout,系统会应用合理的实现专用超时时间。

Close() 的后续调用将覆盖之前指定的所有 Close() 超时。

添加数量:10

请求

名称类型
payload FrameCloseRequest

ConfigureInputTypes

启用或停用对用户输入的指定 types 的处理。 allow 指定是启用还是停用指定的 types。默认情况下,所有输入类型都处于启用状态。

请求

名称类型
types InputTypes
allow AllowInputState

CreateView

使用指定的 view_token 创建一个新视图。调用方应将令牌的另一端传递给 fuchsia.ui.gfx/ViewHolderArgs,以便将新视图附加到视图树。

如需了解使用此方法时必须存在的附加服务,请参阅 CreateContextParams.service_directory 的说明。

已废弃:13

请求

名称类型
view_token fuchsia.ui.views/ViewToken

CreateView2

使用 args 下定义的指定 view_creation_token 创建一个新的 Flatland 视图。调用方应将令牌的另一端传递给 fuchsia.ui.composition/Flatland.CreateViewport,以将新的 Flatland 视图附加到其图。

请求

名称类型
args CreateView2Args

CreateViewWithViewRef

使用指定的 view_token 创建一个新视图。调用方应将令牌的另一端传递给 fuchsia.ui.gfx/ViewHolderArgs,以便将新视图附加到视图树。可以先克隆 view_ref,然后再将其传递给此方法,从而允许客户端跟踪视图。

不得为 view_ref_control 设置 ZX_RIGHT_DUPLICATE,否则视图创建将失败且 view_token 将关闭。

如需了解使用此方法时必须存在的附加服务,请参阅 CreateContextParams.service_directory 的说明。

已废弃:13

请求

名称类型
view_token fuchsia.ui.views/ViewToken
view_ref_control fuchsia.ui.views/ViewRefControl
view_ref fuchsia.ui.views/ViewRef

DisableHeadlessRendering

停止无头渲染帧。

只能用于使用 ContextFeatureFlags.HEADLESS 创建的上下文。

请求

<EMPTY>

EnableHeadlessRendering

启用 Frame 的无头渲染。

如果内容依赖于正常触发的布局和/或动画事件,则使用此方法。只能用于使用 ContextFeatureFlags.HEADLESS 创建的上下文。

请求

<EMPTY>

ExecuteJavaScript

如果 Frame 的网址的来源与 origins 中的条目匹配,则在 Frame 中执行 UTF-8 编码的 script

必须至少指定一个 origins 条目。如果在 origins 中指定了通配符 "*",系统将无条件地评估脚本。

以 JSON 编码字符串形式返回执行 script 的结果。

请注意,脚本与文档共享相同的执行上下文,这意味着文档可能会以任意或不可预测的方式修改脚本设置的变量、类或对象。

如果发生错误,FrameError 将设置为以下值之一:

  • BUFFER_NOT_UTF8script 未经过 UTF-8 编码。
  • INVALID_ORIGINFrame 的当前网址与 origins 中的任何值都不匹配,或者 origins 是一个空矢量。

请求

名称类型
origins vector<string>
script fuchsia.mem/Buffer

响应

名称类型
payload Frame_ExecuteJavaScript_Result

ExecuteJavaScriptNoResult

Frame.ExecuteJavaScript 的变体,用于执行提供的脚本而不返回结果。

请求

名称类型
origins vector<string>
script fuchsia.mem/Buffer

响应

名称类型
payload Frame_ExecuteJavaScriptNoResult_Result

ForceContentDimensions

替换向 Web 内容报告的维度。针对 Web 内容报告的 devicePixelRatio 会根据 View 像素尺寸的变化而进行调整,而不是更改报告给内容的尺寸。使用 null web_dips 调用可移除之前任何强制内容尺寸。

已废弃:13

请求

名称类型
web_dips fuchsia.ui.gfx/vec2?

GetMediaPlayer

返回 fuchsia.media.sessions2/Player 接口,通过该接口,可以观察和/或控制帧中的媒体(即视频/音频)播放。对于每个,一次只能有一个 fuchsia.media.sessions2/Player 处于活动状态。

请求

名称类型
player server_end<fuchsia.media.sessions2/Player>

GetNavigationController

返回一个界面,通过该界面,Frame 可导航到所需网址、执行重新加载等操作。

请求

名称类型
controller server_end<NavigationController>

GetPrivateMemorySize

返回 Frame 的主文档使用的私有(非共享)物理内存量。返回的大小可能无法反映嵌入式 iframe 的内存用量。

请求

<EMPTY>

响应

名称类型
size_bytes uint64

PostMessage

将消息发布到帧的 onMessage 处理程序。

target_origin 用于限制将消息传送至指定来源。如果 target_origin"*",则无论消息来源如何,消息都将发送到文档。如需详细了解如何应用目标来源政策,请参阅 HTML 规范第 9.4.3 节。

如果发生错误,FrameError 将设为以下值之一:

  • INTERNAL_ERROR:WebEngine 未能创建消息管道。
  • BUFFER_NOT_UTF8messagedata 属性中的脚本未采用 UTF-8 编码。
  • INVALID_ORIGINorigins 是一个空矢量。
  • NO_DATA_IN_MESSAGEmessage 中缺少 data 属性。

请求

名称类型
target_origin Url
message WebMessage

响应

名称类型
payload Frame_PostMessage_Result

RemoveBeforeLoadJavaScript

移除之前添加的 JavaScript 代码段(由 id 标识)。如果没有由 id 标识的 JavaScript 代码段,则此为空操作。

请求

名称类型
id uint64

ResetContentAreaSettings

将框架的 ContentAreaSettings 重置为默认值。

请求

<EMPTY>

SetBlockMediaLoading

设置是否阻止帧中的所有 HTMLMediaElements 提取和加载媒体资源。

例如,可用于防止在不可见的帧中加载媒体。

媒体加载被阻止后,autoplay 设为 true 的元素将不会开始播放。调用 play() 返回的 promise 将保持未解析状态,直到加载被调用此方法解除阻塞。

取消屏蔽媒体加载后,元素将视情况开始提取、提供资源、加载和播放。

在媒体加载被阻止之前,已开始为当前来源提取或加载媒体资源的任何元素将继续根据需要提取、加载和开始播放。这包括对 play() 的调用(即使在媒体加载被阻止后)。

请求

名称类型
blocked bool

SetConsoleLogSink

指定将 console 日志输出发送到的位置。默认情况下,日志输出将路由到通过 fuchsia.web/Context 的服务目录获取的 fuchsia.logger/LogSink

请求

名称类型
sink fuchsia.logger/LogSink?

SetContentAreaSettings

针对 Web 内容在框架中的运行方式设定各种设置。可以随时调用,包括在网址加载后调用。每次调用都只会更改指定的字段,并覆盖所有先前的值。

如果帧不支持 ContentAreaSettings 中的任何值,此方法将失败并显示 ZX_ERR_NOT_SUPPORTED

请求

名称类型
settings ContentAreaSettings

SetJavaScriptLogLevel

如果设置为 ConsoleLogLevel.NONE 以外的值,则允许 Web 内容通过 console 对象(例如,使用 debug()log()info()warn()error())将消息记录到为此 Frame 配置的 fuchsia.logger/LogSink。默认值为 {1N}Log1Level{/14。ConsoleLogLevel.NONE

由于系统日志可能会持久保留,因此建议您在无痕模式和其他无痕浏览模式下使用 ConsoleLogLevel.NONE

日志行会写入为此 fuchsia.web/Frame 配置的 fuchsia.logger/LogsSink,严重程度对应如下:

请求

名称类型
level ConsoleLogLevel

SetMediaSettings

为帧设置 fuchsia.media/FrameMediaSettings。指定的参数适用于处理此消息后启动的音频流。应在帧转到内容之前调用,以确保将设置应用于所有媒体流。由于请求流水线,这意味着在调用 Frame.GetNavigationController()NavigationController.LoadUrl() 之前执行此操作。

请求

名称类型
settings FrameMediaSettings

SetNavigationEventListener

设置用于处理页面导航事件的监听器。

  • listener:要使用的观察器。如果为 null,则取消注册任何现有监听器。

请求

名称类型
listener NavigationEventListener?

SetNavigationEventListener2

设置用于处理页面导航事件的监听器。监听器将立即收到当前导航状态。之后,每当状态发生变化时,它都会收到通知。

  • listener:要使用的观察器。如果为 null,则取消注册任何现有监听器。
  • flags:应为监听器启用的可选功能的标记。

请求

名称类型
listener NavigationEventListener?
flags NavigationEventListenerFlags

SetNavigationPolicyProvider

Frame 设置导航策略提供程序。设置后,Frame 会在处理导航请求时发送 NavigationPolicyProvider.EvaluateRequestedNavigationparams 定义消息的发送时间。发送 EvaluateRequestedNavigation 消息后,Frame 将阻止相应的导航,直到收到响应。

应在 GetNavigationController 之前调用,以确保它应用于所有导航,包括第一个 NavigationController.LoadURL 请求。

请求

名称类型
params NavigationPolicyProviderParams
provider NavigationPolicyProvider

SetPermissionState

设置指定的 permissionweb_origin 的权限状态。默认情况下,系统会拒绝所有权限。

请求

名称类型
permission PermissionDescriptor
web_origin Url
state PermissionState

SetPopupFrameCreationListener

设置用于处理 Web 内容打开的弹出式帧的监听器。如果没有监听器,所有新的弹出帧都将被屏蔽。

  • listener:要使用的监听器。如果为 null,则取消注册任何现有监听器。

请求

名称类型
listener PopupFrameCreationListener?

SetUrlRequestRewriteRules

提供一组要应用于后续每个网址请求的 UrlRequestRewriteRule

  • rules是按顺序累积的。
  • rules 仅适用于重定向链中的第一个网址请求。
  • rules”必须先经过验证,然后才能应用。如果 rules 无效,系统会使用 ERR_INVALID_ARGS 关闭 Frame
  • 在处理完 Frame.SetUrlRequestRewriteRules 的确认回调之前,不得再次调用它。如果发生这种情况,Frame 将使用 ERR_BAD_STATE 关闭。

请求

名称类型
rules vector<UrlRequestRewriteRule>[4096]

响应

<EMPTY>

FrameHost

fuchsia.web/context.fidl 中定义

上下文客户端用来将托管功能委托给所选对等方。

CreateFrameWithParams

行为与 Context.CreateFrameWithParams 完全相同。

请求

名称类型
params CreateFrameParams
frame server_end<Frame>

MessagePort

fuchsia.web/frame.fidl 中定义

表示 HTML5 MessageChannel 的一端。可用于在 Frame 的脚本上下文中与对等的 MessagePort 发送和交换消息。当 MessagePort 通道的任何一端关闭时,端口都会被销毁。

PostMessage

向对等方发送 WebMessage。系统会按顺序处理这些元素,一次一个。在再次调用 MessagePort.PostMessage 之前,调用方无需等待完成回调。

如果发生错误,FrameError 将设为以下值之一:

  • BUFFER_NOT_UTF8messagedata 属性中的脚本未采用 UTF-8 编码。
  • NO_DATA_IN_MESSAGEmessage 中缺少 data 属性。

请求

名称类型
message WebMessage

响应

名称类型
payload MessagePort_PostMessage_Result

ReceiveMessage

从通道异步读取下一条消息。当客户端准备好处理另一条消息时,应调用回调函数。未接收的消息会在发送方端缓冲,并受到其可用资源的限制。

请求

<EMPTY>

响应

名称类型
message WebMessage

fuchsia.web/navigation.fidl 中定义

提供用于控制和查询 Frame 的导航状态的方法。

告知框架导航到其历史记录中的上一页(如果有)。

<EMPTY>

告知 Frame 导航到其历史记录中的下一页(如果有)。

<EMPTY>

指示 Frame 导航到 url

  • url:要导航到的地址。
  • params:影响资源加载方式的其他参数(例如 Cookie、HTTP 标头等)

如果发生错误,NavigationControllerError 会设置为以下值之一:

  • INVALID_URLurl 参数无效。
  • INVALID_HEADERLoadUrlParams.headers 中至少有一个标头无效。
名称类型
url Url
params LoadUrlParams
名称类型
payload NavigationController_LoadUrl_Result

告知 Frame 重新加载当前页面。

名称类型
type ReloadType

如果导航正在进行,告知 Frame 停止当前导航。

<EMPTY>

fuchsia.web/navigation.fidl 中定义

由嵌入器提供的接口,用于接收有关 Frame 中导航事件的通知。

每当用户可见的导航状态发生变化时,系统都会立即调用 Frame.SetNavigationEventListener。在第一次调用中,change 包含当前导航状态(在第一个导航请求之前为空)。在后续的每次调用中,change 都将为自上一次通知以来任何时间发生变更的所有字段设置值。这意味着某些字段的值可能与先前报告的值相同,例如,这些字段更改为其他值并再次更改。如果某个字段未设置,则自上次通知以来,其值在任何时候都未更改。

实现器必须调用确认回调以接收新的导航事件。

名称类型
change NavigationState

<EMPTY>

fuchsia.web/navigation.fidl 中定义

FrameNavigationPolicyProviderParams 中指定的某个阶段处理导航请求时调用。导航会暂停,直到收到结果为止。返回的 NavigationDecision 会定义导航应如何继续。

名称类型
requested_navigation RequestedNavigation
名称类型
decision NavigationDecision

PopupFrameCreationListener

fuchsia.web/frame.fidl 中定义

OnPopupFrameCreated

Frame 创建新的弹出式 frame 时调用。弹出框架及其创建方式的相关信息通过 info 提供。系统调用确认回调后会传送其他弹出式帧。

请求

名称类型
frame Frame
info PopupFrameCreationInfo

响应

<EMPTY>

结构

Context_GetRemoteDebuggingPort_Response

fuchsia.web/context.fidl 中定义

字段类型说明默认
port uint16 无默认取景方式

Frame_AddBeforeLoadJavaScript_Response

fuchsia.web/frame.fidl 中定义

<EMPTY>

Frame_ExecuteJavaScriptNoResult_Response

fuchsia.web/frame.fidl 中定义

<EMPTY>

Frame_ExecuteJavaScript_Response 资源

fuchsia.web/frame.fidl 中定义

字段类型说明默认
result fuchsia.mem/Buffer 无默认取景方式

Frame_PostMessage_Response

fuchsia.web/frame.fidl 中定义

<EMPTY>

MessagePort_PostMessage_Response

fuchsia.web/frame.fidl 中定义

<EMPTY>

fuchsia.web/navigation.fidl 中定义

<EMPTY>

NoArgumentsAction

fuchsia.web/navigation.fidl 中定义

NavigationDecision 中用于不含任何参数的操作的空结构体。

<EMPTY>

枚举

allowInputState strict

类型:int32

fuchsia.web/frame.fidl 中定义

控制 Frame.ConfigureInputTypes() 是允许还是拒绝处理指定的 InputTypes

名称说明
1
2

AutoplayPolicy 严格

类型:int32

fuchsia.web/context.fidl 中定义

指定自动(非用户启动)视频和音频内容播放的政策。

名称说明
1

允许所有媒体自动播放。

2

允许在文档收到用户激活后自动播放。这可能是用户操作或设置了 LoadUrlParams.was_user_activated 的结果。

ConsoleLogLevel strict

类型:int32

fuchsia.web/frame.fidl 中定义

名称说明
100

无日志记录。

-1

输出来自 console.debug() 及更高级别的消息。

0

输出来自 console.log()console.info() 及更高级别的消息。

1

输出来自 console.warn()console.error() 的消息。

2

console.error() 输出消息。

ContextError strict

类型:int32

fuchsia.web/context.fidl 中定义

名称说明
1

未打开远程调试服务。

FrameError 严格

类型:int32

fuchsia.web/frame.fidl 中定义

表示 Frame 方法的返回状态。

名称说明
1

发生了内部错误。

2

提供的缓冲区未采用 UTF-8 编码。

3

框架网址与调用方提供的任何源都不匹配。

4

WebMessage 中缺少必需的 data 属性。

LoadUrlReason 严格

类型:uint32

fuchsia.web/navigation.fidl 中定义

描述 NavigationController.LoadUrl 请求的来源。

名称说明
1

导航由用户提供的网址启动。

类型:int32

fuchsia.web/navigation.fidl 中定义

表示 NavigationController 方法的返回状态。

名称说明

PageType 严格

类型:uint32

fuchsia.web/navigation.fidl 中定义

NavigationState 中对页面类型进行表征。

名称说明
0

常规网页。

1

错误页。

PermissionState 严格

类型:uint8

fuchsia.web/frame.fidl 中定义

网站权限的状态。

名称说明
1

已拒绝授予权限。

2

已授予权限。

PermissionType strict

类型:uint16

fuchsia.web/frame.fidl 中定义

标识可向网站来源授予的一类权限。

名称说明
1

使用麦克风的权限。

2

使用摄像头的权限。

3

拥有使用 EME 的设备标识符的权限。

4

拥有使用永久性存储空间的权限。

重新加载类型(严格

类型:uint32

fuchsia.web/navigation.fidl 中定义

说明重新加载的类型。

名称说明
0

重新加载当前条目,绕过主要资源的缓存。

1

重新加载当前条目,完全绕过缓存。

UrlRequestAction 严格

类型:int32

fuchsia.web/url_request_rewrite_rules.fidl 中定义

名称说明
1

允许系统处理请求。

2

屏蔽请求。

ContentAreaSettings

fuchsia.web/frame.fidl 中定义

框架中 Web 内容的设置。由 Frame 创建的弹出式 Frame 会将其设置初始化为 Frame 的当前设置。

序数字段类型说明
hide_scrollbars bool

指定是否隐藏帧的滚动条。如果省略,则默认值为 false。

autoplay_policy AutoplayPolicy

指定帧的自动播放政策。如果省略,则默认政策为 REQUIRE_USER_ACTIVATION

theme fuchsia.settings/ThemeType

指定通过 prefers-color-scheme 媒体查询向 Web 内容报告的颜色主题。 有效输入为 LIGHTDARKDEFAULT。如果省略,则默认为 LIGHT 主题。指定 DEFAULT 意味着使用系统设置,并且要求 Context 具有 fuchsia.settings.Display 服务。如果该服务不可用,Frame 将与 ZX_ERR_INVALID_ARGS 断开连接。

page_scale float32

设置应应用于此帧中呈现的 Web 内容的缩放比例(缩放级别)。高于 1.0 的值会放大所有 Web 内容(包括文字和图片),而低于 1.0 的值则会缩小。换言之,高于 1.0 的值用于放大,低于 1.0 的值用于缩小。物理像素与 CSS 像素之间的总体比率是使用此方法设置的缩放比例与 Sense 提供的缩放比例(请参阅 fuchsia.ui.gfx.Metrics)的结果。该商品在 Web 内容中显示为 window.devicePixelRatio。如果省略,则默认值为 1.0。

此设置对屏幕上的视图大小以及视图渲染的分辨率没有任何影响。原生(非网页)界面元素(如默认滚动条和默认鼠标光标)不会缩放。启用双指张合缩放功能后,用户可以进一步缩放网页(请参阅 InputTypes.GESTURE_PINCH)。

ContentDirectoryProvider 资源

fuchsia.web/context.fidl 中定义

定义托管 fuchsia.io/Directory 资源的提供方。内容可以通过提供程序对资源文件执行 GET 操作,但无法枚举目录。资源可通过其网址 fuchsia-dir://<provider-name>/<path/to/resource> 进行访问

默认情况下,系统会通过“嗅探”文件内容自动确定文件的 MIME 类型。不会声明任何内容编码,浏览器会将其解读为含义 "text/plain"

您可以选择性地由位于文件旁边的元数据文件明确指定内容类型和编码元数据。元数据在 JSON 文件中表示,并以它们描述的文件命名(使用 "._metadata" 后缀)。

例如,文件 "index.html" 将包含一个名为 "index.html._metadata" 的元数据文件,其中包含以下内容:

{
  "charset": "utf-8",
  "mime": "text/html"
}

序数字段类型说明
name string[255]

提供商的名称。不得为空,并且只能包含字母数字、英文句点和短划线。

directory fuchsia.io/Directory

包含此提供方提供的文件的目录。

fuchsia.web/cookie.fidl 中定义

序数字段类型说明
id CookieId

包含用于识别 Cookie 的字段的表。

value string

Cookie 值。 RFC6265 没有指定 Cookie 大小限制,但建议至少支持 4096 个字节。

CookieId

fuchsia.web/cookie.fidl 中定义

序数字段类型说明
name CookieName

网站选择的 RFC2616“令牌”,用于标识 Cookie。

domain string[255]

此 Cookie 作用域的 RFC1034“子网域”。例如“example.com”允许从所有 *.example.com 子网域进行访问。

path string[65536]

此 Cookie 的作用域网址“path”前缀。例如“/”将允许从所有路径访问。

CreateContextParams 资源

fuchsia.web/context.fidl 中定义

用于指定新上下文的配置的参数。

序数字段类型说明
service_directory fuchsia.io/Directory

上下文要使用的服务目录。

服务目录中必须包含以下服务:

建议使用以下服务,以允许将 CPU 调度配置文件应用于线程,从而调整其性能,尤其是针对媒体渲染的性能。

必须提供以下服务,才能使用 Frame.CreateViewFrame.CreateViewWithViewRefFrame.CreateView2] 在“风景”视图中呈现 Web 内容:

必须提供以下服务才能收集诊断跟踪数据。

data_directory fuchsia.io/Directory

包含 Context 持久性数据的目录的句柄。如果未设置,则创建的 Context 将是无状态的,其所有数据在 Context 销毁时会被舍弃。

如果设置了此字段,则不得与任何其他上下文共享 data_directory

user_agent_product string[128]

可选字符串,描述要附加到用户代理字符串的嵌入产品。请参阅 HTTP 用户代理标头的规范。还要求指定 user_agent_version

user_agent_version string[128]

要附加到用户代理字符串的嵌入产品的可选版本。

还要求指定 user_agent_product

remote_debugging_port uint16

允许在启用远程调试(使用开发者工具协议)的情况下创建框架。如果 port 为 0,将使用临时端口,该端口可通过 Context.GetRemoteDebuggingPort API 进行查询。

由于远程调试使用 TCP,因此如果未同时为上下文设置 ContextFeatureFlags.NETWORK,则设置远程调试端口是无效的。

content_directories vector<ContentDirectoryProvider>[100]

内容将由 fuchsia-dir:// 网址提供的提供商列表。

features ContextFeatureFlags

为此情境启用的可选功能。某些功能可能还需要在 service_directory 中使用附加服务。

playready_key_system string[128]

使用指定的字符串作为关键系统字符串,为上下文启用 PlayReady CDM。根据 EME API 的要求,该字符串应为反向域名。

unsafely_treat_insecure_origins_as_secure vector<string>[100]

将指定的不安全源视为安全源。如需了解安全上下文的定义,请参阅安全上下文源可信度

示例值:{"http://a.com", "http://b.com"}

cors_exempt_headers vector<vector<uint8>>

指定一组不应强制执行跨域资源共享 (CORS) 检查的标头名称。

cdm_data_directory fuchsia.io/Directory

指定用于永久性内容许可相关数据(例如预配数据、永久性会话数据)的存储空间。默认情况下,这些数据将放置在 data_directory 下(如果指定)。

如果 data_directorycdm_data_directory 均未指定,则需要永久性存储空间的内容许可功能(例如永久性许可会话)将不适用于上下文

请注意,无论是否提供永久性存储空间,并非所有内容许可系统都支持永久性会话。

cdm_data_quota_bytes uint64

指定 cdm_data_directory 内容的目标大小上限(以字节为单位)。如果保留的 CDM 数据量超过此阈值,Context 会尝试完全清除一些数据以满足指定的配额要求。

data_quota_bytes uint64

指定 data_directory 内容的目标大小上限(以字节为单位)。 Context 会尝试将浏览状态(例如 Cookie、LocalStorage)限制为不超过指定的大小。

CreateFrameParams 资源

fuchsia.web/context.fidl 中定义

用于指定新 Frame 的配置的参数。

序数字段类型说明
enable_remote_debugging bool

设置为 true 可启用远程调试。如果未在 CreateContextParams 中设置 remote_debugging_port,将使用 ERR_INVALID_ARGS 关闭 Frame

debug_name string

设置为为 Frame 命名,以帮助在调试上下文(例如系统日志输出)中区分它。例如,当来自 Web 内容的消息记录到系统日志记录器时,可能会将该名称添加到这些消息中。此名称不会影响用户或网络可见的行为。 由 Frame 创建的弹出式 Frame 的名称源自父 Frame 的名称。

explicit_sites_filter_error_page fuchsia.mem/Data

启用自动拦截前往露骨内容网站的导航,并以 HTML 格式指定当过滤器取消导航时在框架中加载的错误页面内容。适用于帧内所有帧中的导航。 取消主文档的导航后,Frame 的 NavigationState.PageTypeERROR。如果此政策设为一个空缓冲区,系统将会显示默认的错误消息。如果已设置且不支持此类过滤,Frame 将与 ZX_ERR_NOT_SUPPORTED 断开连接。

CreateView2Args 资源

fuchsia.web/frame.fidl 中定义

Frame.CreateView2() 的参数,见上文。

序数字段类型说明
view_creation_token fuchsia.ui.views/ViewCreationToken

非可选。提供此令牌是为了将客户端的 Flatland 视图附加到父级的视口。

网站图标资源

fuchsia.web/navigation.fidl 中定义

用于表示网页的网站图标。空表格(所有字段均未设置)用于表示网页没有网站图标。

序数字段类型说明
data fuchsia.mem/Buffer

编码为具有预乘 alpha 通道的 RGBA 位图的图片内容。数据会进行密集打包,因此步幅始终为 4 * width,总大小为 4 * width * height

width uint32

图片的宽度。

height uint32

图片的高度。

FrameCloseRequest

fuchsia.web/frame.fidl 中定义

序数字段类型说明
timeout zx/Duration

可选。

FrameMediaSettings

fuchsia.web/frame.fidl 中定义

序数字段类型说明
renderer_usage fuchsia.media/AudioRenderUsage

要为创建的每个 fuchsia.media/AudioRenderer 实例设置的 fuchsia.media/AudioRenderUsage。如果未设置,则 WebRTC 流的使用率为 COMMUNICATION,所有其他流的使用率为 MEDIA

audio_consumer_session_id uint64

设置后,系统会使用 fuchsia.media/AudioConsumer 进行音频播放。在这种情况下,指定的值将传递给 fuchsia.media/SessionAudioConsumerFactory

LoadUrlParams 资源

fuchsia.web/navigation.fidl 中定义

用于修改 NavigationController.LoadUrl 行为的其他参数。

序数字段类型说明
type LoadUrlReason

向浏览器界面提供有关如何触发 NavigationController.LoadUrl 的提示。

referrer_url Url

与所请求资源相关联的网址。

was_user_activated bool

应设置为 true 才能将用户激活操作传播到帧。用户激活意味着用户正在与网页框架互动。它可以实现一些无法通过其他方式提供的 Web 功能。例如,仅当此标志设置为 true 时,自动播放功能才会起作用。

headers vector<fuchsia.net.http/Header>

自定义 HTTP 标头。RFC7540 未指定标头数量和大小的限制。

fuchsia.web/navigation.fidl 中定义

用于指定应将哪些导航事件委托给 NavigationPolicyProvider

序数字段类型说明

fuchsia.web/navigation.fidl 中定义

包含有关 Frame 的导航状态的信息。

序数字段类型说明

PermissionDescriptor

fuchsia.web/frame.fidl 中定义

描述网络权限。将来,可能会使用特定于类型的字段对其进行扩展。

序数字段类型说明
type PermissionType

PopupFrameCreationInfo 资源

fuchsia.web/frame.fidl 中定义

指定关于新创建的弹出式框架的额外信息。

序数字段类型说明
initial_url Url

弹出框最初导航到的网址。

initiated_by_user bool

如果弹出框架是为了响应用户的界面互动(例如点击某个链接)而创建,则设置此字段。

RequestedNavigation

fuchsia.web/navigation.fidl 中定义

序数字段类型说明
id NavigationId

导航的唯一 ID。

phase NavigationPhase

当前导航阶段。将且只能设置一位。

is_main_frame bool

导航是在主框架还是在子框架中进行的。

is_same_document bool

导航是否发生在未更改文档的情况下。

5

is_http_post bool

导航是否为 POST 请求。

url Url

导航的当前目标网址。对于同一导航过程,在遇到服务器重定向后,这可能会发生变化。

has_gesture bool

导航是否由用户手势启动。

was_server_redirect bool

导航是否遇到了服务器重定向。

UrlRequestRewriteAddHeaders

fuchsia.web/url_request_rewrite_rules.fidl 中定义

向网址请求添加 headers。如果某个标头已存在于原始网址请求中,它将被覆盖。

序数字段类型说明
headers vector<fuchsia.net.http/Header>[4096]

UrlRequestRewriteAppendToQuery

fuchsia.web/url_request_rewrite_rules.fidl 中定义

query 附加到网址的查询。如果网址请求已经包含查询,则 query 将附加到该请求后面,后跟 &。否则,该网址的查询将设置为 query

序数字段类型说明
query Url

UrlRequestRewriteRemoveHeader

fuchsia.web/url_request_rewrite_rules.fidl 中定义

如果网址的查询中包含 query_pattern,则从标头列表中移除 header_name。如果未设置 query_pattern,系统会无条件地从头文件列表中移除 header_name

  • header_name”必须设置。
  • 根据 RFC 7230 第 3.2 节header_name 必须是有效的 HTTP 标头名称。

序数字段类型说明
query_pattern Url
header_name fuchsia.net.http/HeaderName
添加数量:12

UrlRequestRewriteReplaceUrl

fuchsia.web/url_request_rewrite_rules.fidl 中定义

如果网址请求中的网址以 url_ends_with 结尾,则将网址重写为 new_url

序数字段类型说明
url_ends_with Url
new_url Url

UrlRequestRewriteRule

fuchsia.web/url_request_rewrite_rules.fidl 中定义

序数字段类型说明
hosts_filter vector<string>[4096]

要应用规则的一组主机。如果未设置,该规则将应用于每个请求,与主机无关。

schemes_filter vector<string>[4096]

要应用规则的一组架构。如果未设置,该规则将应用于每个请求,与架构无关。

rewrites vector<UrlRequestRewrite>[4096]

要应用的网址请求重写。

action UrlRequestAction

指定对与过滤条件匹配的请求执行的操作。默认情况下,系统允许发送请求。

UrlRequestRewriteSubstituteQueryPattern

fuchsia.web/url_request_rewrite_rules.fidl 中定义

如果在该网址的查询中发现 pattern,请将其替换为 substitution

序数字段类型说明
pattern Url
substitution Url

WebMessage 资源

fuchsia.web/frame.fidl 中定义

序数字段类型说明
data fuchsia.mem/Buffer

消息载荷,编码为 UTF-8 字符串。这是必需属性。

incoming_transfer vector<IncomingTransferable>

从 FIDL 客户端传输到 MessagePort 的可选对象列表。

outgoing_transfer vector<OutgoingTransferable>

MessagePort 传输到 FIDL 客户端的可选对象列表。

联合

Context_GetRemoteDebuggingPort_Result strict

fuchsia.web/context.fidl 中定义

序数变体类型说明
response Context_GetRemoteDebuggingPort_Response
err ContextError

Frame_AddBeforeLoadJavaScript_Result 严格

fuchsia.web/frame.fidl 中定义

序数变体类型说明
response Frame_AddBeforeLoadJavaScript_Response
err FrameError

Frame_ExecuteJavaScriptNoResult_Result 严格

fuchsia.web/frame.fidl 中定义

序数变体类型说明
response Frame_ExecuteJavaScriptNoResult_Response
err FrameError

Frame_ExecuteJavaScript_Result 严格 资源

fuchsia.web/frame.fidl 中定义

序数变体类型说明
response Frame_ExecuteJavaScript_Response
err FrameError

Frame_PostMessage_Result 严格

fuchsia.web/frame.fidl 中定义

序数变体类型说明
response Frame_PostMessage_Response
err FrameError

InboundTransferable 灵活 资源

fuchsia.web/frame.fidl 中定义

序数变体类型说明
message_port MessagePort

MessagePort_PostMessage_Result 严格

fuchsia.web/frame.fidl 中定义

序数变体类型说明
response MessagePort_PostMessage_Response
err FrameError

fuchsia.web/navigation.fidl 中定义

序数变体类型说明

fuchsia.web/navigation.fidl 中定义

为响应导航请求而应执行的导航操作。从 NavigationPolicyProvider.EvaluateRequestedNavigation 返回。

序数变体类型说明

OutgoingTransferable 灵活 资源

fuchsia.web/frame.fidl 中定义

序数变体类型说明
message_port server_end<MessagePort>

UrlRequestRewrite 灵活

fuchsia.web/url_request_rewrite_rules.fidl 中定义

序数变体类型说明
add_headers UrlRequestRewriteAddHeaders

向网址请求添加一组标头。

remove_header UrlRequestRewriteRemoveHeader

根据网址查询中是否存在格式来移除标头。

substitute_query_pattern UrlRequestRewriteSubstituteQueryPattern

替换网址查询中的格式。

replace_url UrlRequestRewriteReplaceUrl

如果原始网址以某种格式结尾,则替换相应网址。

append_to_query UrlRequestRewriteAppendToQuery

附加到网址的查询。

BITS

ContextFeatureFlags strict

类型:uint64

fuchsia.web/context.fidl 中定义

允许扩充上下文行为的功能标志。某些功能需要在上下文初始化期间提供的服务目录中提供其他服务。请参阅 CreateContextParams.service_directory

名称说明
1

启用网络访问权限。需要以下服务:

2

启用音频输入和输出。需要以下服务:

4

启用由 GPU 加速的 Web 内容渲染。需要以下服务:

8

启用硬件视频解码。 ContextFeatureFlags.VULKAN。 需要以下服务:

16

停用无法在硬件中解码的视频编解码器。 软件解码器只会用作硬件解码器的后备选项,例如在资源不足时。 需要 ContextFeatureFlags.HARDWARE_VIDEO_DECODER

32

为 EME API 启用 Widevine CDM 模块。 ContextFeatureFlags.VULKAN。 需要 fuchsia.media.drm/Widevine 服务。要求在 CreateContextParams 中指定 cdm_data_directory

64

允许嵌入器在没有图形输出或景观的情况下渲染 Web 内容。 与 ContextFeatureFlags.VULKAN 不兼容。

128

将遥测数据报告给 fuchsia.legacymetrics/MetricsRecorder

256

启用键盘按键的输入事件。 需要 fuchsia.ui.input3/Keyboard,用于获取事件。

512

允许使用屏幕虚拟键盘。该实现将管理键盘的状态,以响应网页内容中的输入/焦点事件。需要 fuchsia.input.virtualkeyboard/ControllerCreator 服务和 ContextFeatureFlags.KEYBOARD

1024

禁止通过脚本(如 JavaScript)和其他技术(如 WebAssembly)动态生成机器代码。这通常应导致脚本由解释器执行,同时会降低性能。其他依赖于动态代码生成的技术在可行的情况下可能会以受限的形式提供,或者,如果因解译会导致这些技术无法使用(就像 WebAssembly 就可能出现这种情况),我们可能以受限的形式提供这些技术。如果设置了此选项,则无需提供 fuchsia.kernel/VmexResource

添加数量:10

InputType 严格

类型:uint64

fuchsia.web/frame.fidl 中定义

标识可由 View 处理的输入事件类型。

名称说明
1

键盘事件。

2

鼠标按钮事件,适用于任何按钮。

4

鼠标滚轮事件。

8

鼠标移动事件。

16

用单指点按一次。

32

双指张合(用于缩放)。

64

拖动手指(用于滚动)。

9223372036854775808

匹配所有输入类型。

类型:uint64

fuchsia.web/frame.fidl 中定义

客户端可以在连接 NavigationEventListener 时设置的标志,指示您对可选功能的兴趣。

名称说明

类型:uint32

fuchsia.web/navigation.fidl 中定义

标识导航阶段。

名称说明

常量

名称类型说明
MAX_HEADERS_COUNT 4096 int32
MAX_HOST_LENGTH 255 int32
MAX_RULE_COUNT 4096 int32
MAX_SCHEME_AND_HOST_LENGTH 513 int32
MAX_URL_LENGTH 65536 int32
MAX_URL_SCHEME_NAME_LENGTH 255 int32

别名

名称说明
CookieName string[fidl/MAX]
网址 string[MAX_URL_LENGTH]
UrlHostName string[MAX_HOST_LENGTH]
UrlSchemeAndHostName string[MAX_SCHEME_AND_HOST_LENGTH]
UrlSchemeName string[MAX_URL_SCHEME_NAME_LENGTH]