默认搜索引擎

默认引擎

搜索服务通过配置模式指定默认搜索引擎。

更改默认值

默认引擎可能会在以下情况下更改

  • 用户已设置默认引擎,并且区域设置/地区的配置已更改。

  • 用户已设置默认引擎,并且其区域设置/地区更改为具有不同默认值的区域设置/地区。

  • 用户选择通过偏好设置设置不同的引擎。

  • 用户安装了一个附加组件,该附加组件将其默认引擎设置为应用程序提供的引擎之一。

  • 用户安装了一个附加组件,该附加组件提供了不同的引擎,并且用户允许将不同的引擎设置为默认引擎。

  • 用户或 Firefox(例如,通过阻止列表)导致默认引擎被移除。

附加组件和提示默认值

从附加组件中选择搜索引擎作为默认引擎的提示在安装附加组件时显示给用户。如果附加组件重新启用,并且在此期间未更改默认引擎,则也可能会显示该提示。

下图显示了附加组件中搜索引擎的完整流程

Flowchart for prompting for default engine for Search Engines related to add-ons.

移除默认引擎时

如果默认引擎被用户移除,或者在阻止列表或其他某些地区中被 Firefox 移除,则通过以下过程选择新的默认引擎。

  • 如果用户区域设置和区域设置的配置指定的默认引擎可见,则将其选为默认引擎。

  • 如果有另一个引擎可见,则回退到第一个被识别为通用搜索引擎的引擎(见下文)。

  • 如果没有其他可见引擎,则取消隐藏配置中的区域设置/地区默认引擎,如果它不是正在移除的引擎,则将其设置为默认引擎。

  • 否则,取消隐藏第一个通用搜索引擎或第一个可见引擎。

通用搜索引擎定义为返回通用搜索结果的引擎,例如 Google 或 DuckDuckGo。非通用搜索引擎返回特定领域的搜索结果,例如购物、书籍、词典。

附加组件和应用程序提供的引擎

附加组件可以在 manifest.json 中设置搜索提供程序的名称为应用程序提供的引擎的名称。在这种情况下

  • 如果附加组件是非授权合作伙伴,则我们将用户的默认引擎设置为应用程序提供的引擎的名称。

  • 如果附加组件来自授权合作伙伴,则我们将用户的默认引擎设置为与应用程序提供的引擎相同,并且我们允许应用程序提供的 URL 被附加组件的 URL 覆盖。

如果指定的引擎已经是默认引擎,则附加组件不会覆盖应用程序提供的引擎,并且其设置将被忽略,并且不会添加新的引擎。

授权附加组件列表存储在远程设置中的search-default-override-allowlist 桶中。该列表包括包含以下内容的记录:

  • 第三方附加组件 ID:将覆盖应用程序提供的附加组件的第三方附加组件的标识符。

  • 要覆盖的附加组件 ID:要覆盖的应用程序提供的附加组件的标识符。

  • 已授权替换的 URL/参数列表。

当授权的附加组件覆盖默认值时,我们将附加组件的 ID 与应用程序提供的引擎一起记录在overriddenBy字段中。启动时加载引擎时使用此字段来识别它应该加载来自该附加组件的参数。

overriddenBy注释可能会在以下情况下被移除:

  • 关联的授权附加组件被移除、禁用或无法再找到。

  • 用户将其默认引擎更改为其他引擎。

如果存在overriddenBy注释,但附加组件未获得授权,则将保留该注释,以防附加组件以后重新获得授权。例如,URL 已更新,但更新是在更新允许列表之前执行的。