// Copyright 2021 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_COMMON_TUTORIAL_H_ #define COMPONENTS_USER_EDUCATION_COMMON_TUTORIAL_H_ #include "base/gtest_prod_util.h" #include "components/user_education/common/help_bubble_factory.h" #include "components/user_education/common/help_bubble_params.h" #include "components/user_education/common/tutorial_description.h" #include "ui/base/interaction/element_identifier.h" #include "ui/base/interaction/element_tracker.h" #include "ui/base/interaction/interaction_sequence.h" namespace user_education { class TutorialService; // Tutorials are a user initiated IPH which spans 1 or more Interactions. // It utilizes the InteractionSequence Framework to provide a tracked list of // interactions with tracked elements. // // Each tutorial consists of a list of InteractionSequence steps which, in the // default case, create a HelpBubble which is implementation specific to // the platform the tutorial is written for. It is possible to create custom // InteractionSequenceSteps when using the traditional constructor and not // using the TutorialStepBuilder. // // Because of implementation details in InteractionSequence, a tutorial can only // be run once, see documentation for InteractionSequence. // // Basic tutorials use a TutorialDescription struct and the // Builder::BuildFromDescription method to construct the tutorial. // // the end user of a Tutorial would define a tutorial description in a // TutorialRegistry, for the platform the tutorial is implemented on. (see // BrowserTutorialServiceFactory) // // TODO: Provide an in-depth readme.md for tutorials // class Tutorial { … }; } // namespace user_education #endif // COMPONENTS_USER_EDUCATION_COMMON_TUTORIAL_H_