| Index: chrome/browser/extensions/api/runtime/runtime_api.cc
|
| diff --git a/chrome/browser/extensions/api/runtime/runtime_api.cc b/chrome/browser/extensions/api/runtime/runtime_api.cc
|
| index fd3a34311fc1e859cffea56dbc4f6497de9be92a..4b377aa35f9a3ae060d9083c13c13df866f31148 100644
|
| --- a/chrome/browser/extensions/api/runtime/runtime_api.cc
|
| +++ b/chrome/browser/extensions/api/runtime/runtime_api.cc
|
| @@ -4,7 +4,11 @@
|
|
|
| #include "chrome/browser/extensions/api/runtime/runtime_api.h"
|
|
|
| +#include <utility>
|
| +
|
| +#include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/values.h"
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/extensions/event_router.h"
|
| #include "chrome/browser/extensions/extension_host.h"
|
| @@ -36,6 +40,7 @@ const char kOnInstalledEvent[] = "runtime.onInstalled";
|
| const char kOnUpdateAvailableEvent[] = "runtime.onUpdateAvailable";
|
| const char kOnBrowserUpdateAvailableEvent[] =
|
| "runtime.onBrowserUpdateAvailable";
|
| +const char kOnRestartRequiredEvent[] = "runtime.onRestartRequired";
|
| const char kNoBackgroundPageError[] = "You do not have a background page.";
|
| const char kPageLoadError[] = "Background page failed to load.";
|
| const char kInstallReason[] = "reason";
|
| @@ -44,6 +49,9 @@ const char kInstallReasonUpdate[] = "update";
|
| const char kInstallReasonInstall[] = "install";
|
| const char kInstallPreviousVersion[] = "previousVersion";
|
| const char kInvalidUrlError[] = "Invalid URL.";
|
| +const char kRestartReasonAppUpdate[] = "app_update";
|
| +const char kRestartReasonOsUpdate[] = "os_update";
|
| +const char kRestartReasonPeriodic[] = "periodic";
|
| const char kUpdatesDisabledError[] = "Autoupdate is not enabled.";
|
| const char kUpdateFound[] = "update_available";
|
| const char kUpdateNotFound[] = "no_update";
|
| @@ -182,8 +190,38 @@ void RuntimeEventRouter::DispatchOnBrowserUpdateAvailableEvent(
|
| }
|
|
|
| // static
|
| +void RuntimeEventRouter::DispatchOnRestartRequiredEvent(
|
| + Profile* profile,
|
| + const std::string& app_id,
|
| + RestartReason reason) {
|
| + ExtensionSystem* system = ExtensionSystem::Get(profile);
|
| + if (!system)
|
| + return;
|
| +
|
| + scoped_ptr<ListValue> args(new ListValue);
|
| + switch (reason) {
|
| + case RESTART_REASON_APP_UPDATE:
|
| + args->AppendString(kRestartReasonAppUpdate);
|
| + break;
|
| + case RESTART_REASON_OS_UPDATE:
|
| + args->AppendString(kRestartReasonOsUpdate);
|
| + break;
|
| + case RESTART_REASON_PERIODIC:
|
| + args->AppendString(kRestartReasonPeriodic);
|
| + break;
|
| + default:
|
| + NOTREACHED() << "Unknown restart reason=" << reason;
|
| + return;
|
| + }
|
| +
|
| + DCHECK(system->event_router());
|
| + scoped_ptr<Event> event(new Event(kOnRestartRequiredEvent, args.Pass()));
|
| + system->event_router()->DispatchEventToExtension(app_id, event.Pass());
|
| +}
|
| +
|
| +// static
|
| void RuntimeEventRouter::OnExtensionUninstalled(
|
| - Profile *profile,
|
| + Profile* profile,
|
| const std::string& extension_id) {
|
| #if defined(ENABLE_EXTENSIONS)
|
| GURL uninstall_url(GetUninstallUrl(ExtensionPrefs::Get(profile),
|
|
|