| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/ntp/app_launcher_handler.h" | 5 #include "chrome/browser/ui/webui/ntp/app_launcher_handler.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 } | 252 } |
| 253 | 253 |
| 254 void AppLauncherHandler::Observe(int type, | 254 void AppLauncherHandler::Observe(int type, |
| 255 const NotificationSource& source, | 255 const NotificationSource& source, |
| 256 const NotificationDetails& details) { | 256 const NotificationDetails& details) { |
| 257 if (ignore_changes_) | 257 if (ignore_changes_) |
| 258 return; | 258 return; |
| 259 | 259 |
| 260 switch (type) { | 260 switch (type) { |
| 261 case chrome::NOTIFICATION_APP_NOTIFICATION_STATE_CHANGED: { | 261 case chrome::NOTIFICATION_APP_NOTIFICATION_STATE_CHANGED: { |
| 262 Profile* profile = Source<Profile>(source).ptr(); |
| 263 if (!Profile::FromWebUI(web_ui_)->IsSameProfile(profile)) |
| 264 return; |
| 265 |
| 262 const std::string& id = *Details<const std::string>(details).ptr(); | 266 const std::string& id = *Details<const std::string>(details).ptr(); |
| 263 const AppNotification* notification = | 267 const AppNotification* notification = |
| 264 extension_service_->app_notification_manager()->GetLast(id); | 268 extension_service_->app_notification_manager()->GetLast(id); |
| 265 ListValue args; | 269 ListValue args; |
| 266 args.Append(new StringValue(id)); | 270 args.Append(new StringValue(id)); |
| 267 if (notification) | 271 if (notification) |
| 268 args.Append(SerializeNotification(*notification)); | 272 args.Append(SerializeNotification(*notification)); |
| 269 web_ui_->CallJavascriptFunction("appNotificationChanged", args); | 273 web_ui_->CallJavascriptFunction("appNotificationChanged", args); |
| 270 break; | 274 break; |
| 271 } | 275 } |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 434 | 438 |
| 435 // Tell the client whether to show the promo for this view. We don't do this | 439 // Tell the client whether to show the promo for this view. We don't do this |
| 436 // in the case of PREF_CHANGED because: | 440 // in the case of PREF_CHANGED because: |
| 437 // | 441 // |
| 438 // a) At that point in time, depending on the pref that changed, it can look | 442 // a) At that point in time, depending on the pref that changed, it can look |
| 439 // like the set of apps installed has changed, and we will mark the promo | 443 // like the set of apps installed has changed, and we will mark the promo |
| 440 // expired. | 444 // expired. |
| 441 // b) Conceptually, it doesn't really make sense to count a | 445 // b) Conceptually, it doesn't really make sense to count a |
| 442 // prefchange-triggered refresh as a promo 'view'. | 446 // prefchange-triggered refresh as a promo 'view'. |
| 443 AppsPromo* apps_promo = extension_service_->apps_promo(); | 447 AppsPromo* apps_promo = extension_service_->apps_promo(); |
| 444 PrefService* prefs = Profile::FromWebUI(web_ui_)->GetPrefs(); | 448 Profile* profile = Profile::FromWebUI(web_ui_); |
| 449 PrefService* prefs = profile->GetPrefs(); |
| 445 bool apps_promo_just_expired = false; | 450 bool apps_promo_just_expired = false; |
| 446 if (apps_promo->ShouldShowPromo(extension_service_->GetAppIds(), | 451 if (apps_promo->ShouldShowPromo(extension_service_->GetAppIds(), |
| 447 &apps_promo_just_expired)) { | 452 &apps_promo_just_expired)) { |
| 448 apps_promo->MaximizeAppsIfNecessary(); | 453 apps_promo->MaximizeAppsIfNecessary(); |
| 449 dictionary.SetBoolean("showPromo", true); | 454 dictionary.SetBoolean("showPromo", true); |
| 450 FillPromoDictionary(&dictionary); | 455 FillPromoDictionary(&dictionary); |
| 451 promo_active_ = true; | 456 promo_active_ = true; |
| 452 } else { | 457 } else { |
| 453 dictionary.SetBoolean("showPromo", false); | 458 dictionary.SetBoolean("showPromo", false); |
| 454 promo_active_ = false; | 459 promo_active_ = false; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 465 | 470 |
| 466 FillAppDictionary(&dictionary); | 471 FillAppDictionary(&dictionary); |
| 467 web_ui_->CallJavascriptFunction("getAppsCallback", dictionary); | 472 web_ui_->CallJavascriptFunction("getAppsCallback", dictionary); |
| 468 | 473 |
| 469 // First time we get here we set up the observer so that we can tell update | 474 // First time we get here we set up the observer so that we can tell update |
| 470 // the apps as they change. | 475 // the apps as they change. |
| 471 if (registrar_.IsEmpty()) { | 476 if (registrar_.IsEmpty()) { |
| 472 registrar_.Add(this, chrome::NOTIFICATION_APP_NOTIFICATION_STATE_CHANGED, | 477 registrar_.Add(this, chrome::NOTIFICATION_APP_NOTIFICATION_STATE_CHANGED, |
| 473 NotificationService::AllSources()); | 478 NotificationService::AllSources()); |
| 474 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, | 479 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, |
| 475 NotificationService::AllSources()); | 480 Source<Profile>(profile)); |
| 476 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, | 481 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, |
| 477 NotificationService::AllSources()); | 482 Source<Profile>(profile)); |
| 478 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LAUNCHER_REORDERED, | 483 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LAUNCHER_REORDERED, |
| 479 NotificationService::AllSources()); | 484 Source<ExtensionPrefs>(extension_service_->extension_prefs())); |
| 480 registrar_.Add(this, chrome::NOTIFICATION_WEB_STORE_PROMO_LOADED, | 485 registrar_.Add(this, chrome::NOTIFICATION_WEB_STORE_PROMO_LOADED, |
| 481 NotificationService::AllSources()); | 486 Source<Profile>(profile)); |
| 482 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR, | 487 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR, |
| 483 NotificationService::AllSources()); | 488 Source<Profile>(profile)); |
| 484 } | 489 } |
| 485 if (pref_change_registrar_.IsEmpty()) { | 490 if (pref_change_registrar_.IsEmpty()) { |
| 486 pref_change_registrar_.Init( | 491 pref_change_registrar_.Init( |
| 487 extension_service_->extension_prefs()->pref_service()); | 492 extension_service_->extension_prefs()->pref_service()); |
| 488 pref_change_registrar_.Add(ExtensionPrefs::kExtensionsPref, this); | 493 pref_change_registrar_.Add(ExtensionPrefs::kExtensionsPref, this); |
| 489 pref_change_registrar_.Add(prefs::kNTPAppPageNames, this); | 494 pref_change_registrar_.Add(prefs::kNTPAppPageNames, this); |
| 490 } | 495 } |
| 491 } | 496 } |
| 492 | 497 |
| 493 void AppLauncherHandler::HandleLaunchApp(const ListValue* args) { | 498 void AppLauncherHandler::HandleLaunchApp(const ListValue* args) { |
| (...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 953 | 958 |
| 954 void AppLauncherHandler::UninstallDefaultApps() { | 959 void AppLauncherHandler::UninstallDefaultApps() { |
| 955 AppsPromo* apps_promo = extension_service_->apps_promo(); | 960 AppsPromo* apps_promo = extension_service_->apps_promo(); |
| 956 const ExtensionIdSet& app_ids = apps_promo->old_default_apps(); | 961 const ExtensionIdSet& app_ids = apps_promo->old_default_apps(); |
| 957 for (ExtensionIdSet::const_iterator iter = app_ids.begin(); | 962 for (ExtensionIdSet::const_iterator iter = app_ids.begin(); |
| 958 iter != app_ids.end(); ++iter) { | 963 iter != app_ids.end(); ++iter) { |
| 959 if (extension_service_->GetExtensionById(*iter, true)) | 964 if (extension_service_->GetExtensionById(*iter, true)) |
| 960 extension_service_->UninstallExtension(*iter, false, NULL); | 965 extension_service_->UninstallExtension(*iter, false, NULL); |
| 961 } | 966 } |
| 962 } | 967 } |
| OLD | NEW |