Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3606)

Unified Diff: chrome/browser/chromeos/app_mode/kiosk_app_update_service.cc

Issue 16844020: app_mode: Add runtime.onRestartRequired event. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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",

Powered by Google App Engine
This is Rietveld 408576698