首选项

首选项分支

活动流的首选项分支为 browser.newtabpage.activity-stream.。在首选项配置中定义的任何首选项都将相对于该分支。例如,如果一个首选项以名称 foo 定义,那么它在 about:config 中显示的完整首选项将为 browser.newtabpage.activity-stream.foo

定义新首选项

活动流的所有首选项都应在 lib/ActivityStream.sys.mjs 中找到的 PREFS_CONFIG 数组中定义。配置对象应具有 name(首选项的名称)、title(描述首选项功能)和 value(首选项的默认值)。可选地,可以提供 getValue 函数以根据参数(例如,地理位置和语言环境)动态生成默认的首选项值。对于开发者特定的默认值,可选的 value_local_dev 将代替 value 使用。例如

{
  name: "telemetry.log",
  title: "Log telemetry events in the console",
  value: false,
  value_local_dev: true,
  getValue: ({geo}) => geo === "CA"
}

重要:为 Mozilla Central 设置测试特定值

如果某个首选项后面的 Feed 或功能进行任何网络调用或对自动化测试有其他干扰,并且该首选项默认处于启用状态,请确保在 Mozilla Central 中将其禁用以进行测试。

您应该在 Bugzilla 中创建一个错误和一个补丁,该补丁添加行以在以下文件中关闭您的首选项

  • layout/tools/reftest/reftest-preferences.js

  • testing/profiles/prefs_general.js

  • testing/talos/talos/config.py

您可以在 此补丁 中看到一个示例。

.sys.mjs 读取、设置和观察首选项

要读取/设置/观察活动流首选项,请构造一个在 lib/ActivityStreamPrefs.sys.mjs 中找到的 Prefs 实例。

// Import Prefs
const { Prefs } = ChromeUtils.importESModule(
  "resource://activity-stream/lib/ActivityStreamPrefs.sys.mjs"
);

// Create an instance
const prefs = new Prefs();

Prefs 实用程序默认情况下会为您设置活动流分支,因此您无需担心在每个首选项前添加 browser.newtabpage.activity-stream.

const prefs = new Prefs();

// This will return the value of browser.newtabpage.activity-stream.foo
prefs.get("foo");

// This will set the value of browser.newtabpage.activity-stream.foo to true
prefs.set("foo", true);

// This will call aCallback when browser.newtabpage.activity-stream.foo is changed
prefs.observe("foo", aCallback);

// This will stop listening to browser.newtabpage.activity-stream.foo
prefs.ignore("foo", aCallback);

有关可用方法的更多信息,请参阅:searchfox:toolkit/modules/Preferences.sys.mjs <source/toolkit/modules/Preferences.sys.mjs>

Discovery Stream 首选项

Discovery Stream 特定的首选项嵌套在子分支 browser.newtabpage.activity-stream.discoverystream 下(browser.newtabpage.blocked 除外)。

browser.newtabpage.activity-stream.discoverystream.flight.blocks

  • 类型:string (JSON)

  • 默认值:{}

  • 首选项类型:AS

不适用于用户配置,但会以编程方式更新。用于在用户关闭 SPOC 时跟踪被阻止的航班 ID。键是航班 ID。值没有特定含义。

browser.newtabpage.blocked

  • 类型:string (JSON)

  • 默认值:null

  • 首选项类型:AS

不适用于用户配置,但会以编程方式更新。用于在用户关闭某个故事时跟踪被阻止的故事 ID。键是故事 ID。值没有特定含义。

browser.newtabpage.activity-stream.discoverystream.config

  • 类型 string (JSON)

  • 默认值

    {
      "api_key_pref": "extensions.pocket.oAuthConsumerKey",
      "collapsible": true,
      "enabled": true,
      "personalized": true,
    }
    
    • api_key_pref (字符串):包含 Pocket API 密钥的变量的名称。

    • collapsible (布尔值):控制新标签页中的部分是否可以折叠。

    • enabled (布尔值):控制是否启用 DS,并根据用户的语言环境以编程方式设置。DS 启用是此值和 browser.newtabpage.activity-stream.discoverystream.enabled 的值的逻辑 AND

    • personalized (布尔值):当此值为 true 时,将显示基于浏览历史的个性化内容。

    • unused_key (字符串):默认情况下不设置,并且此代码库不使用。这是一种标准化的方法来区分配置,以防止实验参与者退出。

browser.newtabpage.activity-stream.discoverystream.enabled

  • 类型:boolean

  • 默认值:true

  • 首选项类型:Firefox

当此设置为 true 时,如果 enabledbrowser.newtabpage.activity-stream.discoverystream.config 上也为 true,则会显示 Discovery Stream 体验。否则将显示旧的活动流体验。

browser.newtabpage.activity-stream.discoverystream.endpointSpocsClear

  • 类型:string (URL)

  • 默认值:https://spocs.getpocket.com/user

  • 首选项类型:AS

当用户选择退出赞助内容时,用于从广告服务器删除相应数据的端点。

browser.newtabpage.activity-stream.discoverystream.endpoints

  • 类型:string (URLs, CSV)

  • 默认值:https://getpocket.cdn.mozilla.net/,https://spocs.getpocket.com/

  • 首选项类型:AS

Discovery Stream 允许用于远程内容(例如:故事元数据)和配置(例如:实验的远程布局定义)的端点列表。

browser.newtabpage.activity-stream.discoverystream.hardcoded-basic-layout

  • 类型:boolean

  • 默认值:false

  • 首选项类型:Firefox

如果此值为 false,则使用默认的硬编码布局,如果此值为 true,则使用备用硬编码布局(当前模拟旧的 AS 体验)。

browser.newtabpage.activity-stream.discoverystream.rec.impressions

  • 类型:string (JSON)

  • 默认值:{}

  • 首选项类型:AS

以编程方式生成的哈希表,其中键是推荐 ID,值是表示首次展示的时间戳。

browser.newtabpage.activity-stream.discoverystream.spoc.impressions

  • 类型:string (JSON)

  • 默认值:{}

  • 首选项类型:AS

以编程方式生成的哈希表,其中键是赞助内容 ID,值是每次展示的时间戳数组。

browser.newtabpage.activity-stream.discoverystream.locale-list-config

  • 类型:string (CSV, locales)

  • 默认值:null

  • 首选项类型:Firefox

一个逗号分隔的语言环境列表,默认情况下,这些语言环境在新标签页中启用了故事。它覆盖了 region-stories-config 中可能存在的内容。因此,如果我将其设置为“en-US,en-CA,en-GB”,则所有使用英语浏览器的用户都会看到新标签页故事,即使他们的区域不在 region-stories-config 列表中。

browser.newtabpage.activity-stream.discoverystream.region-stories-config

  • 类型:string (CSV, regions)

  • 默认值:US,DE,CA,GB,IE,CH,AT,BE

  • 首选项类型:Firefox

一个逗号分隔的地理位置列表,默认情况下,这些地理位置在新标签页中启用了故事。它将客户端的地理位置与该列表匹配,然后查找匹配的语言环境。

browser.newtabpage.activity-stream.discoverystream.region-spocs-config

  • 类型:string (CSV, regions)

  • 默认值:US,CA,DE

  • 首选项类型:Firefox

在新标签页中默认启用 spocs 的地理位置的逗号分隔列表。它将客户端的地理位置与该列表进行匹配。

browser.newtabpage.activity-stream.discoverystream.region-layout-config

  • 类型:string (CSV, regions)

  • 默认值:US,CA,GB,DE,IE,CH,AT,BE

  • 首选项类型:Firefox

在新标签页中启用 7 行故事的地理位置的逗号分隔列表。它将客户端的地理位置与该列表进行匹配。

browser.newtabpage.activity-stream.discoverystream.region-basic-layout

  • 类型:boolean

  • 默认值:false

  • 首选项类型:AS

如果设置为true,则启用故事的新标签页将显示 1 行。它根据 region-layout-config 的结果以编程方式设置。

browser.newtabpage.activity-stream.discoverystream.spocs-endpoint

  • 类型:string (URL)

  • 默认值:null

  • 首选项类型:Firefox

覆盖以指定 SPOCs 的端点。将优先于远程和硬编码布局 SPOC 端点。

browser.newtabpage.activity-stream.discoverystream.personalization.version

  • 类型:integer

  • 默认值:1

  • 首选项类型:Firefox

这控制我们应该使用哪个版本的个性化来为新标签页故事评分。

browser.newtabpage.activity-stream.discoverystream.personalization.modelKeys

  • 类型:string (CSV)

  • 默认值:nb_model_arts_and_entertainment, nb_model_autos_and_vehicles, nb_model_beauty_and_fitness, nb_model_blogging_resources_and_services, nb_model_books_and_literature, nb_model_business_and_industrial, nb_model_computers_and_electronics, nb_model_finance, nb_model_food_and_drink, nb_model_games, nb_model_health, nb_model_hobbies_and_leisure, nb_model_home_and_garden, nb_model_internet_and_telecom, nb_model_jobs_and_education, nb_model_law_and_government, nb_model_online_communities, nb_model_people_and_society, nb_model_pets_and_animals, nb_model_real_estate, nb_model_reference, nb_model_science, nb_model_shopping, nb_model_sports, nb_model_travel

  • 首选项类型:Firefox

这是个性化版本 2 的配置。它是算法用来根据主题对故事进行评分的主题列表。

browser.newtabpage.activity-stream.discoverystream.recs.personalized

  • 类型:boolean

  • 默认值:false

  • 首选项类型:Firefox

这控制新标签页故事个性化是否包含常规故事。有关赞助内容,请参阅 spocs.personalized。

browser.newtabpage.activity-stream.discoverystream.spocs.personalized

  • 类型:boolean

  • 默认值:true

  • 首选项类型:Firefox

这控制新标签页故事个性化是否包含赞助内容。有关常规故事,请参阅 recs.personalized。

browser.newtabpage.activity-stream.discoverystream.isCollectionDismissible

  • 类型:boolean

  • 默认值:true

  • 首选项类型:Firefox

这控制新标签页故事集是否可关闭。

browser.newtabpage.activity-stream.feeds.section.topstories

  • 类型:boolean

  • 默认值:true

  • 首选项类型:Firefox

这控制用户是否应该看到新标签页故事。它由用户通过 about:preferences#home 设置。

browser.newtabpage.activity-stream.feeds.system.topstories

  • 类型:boolean

  • 默认值:false

  • 首选项类型:AS

不适用于用户配置,但以编程方式设置。它还控制用户是否应该看到新标签页故事。它在运行时设置,并根据语言环境/区域计算。