| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index a041040b978c9421b524848464d2046d848942e2..0eb433083001da07a47284c5fb6168d21e38920f 100644
|
| --- a/chrome/browser/extensions/extension_service.cc
|
| +++ b/chrome/browser/extensions/extension_service.cc
|
| @@ -32,6 +32,7 @@
|
| #include "chrome/browser/extensions/api/app_runtime/app_runtime_api.h"
|
| #include "chrome/browser/extensions/api/declarative/rules_registry_service.h"
|
| #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
|
| +#include "chrome/browser/extensions/api/file_handlers/app_file_handler_util.h"
|
| #include "chrome/browser/extensions/api/profile_keyed_api_factory.h"
|
| #include "chrome/browser/extensions/api/runtime/runtime_api.h"
|
| #include "chrome/browser/extensions/api/storage/settings_frontend.h"
|
| @@ -742,6 +743,11 @@ void ExtensionService::ReloadExtensionWithEvents(
|
| }
|
|
|
| on_load_events_[extension_id] = events;
|
| + if (events & EVENT_RESTARTED) {
|
| + extension_prefs_->GetSavedFileEntries(
|
| + extension_id, &on_restart_file_entries_[extension_id]);
|
| + }
|
| +
|
|
|
| if (delayed_updates_for_idle_.Contains(extension_id)) {
|
| FinishDelayedInstallation(extension_id);
|
| @@ -2901,9 +2907,16 @@ void ExtensionService::DoPostLoadTasks(const Extension* extension) {
|
| if (events_to_fire & EVENT_LAUNCHED)
|
| queue->AddPendingTask(profile(), extension->id(),
|
| base::Bind(&ExtensionService::LaunchApplication));
|
| - if (events_to_fire & EVENT_RESTARTED)
|
| + if (events_to_fire & EVENT_RESTARTED) {
|
| + SavedFileEntryMap::iterator it =
|
| + on_restart_file_entries_.find(extension->id());
|
| + if (it == on_restart_file_entries_.end())
|
| + NOTREACHED();
|
| queue->AddPendingTask(profile(), extension->id(),
|
| - base::Bind(&ExtensionService::RestartApplication));
|
| + base::Bind(&ExtensionService::RestartApplication,
|
| + it->second));
|
| + on_restart_file_entries_.erase(it);
|
| + }
|
| }
|
|
|
| on_load_events_.erase(it);
|
| @@ -2924,13 +2937,14 @@ void ExtensionService::LaunchApplication(
|
|
|
| // static
|
| void ExtensionService::RestartApplication(
|
| + std::vector<extensions::app_file_handler_util::SavedFileEntry> file_entries,
|
| extensions::ExtensionHost* extension_host) {
|
| if (!extension_host)
|
| return;
|
|
|
| #if !defined(OS_ANDROID)
|
| - extensions::AppEventRouter::DispatchOnRestartedEvent(
|
| - extension_host->profile(), extension_host->extension());
|
| + extensions::RestartPlatformAppWithFileEntries(
|
| + extension_host->profile(), extension_host->extension(), file_entries);
|
| #endif
|
| }
|
|
|
|
|