Index: chrome/browser/ui/webui/ntp/app_launcher_handler.cc |
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc |
index 633faf7d6ca8aff3c54b44a91aa41b7f0e8b84fe..dcab901a801daf52bec1ad08c4a966703c3cc112 100644 |
--- a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc |
+++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc |
@@ -75,6 +75,7 @@ AppLauncherHandler::~AppLauncherHandler() {} |
// static |
void AppLauncherHandler::CreateAppInfo(const Extension* extension, |
+ const AppNotificationList* notifications, |
ExtensionPrefs* prefs, |
DictionaryValue* value) { |
bool enabled = |
@@ -109,6 +110,16 @@ void AppLauncherHandler::CreateAppInfo(const Extension* extension, |
value->SetBoolean("is_component", |
extension->location() == Extension::COMPONENT); |
+ if (notifications && !notifications->empty()) { |
+ AppNotification* n = (*notifications->rbegin()).get(); |
Evan Stade
2011/06/22 19:36:23
is this not the same as notifications->rbegin()->g
asargent_no_longer_on_chrome
2011/06/23 22:36:24
Yes, good point. (I reworked the code - this moved
|
+ value->SetString("title", n->title); |
+ value->SetString("body", n->body); |
+ if (!n->linkUrl.is_empty()) { |
+ value->SetString("linkUrl", n->linkUrl.spec()); |
+ value->SetString("linkText", n->linkText); |
+ } |
+ } |
+ |
int app_launch_index = prefs->GetAppLaunchIndex(extension->id()); |
if (app_launch_index == -1) { |
// Make sure every app has a launch index (some predate the launch index). |
@@ -198,6 +209,7 @@ void AppLauncherHandler::Observe(NotificationType type, |
return; |
switch (type.value) { |
+ case NotificationType::APP_NOTIFICATION_STATE_CHANGED: |
Evan Stade
2011/06/22 19:36:23
I don't think you want to nuke the entirety of the
asargent_no_longer_on_chrome
2011/06/23 22:36:24
Good catch - I had thrown this in there as a quick
|
case NotificationType::EXTENSION_LOADED: |
case NotificationType::EXTENSION_UNLOADED: |
case NotificationType::EXTENSION_LAUNCHER_REORDERED: |
@@ -228,10 +240,16 @@ void AppLauncherHandler::FillAppDictionary(DictionaryValue* dictionary) { |
for (it = extensions->begin(); it != extensions->end(); ++it) { |
// Don't include the WebStore. |
// The WebStore launcher gets special treatment in ntp/apps.js. |
- if ((*it)->is_app() && |
- (*it)->id() != extension_misc::kWebStoreAppId) { |
+ const Extension* extension = *it; |
+ if (extension->is_app() && |
+ extension->id() != extension_misc::kWebStoreAppId) { |
DictionaryValue* app_info = new DictionaryValue(); |
- CreateAppInfo(*it, extensions_service_->extension_prefs(), app_info); |
+ AppNotificationManager* notification_manager = |
+ extensions_service_->app_notification_manager(); |
+ CreateAppInfo(extension, |
+ notification_manager->GetAll(extension->id()), |
+ extensions_service_->extension_prefs(), |
+ app_info); |
list->Append(app_info); |
} |
} |
@@ -241,7 +259,10 @@ void AppLauncherHandler::FillAppDictionary(DictionaryValue* dictionary) { |
if ((*it)->is_app() && |
(*it)->id() != extension_misc::kWebStoreAppId) { |
DictionaryValue* app_info = new DictionaryValue(); |
- CreateAppInfo(*it, extensions_service_->extension_prefs(), app_info); |
+ CreateAppInfo(*it, |
+ NULL, |
+ extensions_service_->extension_prefs(), |
+ app_info); |
list->Append(app_info); |
} |
} |
@@ -314,6 +335,8 @@ void AppLauncherHandler::HandleGetApps(const ListValue* args) { |
// First time we get here we set up the observer so that we can tell update |
// the apps as they change. |
if (registrar_.IsEmpty()) { |
+ registrar_.Add(this, NotificationType::APP_NOTIFICATION_STATE_CHANGED, |
+ NotificationService::AllSources()); |
registrar_.Add(this, NotificationType::EXTENSION_LOADED, |
NotificationService::AllSources()); |
registrar_.Add(this, NotificationType::EXTENSION_UNLOADED, |