123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- // Copyright 2018 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef ASH_ASSISTANT_ASSISTANT_UI_CONTROLLER_IMPL_H_
- #define ASH_ASSISTANT_ASSISTANT_UI_CONTROLLER_IMPL_H_
- #include "ash/ash_export.h"
- #include "ash/assistant/model/assistant_interaction_model_observer.h"
- #include "ash/assistant/model/assistant_ui_model.h"
- #include "ash/assistant/model/assistant_ui_model_observer.h"
- #include "ash/assistant/ui/assistant_view_delegate.h"
- #include "ash/highlighter/highlighter_controller.h"
- #include "ash/public/cpp/assistant/controller/assistant_controller.h"
- #include "ash/public/cpp/assistant/controller/assistant_controller_observer.h"
- #include "ash/public/cpp/assistant/controller/assistant_ui_controller.h"
- #include "ash/wm/overview/overview_controller.h"
- #include "ash/wm/overview/overview_observer.h"
- #include "base/scoped_observation.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- class PrefRegistrySimple;
- namespace chromeos {
- namespace assistant {
- namespace mojom {
- class Assistant;
- } // namespace mojom
- } // namespace assistant
- } // namespace chromeos
- namespace ash {
- class AssistantControllerImpl;
- class ASH_EXPORT AssistantUiControllerImpl
- : public AssistantUiController,
- public AssistantControllerObserver,
- public AssistantInteractionModelObserver,
- public AssistantUiModelObserver,
- public AssistantViewDelegateObserver,
- public HighlighterController::Observer,
- public OverviewObserver {
- public:
- explicit AssistantUiControllerImpl(
- AssistantControllerImpl* assistant_controller);
- AssistantUiControllerImpl(const AssistantUiControllerImpl&) = delete;
- AssistantUiControllerImpl& operator=(const AssistantUiControllerImpl&) =
- delete;
- ~AssistantUiControllerImpl() override;
- static void RegisterProfilePrefs(PrefRegistrySimple* registry);
- // Provides a pointer to the |assistant| owned by AssistantService.
- void SetAssistant(assistant::Assistant* assistant);
- // AssistantUiController:
- const AssistantUiModel* GetModel() const override;
- int GetNumberOfSessionsWhereOnboardingShown() const override;
- bool HasShownOnboarding() const override;
- void SetKeyboardTraversalMode(bool keyboard_traversal_mode) override;
- void ShowUi(AssistantEntryPoint entry_point) override;
- void ToggleUi(absl::optional<AssistantEntryPoint> entry_point,
- absl::optional<AssistantExitPoint> exit_point) override;
- absl::optional<base::ScopedClosureRunner> CloseUi(
- AssistantExitPoint exit_point) override;
- void SetAppListBubbleWidth(int width) override;
- // AssistantInteractionModelObserver:
- void OnInteractionStateChanged(InteractionState interaction_state) override;
- // AssistantControllerObserver:
- void OnAssistantControllerConstructed() override;
- void OnAssistantControllerDestroying() override;
- void OnOpeningUrl(const GURL& url,
- bool in_background,
- bool from_server) override;
- // AssistantUiModelObserver:
- void OnUiVisibilityChanged(
- AssistantVisibility new_visibility,
- AssistantVisibility old_visibility,
- absl::optional<AssistantEntryPoint> entry_point,
- absl::optional<AssistantExitPoint> exit_point) override;
- // AssistantViewDelegateObserver:
- void OnOnboardingShown() override;
- // HighlighterController::Observer:
- void OnHighlighterEnabledChanged(HighlighterEnabledState state) override;
- // OverviewObserver:
- void OnOverviewModeWillStart() override;
- void ShowUnboundErrorToast();
- private:
- AssistantControllerImpl* const assistant_controller_; // Owned by Shell.
- AssistantUiModel model_;
- bool has_shown_onboarding_ = false;
- // Owned by AssistantService.
- assistant::Assistant* assistant_ = nullptr;
- base::ScopedObservation<AssistantController, AssistantControllerObserver>
- assistant_controller_observation_{this};
- base::ScopedObservation<HighlighterController,
- HighlighterController::Observer>
- highlighter_controller_observation_{this};
- base::ScopedObservation<OverviewController, OverviewObserver>
- overview_controller_observation_{this};
- base::WeakPtrFactory<AssistantUiControllerImpl>
- weak_factory_for_delayed_visibility_changes_{this};
- };
- } // namespace ash
- #endif // ASH_ASSISTANT_ASSISTANT_UI_CONTROLLER_IMPL_H_
|