| Index: chrome/browser/ui/app_list/extension_app_model_builder.cc
|
| diff --git a/chrome/browser/ui/app_list/extension_app_model_builder.cc b/chrome/browser/ui/app_list/extension_app_model_builder.cc
|
| index 0571e17601a0fbddda6a0dcbcfe47a91837e3e33..52e8d52891f9fb1d0b35749b794dc4798ffba176 100644
|
| --- a/chrome/browser/ui/app_list/extension_app_model_builder.cc
|
| +++ b/chrome/browser/ui/app_list/extension_app_model_builder.cc
|
| @@ -17,6 +17,7 @@
|
| #include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
|
| #include "chrome/browser/ui/app_list/app_list_syncable_service.h"
|
| #include "chrome/browser/ui/app_list/extension_app_item.h"
|
| +#include "chrome/browser/ui/ash/launcher/launcher_extension_app_updater.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "extensions/browser/extension_prefs.h"
|
| #include "extensions/browser/extension_registry.h"
|
| @@ -38,7 +39,6 @@ ExtensionAppModelBuilder::ExtensionAppModelBuilder(
|
|
|
| ExtensionAppModelBuilder::~ExtensionAppModelBuilder() {
|
| OnShutdown();
|
| - OnShutdown(extension_registry_);
|
| }
|
|
|
| void ExtensionAppModelBuilder::InitializePrefChangeRegistrars() {
|
| @@ -132,49 +132,54 @@ void ExtensionAppModelBuilder::OnInstallFailure(
|
| model()->DeleteItem(extension_id);
|
| }
|
|
|
| -void ExtensionAppModelBuilder::OnExtensionLoaded(
|
| +void ExtensionAppModelBuilder::OnAppInstalled(
|
| content::BrowserContext* browser_context,
|
| - const extensions::Extension* extension) {
|
| + const std::string& app_id) {
|
| + extensions::ExtensionRegistry* extension_registry =
|
| + extensions::ExtensionRegistry::Get(profile());
|
| +
|
| + const Extension* extension =
|
| + extension_registry ? extension_registry->GetInstalledExtension(app_id)
|
| + : nullptr;
|
| + if (!extension) {
|
| + NOTREACHED();
|
| + return;
|
| + }
|
| +
|
| if (!extensions::ui_util::ShouldDisplayInAppLauncher(extension, profile()))
|
| return;
|
|
|
| - DVLOG(2) << service() << ": OnExtensionLoaded: "
|
| - << extension->id().substr(0, 8);
|
| - ExtensionAppItem* existing_item = GetExtensionAppItem(extension->id());
|
| + DVLOG(2) << service() << ": OnAppInstalled: " << app_id.substr(0, 8);
|
| + ExtensionAppItem* existing_item = GetExtensionAppItem(app_id);
|
| if (existing_item) {
|
| - existing_item->Reload();
|
| + existing_item->UpdateIcon();
|
| if (service())
|
| service()->UpdateItem(existing_item);
|
| return;
|
| }
|
|
|
| - InsertApp(CreateAppItem(extension->id(),
|
| - "",
|
| - gfx::ImageSkia(),
|
| + InsertApp(CreateAppItem(app_id, "", gfx::ImageSkia(),
|
| extension->is_platform_app()));
|
| }
|
|
|
| -void ExtensionAppModelBuilder::OnExtensionUnloaded(
|
| +void ExtensionAppModelBuilder::OnAppUpdated(
|
| content::BrowserContext* browser_context,
|
| - const extensions::Extension* extension,
|
| - extensions::UnloadedExtensionInfo::Reason reason) {
|
| - ExtensionAppItem* item = GetExtensionAppItem(extension->id());
|
| + const std::string& app_id) {
|
| + ExtensionAppItem* item = GetExtensionAppItem(app_id);
|
| if (!item)
|
| return;
|
| item->UpdateIcon();
|
| }
|
|
|
| -void ExtensionAppModelBuilder::OnExtensionUninstalled(
|
| +void ExtensionAppModelBuilder::OnAppUninstalled(
|
| content::BrowserContext* browser_context,
|
| - const extensions::Extension* extension,
|
| - extensions::UninstallReason reason) {
|
| + const std::string& app_id) {
|
| if (service()) {
|
| - DVLOG(2) << service() << ": OnExtensionUninstalled: "
|
| - << extension->id().substr(0, 8);
|
| - service()->RemoveUninstalledItem(extension->id());
|
| + DVLOG(2) << service() << ": OnAppUninstalled: " << app_id.substr(0, 8);
|
| + service()->RemoveUninstalledItem(app_id);
|
| return;
|
| }
|
| - model()->DeleteUninstalledItem(extension->id());
|
| + model()->DeleteUninstalledItem(app_id);
|
| }
|
|
|
| void ExtensionAppModelBuilder::OnDisabledExtensionUpdated(
|
| @@ -192,16 +197,7 @@ void ExtensionAppModelBuilder::OnShutdown() {
|
| tracker_->RemoveObserver(this);
|
| tracker_ = nullptr;
|
| }
|
| -}
|
| -
|
| -void ExtensionAppModelBuilder::OnShutdown(
|
| - extensions::ExtensionRegistry* registry) {
|
| - if (!extension_registry_)
|
| - return;
|
| -
|
| - DCHECK_EQ(extension_registry_, registry);
|
| - extension_registry_->RemoveObserver(this);
|
| - extension_registry_ = nullptr;
|
| + app_updater_.reset();
|
| }
|
|
|
| std::unique_ptr<ExtensionAppItem> ExtensionAppModelBuilder::CreateAppItem(
|
| @@ -220,7 +216,6 @@ void ExtensionAppModelBuilder::BuildModel() {
|
| InitializePrefChangeRegistrars();
|
|
|
| tracker_ = controller()->GetInstallTrackerFor(profile());
|
| - extension_registry_ = extensions::ExtensionRegistry::Get(profile());
|
|
|
| PopulateApps();
|
|
|
| @@ -228,8 +223,7 @@ void ExtensionAppModelBuilder::BuildModel() {
|
| if (tracker_)
|
| tracker_->AddObserver(this);
|
|
|
| - if (extension_registry_)
|
| - extension_registry_->AddObserver(this);
|
| + app_updater_.reset(new LauncherExtensionAppUpdater(this, profile()));
|
| }
|
|
|
| void ExtensionAppModelBuilder::PopulateApps() {
|
|
|