Commit 12e5c890 authored by Anatoliy Potapchuk's avatar Anatoliy Potapchuk Committed by Commit Bot

[Kiosk] Make ArcKioskService behave like KioskAppLauncher

Bug: 1015383
Change-Id: I271647c5c47b568805ee1623c24823f92574737d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2246562
Commit-Queue: Anatoliy Potapchuk <apotapchuk@chromium.org>
Reviewed-by: default avatarAnqing Zhao <anqing@chromium.org>
Reviewed-by: default avatarRoman Sorokin [CET] <rsorokin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#779765}
parent 6164d2ca
...@@ -41,10 +41,6 @@ ArcKioskAppService* ArcKioskAppService::Get(content::BrowserContext* context) { ...@@ -41,10 +41,6 @@ ArcKioskAppService* ArcKioskAppService::Get(content::BrowserContext* context) {
return ArcKioskAppServiceFactory::GetForBrowserContext(context); return ArcKioskAppServiceFactory::GetForBrowserContext(context);
} }
void ArcKioskAppService::SetDelegate(Delegate* delegate) {
delegate_ = delegate;
}
void ArcKioskAppService::Shutdown() { void ArcKioskAppService::Shutdown() {
ArcAppListPrefs::Get(profile_)->RemoveObserver(this); ArcAppListPrefs::Get(profile_)->RemoveObserver(this);
arc::ArcSessionManager::Get()->RemoveObserver(this); arc::ArcSessionManager::Get()->RemoveObserver(this);
...@@ -86,7 +82,7 @@ void ArcKioskAppService::OnTaskCreated(int32_t task_id, ...@@ -86,7 +82,7 @@ void ArcKioskAppService::OnTaskCreated(int32_t task_id,
activity == app_info_->activity) { activity == app_info_->activity) {
task_id_ = task_id; task_id_ = task_id;
if (delegate_) if (delegate_)
delegate_->OnAppStarted(); delegate_->OnAppLaunched();
} }
} }
...@@ -119,7 +115,7 @@ void ArcKioskAppService::OnMaintenanceSessionFinished() { ...@@ -119,7 +115,7 @@ void ArcKioskAppService::OnMaintenanceSessionFinished() {
void ArcKioskAppService::OnAppWindowLaunched() { void ArcKioskAppService::OnAppWindowLaunched() {
if (delegate_) if (delegate_)
delegate_->OnAppWindowLaunched(); delegate_->OnAppWindowCreated();
} }
void ArcKioskAppService::OnIconUpdated(ArcAppIcon* icon) { void ArcKioskAppService::OnIconUpdated(ArcAppIcon* icon) {
...@@ -226,6 +222,7 @@ void ArcKioskAppService::PreconditionsChanged() { ...@@ -226,6 +222,7 @@ void ArcKioskAppService::PreconditionsChanged() {
pending_policy_app_installs_.count(app_info_->package_name) == 0) { pending_policy_app_installs_.count(app_info_->package_name) == 0) {
if (!app_launcher_) { if (!app_launcher_) {
VLOG(2) << "Starting kiosk app"; VLOG(2) << "Starting kiosk app";
delegate_->OnAppPrepared();
app_launcher_ = std::make_unique<ArcKioskAppLauncher>( app_launcher_ = std::make_unique<ArcKioskAppLauncher>(
profile_, ArcAppListPrefs::Get(profile_), app_id_, this); profile_, ArcAppListPrefs::Get(profile_), app_id_, this);
} }
...@@ -257,4 +254,10 @@ void ArcKioskAppService::ResetAppLauncher() { ...@@ -257,4 +254,10 @@ void ArcKioskAppService::ResetAppLauncher() {
task_id_ = -1; task_id_ = -1;
} }
// ArcKioskAppService manages his own state by itself.
void ArcKioskAppService::Initialize() {}
void ArcKioskAppService::ContinueWithNetworkReady() {}
void ArcKioskAppService::RestartLauncher() {}
void ArcKioskAppService::LaunchApp() {}
} // namespace chromeos } // namespace chromeos
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/timer/timer.h" #include "base/timer/timer.h"
#include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_launcher.h" #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_launcher.h"
#include "chrome/browser/chromeos/app_mode/kiosk_app_launcher.h"
#include "chrome/browser/chromeos/app_mode/kiosk_app_manager_observer.h" #include "chrome/browser/chromeos/app_mode/kiosk_app_manager_observer.h"
#include "chrome/browser/chromeos/arc/kiosk/arc_kiosk_bridge.h" #include "chrome/browser/chromeos/arc/kiosk/arc_kiosk_bridge.h"
#include "chrome/browser/chromeos/arc/policy/arc_policy_bridge.h" #include "chrome/browser/chromeos/arc/policy/arc_policy_bridge.h"
...@@ -40,27 +41,12 @@ class ArcKioskAppService : public KeyedService, ...@@ -40,27 +41,12 @@ class ArcKioskAppService : public KeyedService,
public ArcKioskAppLauncher::Delegate, public ArcKioskAppLauncher::Delegate,
public ArcAppIcon::Observer, public ArcAppIcon::Observer,
public arc::ArcSessionManager::Observer, public arc::ArcSessionManager::Observer,
public arc::ArcPolicyBridge::Observer { public arc::ArcPolicyBridge::Observer,
public KioskAppLauncher {
public: public:
class Delegate {
public:
Delegate() = default;
virtual void OnAppDataUpdated() = 0;
virtual void OnAppStarted() = 0;
virtual void OnAppWindowLaunched() = 0;
protected:
virtual ~Delegate() = default;
private:
DISALLOW_COPY_AND_ASSIGN(Delegate);
};
static ArcKioskAppService* Create(Profile* profile); static ArcKioskAppService* Create(Profile* profile);
static ArcKioskAppService* Get(content::BrowserContext* context); static ArcKioskAppService* Get(content::BrowserContext* context);
void SetDelegate(Delegate* delegate);
// KeyedService overrides // KeyedService overrides
void Shutdown() override; void Shutdown() override;
...@@ -97,6 +83,12 @@ class ArcKioskAppService : public KeyedService, ...@@ -97,6 +83,12 @@ class ArcKioskAppService : public KeyedService,
void OnComplianceReportReceived( void OnComplianceReportReceived(
const base::Value* compliance_report) override; const base::Value* compliance_report) override;
// KioskAppLauncher:
void Initialize() override;
void ContinueWithNetworkReady() override;
void RestartLauncher() override;
void LaunchApp() override;
private: private:
explicit ArcKioskAppService(Profile* profile); explicit ArcKioskAppService(Profile* profile);
~ArcKioskAppService() override; ~ArcKioskAppService() override;
...@@ -127,8 +119,6 @@ class ArcKioskAppService : public KeyedService, ...@@ -127,8 +119,6 @@ class ArcKioskAppService : public KeyedService,
bool compliance_report_received_ = false; bool compliance_report_received_ = false;
// Keeps track whether the app is already launched // Keeps track whether the app is already launched
std::unique_ptr<ArcKioskAppLauncher> app_launcher_; std::unique_ptr<ArcKioskAppLauncher> app_launcher_;
// Not owning the delegate, delegate removes itself in destructor
Delegate* delegate_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(ArcKioskAppService); DISALLOW_COPY_AND_ASSIGN(ArcKioskAppService);
}; };
......
...@@ -6,7 +6,13 @@ ...@@ -6,7 +6,13 @@
namespace chromeos { namespace chromeos {
KioskAppLauncher::KioskAppLauncher() = default;
KioskAppLauncher::KioskAppLauncher(KioskAppLauncher::Delegate* delegate) KioskAppLauncher::KioskAppLauncher(KioskAppLauncher::Delegate* delegate)
: delegate_(delegate) {} : delegate_(delegate) {}
void KioskAppLauncher::SetDelegate(Delegate* delegate) {
delegate_ = delegate;
}
} // namespace chromeos } // namespace chromeos
...@@ -40,6 +40,7 @@ class KioskAppLauncher { ...@@ -40,6 +40,7 @@ class KioskAppLauncher {
// Whether app launch flow can assume all required apps are installed, and // Whether app launch flow can assume all required apps are installed, and
// skip app installation steps. // skip app installation steps.
virtual bool ShouldSkipAppInstallation() const = 0; virtual bool ShouldSkipAppInstallation() const = 0;
virtual void OnAppDataUpdated() {}
virtual void OnAppInstalling() {} virtual void OnAppInstalling() {}
virtual void OnAppPrepared() {} virtual void OnAppPrepared() {}
virtual void OnAppLaunched() {} virtual void OnAppLaunched() {}
...@@ -49,10 +50,13 @@ class KioskAppLauncher { ...@@ -49,10 +50,13 @@ class KioskAppLauncher {
protected: protected:
virtual ~Delegate() {} virtual ~Delegate() {}
}; };
KioskAppLauncher();
explicit KioskAppLauncher(Delegate* delegate); explicit KioskAppLauncher(Delegate* delegate);
KioskAppLauncher(const KioskAppLauncher&) = delete; KioskAppLauncher(const KioskAppLauncher&) = delete;
KioskAppLauncher& operator=(const KioskAppLauncher&) = delete; KioskAppLauncher& operator=(const KioskAppLauncher&) = delete;
virtual ~KioskAppLauncher() = default; virtual ~KioskAppLauncher() = default;
void SetDelegate(Delegate* delegate);
// Determine the initial configuration. // Determine the initial configuration.
virtual void Initialize() = 0; virtual void Initialize() = 0;
// This has to be called after launcher asked to configure network. // This has to be called after launcher asked to configure network.
...@@ -63,7 +67,7 @@ class KioskAppLauncher { ...@@ -63,7 +67,7 @@ class KioskAppLauncher {
virtual void LaunchApp() = 0; virtual void LaunchApp() = 0;
protected: protected:
Delegate* const delegate_; // Not owned, owns us. Delegate* delegate_ = nullptr; // Not owned, owns us.
}; };
} // namespace chromeos } // namespace chromeos
......
...@@ -130,7 +130,7 @@ void ArcKioskController::OnAppDataUpdated() { ...@@ -130,7 +130,7 @@ void ArcKioskController::OnAppDataUpdated() {
arc_kiosk_splash_screen_view_->Show(); arc_kiosk_splash_screen_view_->Show();
} }
void ArcKioskController::OnAppStarted() { void ArcKioskController::OnAppLaunched() {
DVLOG(1) << "ARC Kiosk launch succeeded, wait for app window."; DVLOG(1) << "ARC Kiosk launch succeeded, wait for app window.";
if (arc_kiosk_splash_screen_view_) { if (arc_kiosk_splash_screen_view_) {
...@@ -142,7 +142,7 @@ void ArcKioskController::OnAppStarted() { ...@@ -142,7 +142,7 @@ void ArcKioskController::OnAppStarted() {
} }
} }
void ArcKioskController::OnAppWindowLaunched() { void ArcKioskController::OnAppWindowCreated() {
DVLOG(1) << "App window created, closing splash screen."; DVLOG(1) << "App window created, closing splash screen.";
launched_ = true; launched_ = true;
// If timer is running, do not remove splash screen for a few // If timer is running, do not remove splash screen for a few
...@@ -161,4 +161,19 @@ KioskAppManagerBase::App ArcKioskController::GetAppData() { ...@@ -161,4 +161,19 @@ KioskAppManagerBase::App ArcKioskController::GetAppData() {
return app; return app;
} }
// TODO(crbug.com/1015383): Add network handling logic for arc kiosk.
void ArcKioskController::InitializeNetwork() {}
bool ArcKioskController::IsNetworkReady() const {
return true;
}
bool ArcKioskController::IsShowingNetworkConfigScreen() const {
return false;
}
bool ArcKioskController::ShouldSkipAppInstallation() const {
return false;
}
} // namespace chromeos } // namespace chromeos
...@@ -30,11 +30,10 @@ class UserContext; ...@@ -30,11 +30,10 @@ class UserContext;
// coordinating loading the ARC kiosk profile, and // coordinating loading the ARC kiosk profile, and
// updating the splash screen UI. // updating the splash screen UI.
class ArcKioskController : public KioskProfileLoader::Delegate, class ArcKioskController : public KioskProfileLoader::Delegate,
public ArcKioskAppService::Delegate, public KioskAppLauncher::Delegate,
public AppLaunchSplashScreenView::Delegate { public AppLaunchSplashScreenView::Delegate {
public: public:
ArcKioskController(LoginDisplayHost* host, OobeUI* oobe_ui); ArcKioskController(LoginDisplayHost* host, OobeUI* oobe_ui);
~ArcKioskController() override; ~ArcKioskController() override;
// Starts ARC kiosk splash screen. // Starts ARC kiosk splash screen.
...@@ -44,17 +43,21 @@ class ArcKioskController : public KioskProfileLoader::Delegate, ...@@ -44,17 +43,21 @@ class ArcKioskController : public KioskProfileLoader::Delegate,
void CleanUp(); void CleanUp();
void CloseSplashScreen(); void CloseSplashScreen();
// KioskProfileLoader implementation: // KioskProfileLoader:
void OnProfileLoaded(Profile* profile) override; void OnProfileLoaded(Profile* profile) override;
void OnProfileLoadFailed(KioskAppLaunchError::Error error) override; void OnProfileLoadFailed(KioskAppLaunchError::Error error) override;
void OnOldEncryptionDetected(const UserContext& user_context) override; void OnOldEncryptionDetected(const UserContext& user_context) override;
// ArcKioskAppService::Delegate implementation: // KioskAppLauncher::Delegate:
void InitializeNetwork() override;
bool IsNetworkReady() const override;
bool IsShowingNetworkConfigScreen() const override;
bool ShouldSkipAppInstallation() const override;
void OnAppDataUpdated() override; void OnAppDataUpdated() override;
void OnAppStarted() override; void OnAppLaunched() override;
void OnAppWindowLaunched() override; void OnAppWindowCreated() override;
// AppLaunchSplashScreenView::Delegate implementation: // AppLaunchSplashScreenView::Delegate:
KioskAppManagerBase::App GetAppData() override; KioskAppManagerBase::App GetAppData() override;
void OnCancelAppLaunch() override; void OnCancelAppLaunch() override;
void OnDeletingSplashScreenView() override; void OnDeletingSplashScreenView() override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment