tutorial_description.cc 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/user_education/common/tutorial_description.h"
  5. #include "third_party/abseil-cpp/absl/types/optional.h"
  6. #include "ui/base/interaction/element_identifier.h"
  7. #include "ui/base/interaction/interaction_sequence.h"
  8. namespace user_education {
  9. TutorialDescription::TutorialDescription() = default;
  10. TutorialDescription::~TutorialDescription() = default;
  11. TutorialDescription::TutorialDescription(TutorialDescription&&) = default;
  12. TutorialDescription& TutorialDescription::operator=(TutorialDescription&&) =
  13. default;
  14. TutorialDescription::Step::Step()
  15. : step_type(ui::InteractionSequence::StepType::kShown),
  16. arrow(HelpBubbleArrow::kNone) {}
  17. TutorialDescription::Step::~Step() = default;
  18. TutorialDescription::Step::Step(
  19. int title_text_id_,
  20. int body_text_id_,
  21. ui::InteractionSequence::StepType step_type_,
  22. ui::ElementIdentifier element_id_,
  23. std::string element_name_,
  24. HelpBubbleArrow arrow_,
  25. ui::CustomElementEventType event_type_,
  26. absl::optional<bool> must_remain_visible_,
  27. bool transition_only_on_event_,
  28. TutorialDescription::NameElementsCallback name_elements_callback_)
  29. : title_text_id(title_text_id_),
  30. body_text_id(body_text_id_),
  31. step_type(step_type_),
  32. event_type(event_type_),
  33. element_id(element_id_),
  34. element_name(element_name_),
  35. arrow(arrow_),
  36. must_remain_visible(must_remain_visible_),
  37. transition_only_on_event(transition_only_on_event_),
  38. name_elements_callback(name_elements_callback_) {
  39. DCHECK(!title_text_id || body_text_id)
  40. << "Tutorial bubble should not have a title without body text.";
  41. }
  42. TutorialDescription::Step::Step(const TutorialDescription::Step&) = default;
  43. TutorialDescription::Step& TutorialDescription::Step::operator=(
  44. const TutorialDescription::Step&) = default;
  45. bool TutorialDescription::Step::Step::ShouldShowBubble() const {
  46. // Hide steps and steps with no body text are "hidden" steps.
  47. return body_text_id &&
  48. step_type != ui::InteractionSequence::StepType::kHidden;
  49. }
  50. } // namespace user_education