Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: chrome/browser/extensions/apps_promo_unittest.cc

Issue 10827102: Delete dead AppsPromo code (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Addresed comments, deleted related css, icons Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/logging.h"
6 #include "chrome/browser/browser_process.h"
7 #include "chrome/browser/extensions/apps_promo.h"
8 #include "chrome/browser/prefs/browser_prefs.h"
9 #include "chrome/common/extensions/extension.h"
10 #include "chrome/common/pref_names.h"
11 #include "chrome/test/base/testing_browser_process.h"
12 #include "chrome/test/base/testing_pref_service.h"
13 #include "googleurl/src/gurl.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15
16 namespace {
17
18 const char kPromoId[] = "23123123";
19 const char kPromoHeader[] = "Get great apps!";
20 const char kPromoButton[] = "Click for apps!";
21 const char kPromoLink[] = "http://apps.com";
22 const char kPromoLogo[] = "chrome://theme/IDR_WEBSTORE_ICON";
23 const char kPromoExpire[] = "No thanks.";
24 const int kPromoUserGroup =
25 AppsPromo::USERS_NEW | AppsPromo::USERS_EXISTING;
26
27 } // namespace
28
29 class ExtensionAppsPromo : public testing::Test {
30 public:
31 TestingPrefService* prefs() { return &prefs_; }
32 AppsPromo* apps_promo() { return &apps_promo_; }
33
34 protected:
35 explicit ExtensionAppsPromo();
36
37 // testing::Test
38 virtual void SetUp();
39
40 private:
41 TestingPrefService prefs_;
42 ScopedTestingLocalState local_state_;
43 AppsPromo apps_promo_;
44 };
45
46 ExtensionAppsPromo::ExtensionAppsPromo()
47 : local_state_(static_cast<TestingBrowserProcess*>(g_browser_process)),
48 apps_promo_(&prefs_) {
49 }
50
51 void ExtensionAppsPromo::SetUp() {
52 browser::RegisterUserPrefs(&prefs_);
53 }
54
55 // TODO(dpolukhin): On Chrome OS all apps are installed via external extensions,
56 // and the web store promo is never shown.
57 #if !defined(OS_CHROMEOS)
58
59 TEST_F(ExtensionAppsPromo, HappyPath) {
60 const extensions::ExtensionIdSet& default_app_ids =
61 apps_promo()->old_default_apps();
62
63 EXPECT_GT(default_app_ids.size(), 0u);
64
65 // The promo counter should default to the max, since we only use the counter
66 // if they were installed from older versions of Chrome.
67 EXPECT_EQ(AppsPromo::kDefaultAppsCounterMax + 1,
68 apps_promo()->GetPromoCounter());
69
70 // The app launcher and promo should not be shown if there are no extensions
71 // installed and no promo is set.
72 extensions::ExtensionIdSet installed_ids;
73 bool promo_just_expired = false;
74 EXPECT_FALSE(AppsPromo::IsPromoSupportedForLocale());
75 EXPECT_FALSE(apps_promo()->ShouldShowAppLauncher(installed_ids));
76 EXPECT_FALSE(apps_promo()->ShouldShowPromo(installed_ids,
77 &promo_just_expired));
78 EXPECT_FALSE(promo_just_expired);
79
80 // Make sure the web store can be supported even when the promo is not active.
81 AppsPromo::SetWebStoreSupportedForLocale(true);
82 EXPECT_FALSE(AppsPromo::IsPromoSupportedForLocale());
83 EXPECT_TRUE(apps_promo()->ShouldShowAppLauncher(installed_ids));
84 EXPECT_FALSE(apps_promo()->ShouldShowPromo(installed_ids,
85 &promo_just_expired));
86
87 // We should be able to disable the web store as well.
88 AppsPromo::SetWebStoreSupportedForLocale(false);
89 EXPECT_FALSE(AppsPromo::IsPromoSupportedForLocale());
90 EXPECT_FALSE(apps_promo()->ShouldShowAppLauncher(installed_ids));
91 EXPECT_FALSE(apps_promo()->ShouldShowPromo(installed_ids,
92 &promo_just_expired));
93
94 // Once the promo is set, we show both the promo and app launcher.
95 AppsPromo::PromoData promo_data(kPromoId, kPromoHeader, kPromoButton,
96 GURL(kPromoLink), kPromoExpire, GURL(""),
97 kPromoUserGroup);
98 AppsPromo::SetPromo(promo_data);
99 AppsPromo::SetWebStoreSupportedForLocale(true);
100 EXPECT_TRUE(AppsPromo::IsPromoSupportedForLocale());
101 EXPECT_TRUE(apps_promo()->ShouldShowAppLauncher(installed_ids));
102 EXPECT_TRUE(apps_promo()->ShouldShowPromo(installed_ids,
103 &promo_just_expired));
104 EXPECT_FALSE(promo_just_expired);
105
106 // Now install an app and the promo should not be shown.
107 installed_ids.insert(*(default_app_ids.begin()));
108 EXPECT_TRUE(AppsPromo::IsPromoSupportedForLocale());
109 EXPECT_TRUE(apps_promo()->ShouldShowAppLauncher(installed_ids));
110 EXPECT_FALSE(apps_promo()->ShouldShowPromo(installed_ids,
111 &promo_just_expired));
112 EXPECT_FALSE(promo_just_expired);
113
114 // Even if the user installs the exact set of default apps, we still don't
115 // show the promo.
116 installed_ids = default_app_ids;
117 EXPECT_TRUE(AppsPromo::IsPromoSupportedForLocale());
118 EXPECT_TRUE(apps_promo()->ShouldShowAppLauncher(installed_ids));
119 EXPECT_FALSE(apps_promo()->ShouldShowPromo(installed_ids,
120 &promo_just_expired));
121 EXPECT_FALSE(promo_just_expired);
122
123 // If the user then uninstalls the apps, the app launcher should remain
124 // and the promo should return.
125 installed_ids.clear();
126 EXPECT_TRUE(AppsPromo::IsPromoSupportedForLocale());
127 EXPECT_TRUE(apps_promo()->ShouldShowAppLauncher(installed_ids));
128 EXPECT_TRUE(apps_promo()->ShouldShowPromo(installed_ids,
129 &promo_just_expired));
130 EXPECT_FALSE(promo_just_expired);
131 }
132
133 // Tests get and set of promo content.
134 TEST_F(ExtensionAppsPromo, PromoPrefs) {
135 // Store a promo....
136 AppsPromo::PromoData promo_data(kPromoId, kPromoHeader, kPromoButton,
137 GURL(kPromoLink), kPromoExpire, GURL(""),
138 kPromoUserGroup);
139 AppsPromo::SetPromo(promo_data);
140
141 // ... then make sure AppsPromo can access it.
142 AppsPromo::PromoData actual_data = AppsPromo::GetPromo();
143 EXPECT_EQ(kPromoId, actual_data.id);
144 EXPECT_EQ(kPromoHeader, actual_data.header);
145 EXPECT_EQ(kPromoButton, actual_data.button);
146 EXPECT_EQ(GURL(kPromoLink), actual_data.link);
147 EXPECT_EQ(kPromoExpire, actual_data.expire);
148 EXPECT_EQ(kPromoUserGroup, actual_data.user_group);
149 // The promo logo should be the default value.
150 EXPECT_EQ(GURL(kPromoLogo), actual_data.logo);
151 EXPECT_TRUE(AppsPromo::IsPromoSupportedForLocale());
152
153 AppsPromo::ClearPromo();
154 actual_data = AppsPromo::GetPromo();
155 EXPECT_EQ("", actual_data.id);
156 EXPECT_EQ("", actual_data.header);
157 EXPECT_EQ("", actual_data.button);
158 EXPECT_EQ(GURL(""), actual_data.link);
159 EXPECT_EQ("", actual_data.expire);
160 EXPECT_EQ(AppsPromo::USERS_NONE, actual_data.user_group);
161 EXPECT_EQ(GURL(kPromoLogo), actual_data.logo);
162 EXPECT_FALSE(AppsPromo::IsPromoSupportedForLocale());
163
164 // Make sure we can set the logo to something other than the default.
165 std::string promo_logo = "data:image/png;base64,iVBORw0kGgoAAAN";
166 promo_data.logo = GURL(promo_logo);
167 AppsPromo::SetPromo(promo_data);
168 EXPECT_EQ(GURL(promo_logo), AppsPromo::GetPromo().logo);
169 EXPECT_TRUE(AppsPromo::IsPromoSupportedForLocale());
170
171 // Verify that the default is returned instead of HTTP or HTTPS URLs.
172 promo_data.logo = GURL("http://google.com/logo.png");
173 AppsPromo::SetPromo(promo_data);
174 EXPECT_EQ(GURL(kPromoLogo), AppsPromo::GetPromo().logo);
175 EXPECT_TRUE(AppsPromo::IsPromoSupportedForLocale());
176
177 promo_data.logo = GURL("https://google.com/logo.png");
178 AppsPromo::SetPromo(promo_data);
179 EXPECT_EQ(GURL(kPromoLogo), AppsPromo::GetPromo().logo);
180 EXPECT_TRUE(AppsPromo::IsPromoSupportedForLocale());
181
182 // Try an invalid URL.
183 promo_data.logo = GURL("sldkfjlsdn");
184 AppsPromo::SetPromo(promo_data);
185 EXPECT_EQ(GURL(kPromoLogo), AppsPromo::GetPromo().logo);
186 EXPECT_TRUE(AppsPromo::IsPromoSupportedForLocale());
187
188 // Try the web store supported flag.
189 EXPECT_FALSE(AppsPromo::IsWebStoreSupportedForLocale());
190 AppsPromo::SetWebStoreSupportedForLocale(true);
191 EXPECT_TRUE(AppsPromo::IsWebStoreSupportedForLocale());
192 AppsPromo::SetWebStoreSupportedForLocale(false);
193 EXPECT_FALSE(AppsPromo::IsWebStoreSupportedForLocale());
194
195 // Try setting and getting the source logo URL.
196 GURL expected_source("https://www.google.com/images/test.png");
197 AppsPromo::SetSourcePromoLogoURL(expected_source);
198 EXPECT_EQ(expected_source, AppsPromo::GetSourcePromoLogoURL());
199 }
200
201 TEST_F(ExtensionAppsPromo, PromoHiddenByPref) {
202 prefs()->SetInteger(prefs::kAppsPromoCounter, 0);
203 prefs()->SetBoolean(prefs::kDefaultAppsInstalled, true);
204
205 // When the "hide" pref is false, the promo should still appear.
206 prefs()->SetBoolean(prefs::kNtpHideWebStorePromo, false);
207 AppsPromo::PromoData promo_data(
208 kPromoId, kPromoHeader, kPromoButton, GURL(kPromoLink), kPromoExpire,
209 GURL(""), AppsPromo::USERS_NEW | AppsPromo::USERS_EXISTING);
210 AppsPromo::SetPromo(promo_data);
211 bool just_expired;
212 bool show_promo = apps_promo()->ShouldShowPromo(
213 apps_promo()->old_default_apps(), &just_expired);
214 EXPECT_TRUE(show_promo);
215
216 // When the "hide" pref is true, the promo should NOT appear.
217 prefs()->SetBoolean(prefs::kNtpHideWebStorePromo, true);
218 show_promo = apps_promo()->ShouldShowPromo(
219 apps_promo()->old_default_apps(), &just_expired);
220 EXPECT_FALSE(show_promo);
221 }
222
223 #endif // OS_CHROMEOS
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698