| # Getting started with User Education |
| |
| Currently the only supported platform is Desktop Chrome. See the |
| [section](#Adding-User-Education-to-your-application) below to learn how |
| to extend User Education to another platform. |
| |
| The following User Education primitives are available in Chrome: |
| * [In-product help (IPH)](architecture.md#iph-how-to): |
| help dialogs offered by Chrome suggesting useful |
| features. These are triggered automatically based on user behavior and give a |
| short value statement and directions to use the feature |
| * [New badge](architecture.md#new-badge): pop-out label applied to new features' |
| entry points to make them more obvious |
| * [Tutorials](architecture.md#tutorials): step-by-step guided walkthroughs of |
| features. User-initiated and more thorough than single-step IPH promotions |
| * [Open page and highlight](architecture.md#open-page-and-highlight): useful for |
| pointing users at a particular settings or other internal page. Opens an |
| internal page and shows a help bubble on a particular item. |
| |
| If you want to display help bubbles on or in a WebUI surface (such |
| as an internal page), you will need to _instrument_ that page. |
| [Start here](./webui/README.md) for instructions. |
| |
| There is common setup for determining when a New Badge or IPH will show. See |
| [Configuring the Feature Engagement backend](architecture.md#configuring-the-feature-engagement-backend). |
| You can also learn |
| [how to test this configuration](architecture.md#testing-feature-engagement-features). |
| |
| # Adding User Education to your application |
| |
| There are a number of virtual methods that must be implemented before you can |
| use these User Education libraries in a new application, mostly centered around |
| localization, accelerators, and global input focus. |
| |
| Fortunately for Chromium developers, the browser already has the necessary |
| support built in for Views, WebUI, and Mac-native context menus. You may refer |
| to the following locations for an example that could be extended to other |
| platforms such as ChromeOS: |
| * [UserEducationService]( |
| /chrome/browser/ui/user_education/user_education_service.h) - sets up the |
| various registries and `TutorialService`. |
| * [BrowserView](/chrome/browser/ui/views/frame/browser_view.cc#831) - sets up |
| the `FeaturePromoController`. |
| * [browser_user_education_service]( |
| /chrome/browser/ui/views/user_education/browser_user_education_service.cc) - |
| registers Chrome-specific IPH and Tutorials. |
| * Concrete implementations of abstract User Education base classes can be |
| found in [c/b/ui/user_education](/chrome/browser/ui/user_education/) and |
| [c/b/ui/views/user_education](/chrome/browser/ui/views/user_education/). |