消息系统模式¶
文档¶
有关 消息系统 的更多信息。
消息¶
Firefox 消息系统处理的每种消息类型都有 JSON 模式。
它们共同组合到 消息实验 中,通过一个 脚本。这是用于针对消息功能的 Nimbus 实验的模式。所有传入的消息实验都将根据此模式进行验证。
模式更改¶
要将新的消息类型添加到消息实验模式中
添加您的消息模板模式。
您的消息模板模式至少只需要定义以下字段
template
:一个字符串字段,用于定义消息的标识符。这必须是const
或enum
字段。例如,Spotlight 的
template
字段如下所示{ "type": "string", "const": "spotlight" }
content
:一个对象字段,用于定义您每个消息的唯一内容。
如果您的消息需要
targeting
,则必须添加一个 targeting 字段。如果您的消息支持触发,则可以使用定义来引用
MessageTrigger
共享定义。groups
、frequency
和priority
字段将自动由您的消息继承。确保模式具有
$id
成员。这允许引用(例如,{ "$ref": "#!/$defs/Foo" }
)在捆绑的模式中工作。有关更多信息,请参阅有关 捆绑 JSON 模式 的文档。在 make-schemas.py 中的列表中添加新的模式。
通过运行构建新的模式
cd browser/components/asrouter/content-src/schemas/ ../../../../../mach python make-schemas.py
提交结果。
同样,如果您正在修改消息模式,则必须重新构建生成的模式
cd browser/components/asrouter/content-src/schemas/
../../../../../mach python make-schemas.py
如果您不这样做,Firefox MS 模式 CI 作业 将失败。
您可以通过以下方式在本地运行此操作
cd browser/components/asrouter/content-src/schemas/
../../../../../mach xpcshell extract-test-corpus.js
../../../../../mach python make-schemas.py --check
此测试将重新生成模式并将其与 MessagingExperiment.schema.json
进行比较。如果存在差异,它将失败。该测试还将使用 Experimenter 使用的相同模式验证器验证树内消息列表,以确保我们的模式与 Experimenter 兼容。
模式测试¶
我们在树内有测试(Test_CFRMessageProvider、Test_OnboardingMessageProvider 和 Test_PanelTestProvider),它们使用生成的模式验证现有消息。
我们还对确保模式在 Experimenter 中正常工作进行了兼容性测试。 Experimenter 使用不同的 JSON 模式验证库,该库在 Firefox MS 模式 CI 作业 中重复使用。此测试使用与 Experimenter 相同的 JSON 模式验证库和配置验证来自 CFRMessageProvider、OnboardingMessageProvider 和 PanelTestProvider 的测试语料库。
请参阅 以上内容,了解如何运行这些测试。