| Index: chrome/browser/chromeos/app_mode/kiosk_app_update_service.cc
|
| diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_update_service.cc b/chrome/browser/chromeos/app_mode/kiosk_app_update_service.cc
|
| index 0b789f9062236c74140938f249477d0a1dde24d0..1ea419d6758b7588f4e171f8d4c6cf9c76c70426 100644
|
| --- a/chrome/browser/chromeos/app_mode/kiosk_app_update_service.cc
|
| +++ b/chrome/browser/chromeos/app_mode/kiosk_app_update_service.cc
|
| @@ -6,6 +6,8 @@
|
|
|
| #include "base/logging.h"
|
| #include "chrome/browser/app_mode/app_mode_utils.h"
|
| +#include "chrome/browser/chromeos/system/automatic_reboot_manager.h"
|
| +#include "chrome/browser/extensions/api/runtime/runtime_api.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/extensions/extension_system.h"
|
| #include "chrome/browser/extensions/extension_system_factory.h"
|
| @@ -28,23 +30,11 @@ KioskAppUpdateService::KioskAppUpdateService(Profile* profile)
|
| extensions::ExtensionSystem::Get(profile_)->extension_service();
|
| if (service)
|
| service->AddUpdateObserver(this);
|
| -}
|
|
|
| -KioskAppUpdateService::~KioskAppUpdateService() {
|
| + system::AutomaticRebootManager::Get()->AddObserver(this);
|
| }
|
|
|
| -void KioskAppUpdateService::Shutdown() {
|
| - ExtensionService* service = profile_->GetExtensionService();
|
| - if (service)
|
| - service->RemoveUpdateObserver(this);
|
| -}
|
| -
|
| -void KioskAppUpdateService::OnAppUpdateAvailable(const std::string& app_id) {
|
| - DCHECK(!app_id_.empty());
|
| - if (app_id != app_id_)
|
| - return;
|
| -
|
| - StartRestartTimer();
|
| +KioskAppUpdateService::~KioskAppUpdateService() {
|
| }
|
|
|
| void KioskAppUpdateService::StartRestartTimer() {
|
| @@ -63,6 +53,45 @@ void KioskAppUpdateService::ForceRestart() {
|
| chrome::CloseAllBrowsers();
|
| }
|
|
|
| +void KioskAppUpdateService::Shutdown() {
|
| + ExtensionService* service = profile_->GetExtensionService();
|
| + if (service)
|
| + service->RemoveUpdateObserver(this);
|
| +
|
| + system::AutomaticRebootManager::Get()->RemoveObserver(this);
|
| +}
|
| +
|
| +void KioskAppUpdateService::OnAppUpdateAvailable(const std::string& app_id) {
|
| + DCHECK(!app_id_.empty());
|
| + if (app_id != app_id_)
|
| + return;
|
| +
|
| + extensions::RuntimeEventRouter::DispatchOnRestartRequiredEvent(
|
| + profile_,
|
| + app_id_,
|
| + extensions::RuntimeEventRouter::RESTART_REASON_APP_UPDATE);
|
| +
|
| + StartRestartTimer();
|
| +}
|
| +
|
| +void KioskAppUpdateService::OnRebootScheduled(Reason reason) {
|
| + extensions::RuntimeEventRouter::RestartReason restart_reason;
|
| + switch (reason) {
|
| + case REBOOT_REASON_OS_UPDATE:
|
| + restart_reason = extensions::RuntimeEventRouter::RESTART_REASON_OS_UPDATE;
|
| + break;
|
| + case REBOOT_REASON_PERIODIC:
|
| + restart_reason = extensions::RuntimeEventRouter::RESTART_REASON_PERIODIC;
|
| + break;
|
| + default:
|
| + NOTREACHED() << "Unknown reboot reason=" << reason;
|
| + return;
|
| + }
|
| +
|
| + extensions::RuntimeEventRouter::DispatchOnRestartRequiredEvent(
|
| + profile_, app_id_, restart_reason);
|
| +}
|
| +
|
| KioskAppUpdateServiceFactory::KioskAppUpdateServiceFactory()
|
| : BrowserContextKeyedServiceFactory(
|
| "KioskAppUpdateService",
|
|
|