From 08a2676787550f3b3d19c011dba258e40a820096 Mon Sep 17 00:00:00 2001 From: Jacob Dufault Date: Thu, 18 Apr 2019 22:22:05 +0000 Subject: [PATCH] cros: Eliminate ArcKioskSplashScreenView::Delegate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also move ArcKioskSplashScreenView into arc_kiosk_splash_screen_handler.h. Bug: 928555 Change-Id: I5f95c23cb11fa91e5a2380d4ab1e67fe50576971 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1566611 Commit-Queue: Jacob Dufault Reviewed-by: Toni Baržić Cr-Commit-Position: refs/heads/master@{#652353} --- chrome/browser/chromeos/BUILD.gn | 1 - .../chromeos/login/arc_kiosk_controller.cc | 21 +++---- .../chromeos/login/arc_kiosk_controller.h | 14 ++--- .../screens/arc_kiosk_splash_screen_view.h | 58 ------------------- .../login/arc_kiosk_splash_screen_handler.cc | 14 ++--- .../login/arc_kiosk_splash_screen_handler.h | 35 ++++++++++- 6 files changed, 57 insertions(+), 86 deletions(-) delete mode 100644 chrome/browser/chromeos/login/screens/arc_kiosk_splash_screen_view.h diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index 743fbb055db6d8..18d09a38669318 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn @@ -1258,7 +1258,6 @@ source_set("chromeos") { "login/screen_manager.h", "login/screens/app_downloading_screen.cc", "login/screens/app_downloading_screen.h", - "login/screens/arc_kiosk_splash_screen_view.h", "login/screens/arc_terms_of_service_screen.cc", "login/screens/arc_terms_of_service_screen.h", "login/screens/arc_terms_of_service_screen_view.h", diff --git a/chrome/browser/chromeos/login/arc_kiosk_controller.cc b/chrome/browser/chromeos/login/arc_kiosk_controller.cc index 89046b14a5777f..178a0f7f6488f7 100644 --- a/chrome/browser/chromeos/login/arc_kiosk_controller.cc +++ b/chrome/browser/chromeos/login/arc_kiosk_controller.cc @@ -17,6 +17,7 @@ #include "chrome/browser/chromeos/login/wizard_controller.h" #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" #include "chromeos/login/auth/user_context.h" #include "components/account_id/account_id.h" @@ -53,6 +54,16 @@ void ArcKioskController::StartArcKiosk(const AccountId& account_id) { login_performer_->LoginAsArcKioskAccount(account_id); } +void ArcKioskController::OnCancelArcKioskLaunch() { + KioskAppLaunchError::Save(KioskAppLaunchError::USER_CANCEL); + CleanUp(); + chrome::AttemptUserExit(); +} + +void ArcKioskController::OnDeletingSplashScreenView() { + arc_kiosk_splash_screen_view_ = nullptr; +} + void ArcKioskController::CleanUp() { splash_wait_timer_.Stop(); // Delegate is registered only when |profile_| is set. @@ -149,14 +160,4 @@ void ArcKioskController::OnAppWindowLaunched() { CloseSplashScreen(); } -void ArcKioskController::OnCancelArcKioskLaunch() { - KioskAppLaunchError::Save(KioskAppLaunchError::USER_CANCEL); - CleanUp(); - chrome::AttemptUserExit(); -} - -void ArcKioskController::OnDeletingSplashScreenView() { - arc_kiosk_splash_screen_view_ = nullptr; -} - } // namespace chromeos diff --git a/chrome/browser/chromeos/login/arc_kiosk_controller.h b/chrome/browser/chromeos/login/arc_kiosk_controller.h index 969ed8c6d1f9a6..d72bf75a0f572e 100644 --- a/chrome/browser/chromeos/login/arc_kiosk_controller.h +++ b/chrome/browser/chromeos/login/arc_kiosk_controller.h @@ -8,7 +8,6 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_service.h" -#include "chrome/browser/chromeos/login/screens/arc_kiosk_splash_screen_view.h" #include "chrome/browser/chromeos/login/session/user_session_manager.h" #include "chromeos/login/auth/login_performer.h" @@ -21,6 +20,7 @@ class OneShotTimer; namespace chromeos { +class ArcKioskSplashScreenView; class LoginDisplayHost; class OobeUI; class UserContext; @@ -30,8 +30,7 @@ class UserContext; // updating the splash screen UI. class ArcKioskController : public LoginPerformer::Delegate, public UserSessionManagerDelegate, - public ArcKioskAppService::Delegate, - public ArcKioskSplashScreenView::Delegate { + public ArcKioskAppService::Delegate { public: ArcKioskController(LoginDisplayHost* host, OobeUI* oobe_ui); @@ -40,6 +39,11 @@ class ArcKioskController : public LoginPerformer::Delegate, // Starts ARC kiosk splash screen. void StartArcKiosk(const AccountId& account_id); + // Invoked when the launch bailout shortcut key is pressed. + void OnCancelArcKioskLaunch(); + // Invoked when the splash screen view gets being deleted. + void OnDeletingSplashScreenView(); + private: void CleanUp(); void CloseSplashScreen(); @@ -60,10 +64,6 @@ class ArcKioskController : public LoginPerformer::Delegate, void OnAppStarted() override; void OnAppWindowLaunched() override; - // ArcKioskSplashScreenView::Delegate implementation: - void OnCancelArcKioskLaunch() override; - void OnDeletingSplashScreenView() override; - // LoginDisplayHost owns itself. LoginDisplayHost* const host_; // Owned by OobeUI. diff --git a/chrome/browser/chromeos/login/screens/arc_kiosk_splash_screen_view.h b/chrome/browser/chromeos/login/screens/arc_kiosk_splash_screen_view.h deleted file mode 100644 index d1437dd65d2ac7..00000000000000 --- a/chrome/browser/chromeos/login/screens/arc_kiosk_splash_screen_view.h +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2017 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 CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ARC_KIOSK_SPLASH_SCREEN_VIEW_H_ -#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ARC_KIOSK_SPLASH_SCREEN_VIEW_H_ - -#include "chrome/browser/chromeos/login/oobe_screen.h" - -namespace chromeos { - -// Interface for UI implemenations of the ArcKioskSplashScreen. -class ArcKioskSplashScreenView { - public: - enum class ArcKioskState { - STARTING_SESSION, - WAITING_APP_LAUNCH, - WAITING_APP_WINDOW, - }; - - class Delegate { - public: - Delegate() = default; - // Invoked when the launch bailout shortcut key is pressed. - virtual void OnCancelArcKioskLaunch() = 0; - - // Invoked when the splash screen view gets being deleted. - virtual void OnDeletingSplashScreenView() = 0; - - protected: - virtual ~Delegate() = default; - - private: - DISALLOW_COPY_AND_ASSIGN(Delegate); - }; - - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_ARC_KIOSK_SPLASH; - - ArcKioskSplashScreenView() = default; - - virtual ~ArcKioskSplashScreenView() = default; - - // Shows the contents of the screen. - virtual void Show() = 0; - - // Set the current ARC kiosk state. - virtual void UpdateArcKioskState(ArcKioskState state) = 0; - - // Sets screen this view belongs to. - virtual void SetDelegate(Delegate* delegate) = 0; - - private: - DISALLOW_COPY_AND_ASSIGN(ArcKioskSplashScreenView); -}; - -} // namespace chromeos - -#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ARC_KIOSK_SPLASH_SCREEN_VIEW_H_ diff --git a/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.cc index b937d339d75295..ae7fa0e10db3c0 100644 --- a/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.cc @@ -7,6 +7,7 @@ #include #include "base/values.h" +#include "chrome/browser/chromeos/login/arc_kiosk_controller.h" #include "chrome/grit/chrome_unscaled_resources.h" #include "chrome/grit/chromium_strings.h" #include "chrome/grit/generated_resources.h" @@ -23,8 +24,8 @@ ArcKioskSplashScreenHandler::ArcKioskSplashScreenHandler( : BaseScreenHandler(kScreenId, js_calls_container) {} ArcKioskSplashScreenHandler::~ArcKioskSplashScreenHandler() { - if (delegate_) - delegate_->OnDeletingSplashScreenView(); + if (controller_) + controller_->OnDeletingSplashScreenView(); } void ArcKioskSplashScreenHandler::DeclareLocalizedValues( @@ -72,9 +73,8 @@ void ArcKioskSplashScreenHandler::UpdateArcKioskState(ArcKioskState state) { SetLaunchText(l10n_util::GetStringUTF8(GetProgressMessageFromState(state))); } -void ArcKioskSplashScreenHandler::SetDelegate( - ArcKioskSplashScreenHandler::Delegate* delegate) { - delegate_ = delegate; +void ArcKioskSplashScreenHandler::SetDelegate(ArcKioskController* controller) { + controller_ = controller; } void ArcKioskSplashScreenHandler::PopulateAppInfo( @@ -108,11 +108,11 @@ int ArcKioskSplashScreenHandler::GetProgressMessageFromState( } void ArcKioskSplashScreenHandler::HandleCancelArcKioskLaunch() { - if (!delegate_) { + if (!controller_) { LOG(WARNING) << "No delegate set to handle cancel app launch"; return; } - delegate_->OnCancelArcKioskLaunch(); + controller_->OnCancelArcKioskLaunch(); } } // namespace chromeos diff --git a/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.h index 1121cce9252c9f..b5166a33c04644 100644 --- a/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.h @@ -8,7 +8,6 @@ #include #include "base/macros.h" -#include "chrome/browser/chromeos/login/screens/arc_kiosk_splash_screen_view.h" #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h" namespace base { @@ -17,6 +16,36 @@ class DictionaryValue; namespace chromeos { +class ArcKioskController; + +// Interface for UI implementations of the ArcKioskSplashScreen. +class ArcKioskSplashScreenView { + public: + enum class ArcKioskState { + STARTING_SESSION, + WAITING_APP_LAUNCH, + WAITING_APP_WINDOW, + }; + + constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_ARC_KIOSK_SPLASH; + + ArcKioskSplashScreenView() = default; + + virtual ~ArcKioskSplashScreenView() = default; + + // Shows the contents of the screen. + virtual void Show() = 0; + + // Set the current ARC kiosk state. + virtual void UpdateArcKioskState(ArcKioskState state) = 0; + + // Sets screen this view belongs to. + virtual void SetDelegate(ArcKioskController* controller) = 0; + + private: + DISALLOW_COPY_AND_ASSIGN(ArcKioskSplashScreenView); +}; + // A class that handles the WebUI hooks for the ARC kiosk splash screen. class ArcKioskSplashScreenHandler : public BaseScreenHandler, public ArcKioskSplashScreenView { @@ -36,14 +65,14 @@ class ArcKioskSplashScreenHandler : public BaseScreenHandler, // ArcKioskSplashScreenView implementation: void Show() override; void UpdateArcKioskState(ArcKioskState state) override; - void SetDelegate(ArcKioskSplashScreenHandler::Delegate* delegate) override; + void SetDelegate(ArcKioskController* controller) override; void PopulateAppInfo(base::DictionaryValue* out_info); void SetLaunchText(const std::string& text); int GetProgressMessageFromState(ArcKioskState state); void HandleCancelArcKioskLaunch(); - ArcKioskSplashScreenHandler::Delegate* delegate_ = nullptr; + ArcKioskController* controller_ = nullptr; bool show_on_init_ = false; DISALLOW_COPY_AND_ASSIGN(ArcKioskSplashScreenHandler);