GeckoView 优先级提示 API¶
Cathy Lu <calu@mozilla.com>,Bug 1764998
2022 年 5 月 2 日
摘要¶
本文档描述了通过应用高优先级提示将进程设置为高优先级的 API。此 API 将显式设置优先级,而不是根据扩展的活动优先级推断优先级。
动机¶
此 API 将允许测量 Glean 指标,以便比较启用和禁用进程优先级时的性能和稳定性指标。以前,优先级取决于GeckoSession
是否具有关联的界面,这降低了后台标签的优先级,并且需要更频繁地重新加载。
目标¶
应用可以为GeckoSession
设置priorityHint
。
现有工作¶
在Bug 1753700中,我们在 dom/ipc 中添加了一个 API,允许GeckoViewWebExtension
设置特定remoteTab
的布尔值priorityHint
。这允许根据 Web 扩展程序处于活动状态但没有界面的标签具有高优先级。
实现¶
在GeckoSession
中,添加一个 API setPriorityHint
,它接受一个整数作为参数。优先级整数可以是PRIORITY_DEFAULT
或PRIORITY_HIGH
。指定的和活动标签将为PRIORITY_HIGH
。默认值为PRIORITY_DEFAULT
。此 API 将分派一个事件GeckoView:SetPriorityHint
。
public void setPriorityHint(final @Priority int priorityHint)
GeckoViewContent.sys.mjs
中的监听器将this.browser.frameLoader.remoteTab.priorityHint
设置为传入的布尔值。
case "GeckoView:setPriorityHint":
if (this.browser.isRemoteBrowser) {
let remoteTab = this.browser.frameLoader?.remoteTab;
if (remoteTab) {
remoteTab.renderLayers.priorityHint = val;
}
}
break;
其他复杂性¶
使用此 API 的应用需要在标签切换到前台或后台时手动使用 API 设置 priorityHint。