| Index: chrome/browser/extensions/default_apps.cc
|
| diff --git a/chrome/browser/extensions/default_apps.cc b/chrome/browser/extensions/default_apps.cc
|
| index 4afe3259ff409f36a4e1dfbf41c3af33bbf4cd4f..cee5c324126db7ea1f7154be64a419eed8f0d3e2 100644
|
| --- a/chrome/browser/extensions/default_apps.cc
|
| +++ b/chrome/browser/extensions/default_apps.cc
|
| @@ -87,7 +87,10 @@ bool DefaultApps::ShouldShowAppLauncher(const ExtensionIdSet& installed_ids) {
|
| #endif
|
| }
|
|
|
| -bool DefaultApps::ShouldShowPromo(const ExtensionIdSet& installed_ids) {
|
| +bool DefaultApps::ShouldShowPromo(const ExtensionIdSet& installed_ids,
|
| + bool* just_expired) {
|
| + *just_expired = false;
|
| +
|
| if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kForceAppsPromoVisible)) {
|
| return true;
|
| @@ -96,16 +99,35 @@ bool DefaultApps::ShouldShowPromo(const ExtensionIdSet& installed_ids) {
|
| if (!DefaultAppSupported())
|
| return false;
|
|
|
| - if (GetDefaultAppsInstalled() && GetPromoCounter() < kAppsPromoCounterMax) {
|
| + if (!GetDefaultAppsInstalled())
|
| + return false;
|
| +
|
| + int promo_counter = GetPromoCounter();
|
| + if (promo_counter <= kAppsPromoCounterMax) {
|
| // If we have the exact set of default apps, show the promo. If we don't
|
| // have the exact set of default apps, this means that the user manually
|
| // installed or uninstalled one. The promo doesn't make sense if it shows
|
| // apps the user manually installed, so expire it immediately in that
|
| // situation.
|
| - if (installed_ids == ids_)
|
| - return true;
|
| - else
|
| + if (ids_ != installed_ids) {
|
| SetPromoHidden();
|
| + return false;
|
| + }
|
| +
|
| + if (promo_counter == kAppsPromoCounterMax) {
|
| + *just_expired = true;
|
| + UMA_HISTOGRAM_ENUMERATION(extension_misc::kAppsPromoHistogram,
|
| + extension_misc::PROMO_EXPIRE,
|
| + extension_misc::PROMO_BUCKET_BOUNDARY);
|
| + SetPromoCounter(++promo_counter);
|
| + return false;
|
| + } else {
|
| + UMA_HISTOGRAM_ENUMERATION(extension_misc::kAppsPromoHistogram,
|
| + extension_misc::PROMO_SEEN,
|
| + extension_misc::PROMO_BUCKET_BOUNDARY);
|
| + SetPromoCounter(++promo_counter);
|
| + return true;
|
| + }
|
| }
|
|
|
| return false;
|
| @@ -123,29 +145,6 @@ void DefaultApps::DidInstallApp(const ExtensionIdSet& installed_ids) {
|
| }
|
| }
|
|
|
| -void DefaultApps::DidShowPromo() {
|
| - if (!GetDefaultAppsInstalled()) {
|
| - NOTREACHED() << "Should not show promo until default apps are installed.";
|
| - return;
|
| - }
|
| -
|
| - int promo_counter = GetPromoCounter();
|
| - if (promo_counter == kAppsPromoCounterMax) {
|
| - NOTREACHED() << "Promo has already been shown the maximum number of times.";
|
| - return;
|
| - }
|
| -
|
| - if (promo_counter < kAppsPromoCounterMax) {
|
| - if (promo_counter + 1 == kAppsPromoCounterMax)
|
| - UMA_HISTOGRAM_ENUMERATION(extension_misc::kAppsPromoHistogram,
|
| - extension_misc::PROMO_EXPIRE,
|
| - extension_misc::PROMO_BUCKET_BOUNDARY);
|
| - SetPromoCounter(++promo_counter);
|
| - } else {
|
| - SetPromoHidden();
|
| - }
|
| -}
|
| -
|
| bool DefaultApps::NonDefaultAppIsInstalled(
|
| const ExtensionIdSet& installed_ids) const {
|
| for (ExtensionIdSet::const_iterator iter = installed_ids.begin();
|
| @@ -158,7 +157,7 @@ bool DefaultApps::NonDefaultAppIsInstalled(
|
| }
|
|
|
| void DefaultApps::SetPromoHidden() {
|
| - SetPromoCounter(kAppsPromoCounterMax);
|
| + SetPromoCounter(kAppsPromoCounterMax + 1);
|
| }
|
|
|
| int DefaultApps::GetPromoCounter() const {
|
|
|