blob: 64fb6dceb2dbee452426aceb597f007b5a09129d [file] [log] [blame] [view]
# 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/).