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 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
434 | 434 |
435 // Tell the client whether to show the promo for this view. We don't do this | 435 // Tell the client whether to show the promo for this view. We don't do this |
436 // in the case of PREF_CHANGED because: | 436 // in the case of PREF_CHANGED because: |
437 // | 437 // |
438 // a) At that point in time, depending on the pref that changed, it can look | 438 // 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 | 439 // like the set of apps installed has changed, and we will mark the promo |
440 // expired. | 440 // expired. |
441 // b) Conceptually, it doesn't really make sense to count a | 441 // b) Conceptually, it doesn't really make sense to count a |
442 // prefchange-triggered refresh as a promo 'view'. | 442 // prefchange-triggered refresh as a promo 'view'. |
443 AppsPromo* apps_promo = extension_service_->apps_promo(); | 443 AppsPromo* apps_promo = extension_service_->apps_promo(); |
444 PrefService* prefs = Profile::FromWebUI(web_ui_)->GetPrefs(); | 444 Profile* profile = Profile::FromWebUI(web_ui_); |
445 PrefService* prefs = profile->GetPrefs(); | |
445 bool apps_promo_just_expired = false; | 446 bool apps_promo_just_expired = false; |
446 if (apps_promo->ShouldShowPromo(extension_service_->GetAppIds(), | 447 if (apps_promo->ShouldShowPromo(extension_service_->GetAppIds(), |
447 &apps_promo_just_expired)) { | 448 &apps_promo_just_expired)) { |
448 apps_promo->MaximizeAppsIfNecessary(); | 449 apps_promo->MaximizeAppsIfNecessary(); |
449 dictionary.SetBoolean("showPromo", true); | 450 dictionary.SetBoolean("showPromo", true); |
450 FillPromoDictionary(&dictionary); | 451 FillPromoDictionary(&dictionary); |
451 promo_active_ = true; | 452 promo_active_ = true; |
452 } else { | 453 } else { |
453 dictionary.SetBoolean("showPromo", false); | 454 dictionary.SetBoolean("showPromo", false); |
454 promo_active_ = false; | 455 promo_active_ = false; |
455 } | 456 } |
456 | 457 |
457 // If the default apps have just expired (user viewed them too many times with | 458 // If the default apps have just expired (user viewed them too many times with |
458 // no interaction), then we uninstall them and focus the recent sites section. | 459 // no interaction), then we uninstall them and focus the recent sites section. |
459 if (apps_promo_just_expired) { | 460 if (apps_promo_just_expired) { |
460 ignore_changes_ = true; | 461 ignore_changes_ = true; |
461 UninstallDefaultApps(); | 462 UninstallDefaultApps(); |
462 ignore_changes_ = false; | 463 ignore_changes_ = false; |
463 ShownSectionsHandler::SetShownSection(prefs, THUMB); | 464 ShownSectionsHandler::SetShownSection(prefs, THUMB); |
464 } | 465 } |
465 | 466 |
466 FillAppDictionary(&dictionary); | 467 FillAppDictionary(&dictionary); |
467 web_ui_->CallJavascriptFunction("getAppsCallback", dictionary); | 468 web_ui_->CallJavascriptFunction("getAppsCallback", dictionary); |
468 | 469 |
469 // First time we get here we set up the observer so that we can tell update | 470 // First time we get here we set up the observer so that we can tell update |
470 // the apps as they change. | 471 // the apps as they change. |
471 if (registrar_.IsEmpty()) { | 472 if (registrar_.IsEmpty()) { |
472 registrar_.Add(this, chrome::NOTIFICATION_APP_NOTIFICATION_STATE_CHANGED, | 473 registrar_.Add(this, chrome::NOTIFICATION_APP_NOTIFICATION_STATE_CHANGED, |
Yoyo Zhou
2011/08/29 22:40:46
This looks like it could possibly be sent from an
jstritar
2011/08/30 15:06:31
Done.
| |
473 NotificationService::AllSources()); | 474 Source<Profile>(profile)); |
474 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, | 475 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, |
475 NotificationService::AllSources()); | 476 Source<Profile>(profile)); |
476 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, | 477 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, |
477 NotificationService::AllSources()); | 478 Source<Profile>(profile)); |
478 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LAUNCHER_REORDERED, | 479 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LAUNCHER_REORDERED, |
479 NotificationService::AllSources()); | 480 Source<ExtensionPrefs>(extension_service_->extension_prefs())); |
480 registrar_.Add(this, chrome::NOTIFICATION_WEB_STORE_PROMO_LOADED, | 481 registrar_.Add(this, chrome::NOTIFICATION_WEB_STORE_PROMO_LOADED, |
481 NotificationService::AllSources()); | 482 Source<Profile>(profile)); |
482 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR, | 483 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR, |
483 NotificationService::AllSources()); | 484 Source<Profile>(profile)); |
484 } | 485 } |
485 if (pref_change_registrar_.IsEmpty()) { | 486 if (pref_change_registrar_.IsEmpty()) { |
486 pref_change_registrar_.Init( | 487 pref_change_registrar_.Init( |
487 extension_service_->extension_prefs()->pref_service()); | 488 extension_service_->extension_prefs()->pref_service()); |
488 pref_change_registrar_.Add(ExtensionPrefs::kExtensionsPref, this); | 489 pref_change_registrar_.Add(ExtensionPrefs::kExtensionsPref, this); |
489 pref_change_registrar_.Add(prefs::kNTPAppPageNames, this); | 490 pref_change_registrar_.Add(prefs::kNTPAppPageNames, this); |
490 } | 491 } |
491 } | 492 } |
492 | 493 |
493 void AppLauncherHandler::HandleLaunchApp(const ListValue* args) { | 494 void AppLauncherHandler::HandleLaunchApp(const ListValue* args) { |
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
953 | 954 |
954 void AppLauncherHandler::UninstallDefaultApps() { | 955 void AppLauncherHandler::UninstallDefaultApps() { |
955 AppsPromo* apps_promo = extension_service_->apps_promo(); | 956 AppsPromo* apps_promo = extension_service_->apps_promo(); |
956 const ExtensionIdSet& app_ids = apps_promo->old_default_apps(); | 957 const ExtensionIdSet& app_ids = apps_promo->old_default_apps(); |
957 for (ExtensionIdSet::const_iterator iter = app_ids.begin(); | 958 for (ExtensionIdSet::const_iterator iter = app_ids.begin(); |
958 iter != app_ids.end(); ++iter) { | 959 iter != app_ids.end(); ++iter) { |
959 if (extension_service_->GetExtensionById(*iter, true)) | 960 if (extension_service_->GetExtensionById(*iter, true)) |
960 extension_service_->UninstallExtension(*iter, false, NULL); | 961 extension_service_->UninstallExtension(*iter, false, NULL); |
961 } | 962 } |
962 } | 963 } |
OLD | NEW |