// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_USER_EDUCATION_WEBUI_WHATS_NEW_REGISTRY_H_ #define COMPONENTS_USER_EDUCATION_WEBUI_WHATS_NEW_REGISTRY_H_ #include "components/user_education/webui/whats_new_storage_service.h" #include "ui/webui/resources/js/browser_command/browser_command.mojom.h" namespace whats_new { BrowserCommand; // What's New modules represent sections of content on the What's New // page. These are meant to contain the Feature they describe, the ownership // of the module, and the browser command that it triggers, if any. // // To connect the rollout of your Feature to your WhatsNewModule, // supple a base::Feature when creating a module. This will tell the // embedded page when the user has enabled this Feature that the content // may be shown. // // Content on the What's New page that is released to 100% Stable before // a milestone launches does not need to register a WhatsNewModule. The // content will always be shown. Regardless, do remember to create metrics // variants for these modules using the module name you agreed upon // with [email protected]. However, if this module triggers // a browser command, it still needs to be created and registered, just // without a base::Feature. // // Metrics: // When registering a module, make sure to add UserAction and Histogram // variants. Creating these are enforced by the registrar unit tests. // // * For a WhatsNewModule with a Feature, the metric name should be the // same as the name of the base::Feature. // * For a WhatsNewModule without a Feature, the metric name should follow // the same pattern, but can be any string that uniquely identifies // this content. class WhatsNewModule { … }; // What's New editions represent an entire What's New page with content // relevant to a single feature or set of features. Editions are always // tied to a base::Feature. // // As with modules, remember to add user action and histogram variants // with the same name as the base::Feature for your edition. class WhatsNewEdition { … }; // Stores module and edition data used to display the What's New page, // customized to the feature's a user has enabled. class WhatsNewRegistry { … }; } // namespace whats_new #endif // COMPONENTS_USER_EDUCATION_WEBUI_WHATS_NEW_REGISTRY_H_