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

Side by Side Diff: chrome/browser/web_resource/promo_resource_service_unittest.cc

Issue 10496008: Purge legacy notification promo code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: rebase Created 8 years, 6 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
« no previous file with comments | « chrome/browser/web_resource/promo_resource_service.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 "base/json/json_reader.h" 5 #include "base/json/json_reader.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "base/string_number_conversions.h" 7 #include "base/string_number_conversions.h"
8 #include "base/time.h" 8 #include "base/time.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 base::JSONReader::Read(json))); 110 base::JSONReader::Read(json)));
111 111
112 // Check that prefs are set correctly. 112 // Check that prefs are set correctly.
113 web_resource_service_->UnpackLogoSignal(*(test_json.get())); 113 web_resource_service_->UnpackLogoSignal(*(test_json.get()));
114 logo_start = prefs->GetDouble(prefs::kNtpCustomLogoStart); 114 logo_start = prefs->GetDouble(prefs::kNtpCustomLogoStart);
115 EXPECT_EQ(logo_start, 0); // date value reset to 0; 115 EXPECT_EQ(logo_start, 0); // date value reset to 0;
116 logo_end = prefs->GetDouble(prefs::kNtpCustomLogoEnd); 116 logo_end = prefs->GetDouble(prefs::kNtpCustomLogoEnd);
117 EXPECT_EQ(logo_end, 0); // date value reset to 0; 117 EXPECT_EQ(logo_end, 0); // date value reset to 0;
118 } 118 }
119 119
120 class NotificationPromoTestDelegate : public NotificationPromo::Delegate { 120 class NotificationPromoTest {
121 public: 121 public:
122 explicit NotificationPromoTestDelegate(Profile* profile) 122 explicit NotificationPromoTest(Profile* profile)
123 : profile_(profile), 123 : profile_(profile),
124 prefs_(profile->GetPrefs()), 124 prefs_(profile->GetPrefs()),
125 notification_promo_(NULL), 125 notification_promo_(profile),
126 received_notification_(false), 126 received_notification_(false),
127 should_receive_notification_(false),
128 build_targeted_(true),
129 start_(0.0), 127 start_(0.0),
130 end_(0.0), 128 end_(0.0),
131 num_groups_(0), 129 num_groups_(0),
132 initial_segment_(0), 130 initial_segment_(0),
133 increment_(1), 131 increment_(1),
134 time_slice_(0), 132 time_slice_(0),
135 max_group_(0), 133 max_group_(0),
136 max_views_(0), 134 max_views_(0),
137 closed_(false), 135 closed_(false),
138 build_(PromoResourceService::NO_BUILD),
139 platform_(NotificationPromo::PLATFORM_NONE),
140 current_platform_(NotificationPromo::CurrentPlatform()),
141 gplus_required_(false) { 136 gplus_required_(false) {
142 } 137 }
143 138
144 void Init(NotificationPromo* notification_promo, 139 void Init(const std::string& json,
145 const std::string& json,
146 const std::string& promo_text, 140 const std::string& promo_text,
147 double start, double end, 141 double start, double end,
148 int num_groups, int initial_segment, int increment, 142 int num_groups, int initial_segment, int increment,
149 int time_slice, int max_group, int max_views, 143 int time_slice, int max_group, int max_views,
150 int build, int platform, bool gplus_required) { 144 bool gplus_required) {
151 notification_promo_ = notification_promo;
152
153 Value* value(base::JSONReader::Read(json)); 145 Value* value(base::JSONReader::Read(json));
154 ASSERT_TRUE(value); 146 ASSERT_TRUE(value);
155 DictionaryValue* dict = NULL; 147 DictionaryValue* dict = NULL;
156 value->GetAsDictionary(&dict); 148 value->GetAsDictionary(&dict);
157 ASSERT_TRUE(dict); 149 ASSERT_TRUE(dict);
158 test_json_.reset(dict); 150 test_json_.reset(dict);
159 151
160 promo_text_ = promo_text; 152 promo_text_ = promo_text;
161 153
162 start_ = start; 154 start_ = start;
163 end_ = end; 155 end_ = end;
164 156
165 num_groups_ = num_groups; 157 num_groups_ = num_groups;
166 initial_segment_ = initial_segment; 158 initial_segment_ = initial_segment;
167 increment_ = increment; 159 increment_ = increment;
168 time_slice_ = time_slice; 160 time_slice_ = time_slice;
169 max_group_ = max_group; 161 max_group_ = max_group;
170 162
171 max_views_ = max_views; 163 max_views_ = max_views;
172 164
173 build_ = build;
174 platform_ = platform;
175
176 gplus_required_ = gplus_required; 165 gplus_required_ = gplus_required;
177 166
178 closed_ = false; 167 closed_ = false;
179 received_notification_ = false; 168 received_notification_ = false;
180 } 169 }
181 170
182 // NotificationPromo::Delegate implementation. 171 void InitPromoFromJson(bool should_receive_notification) {
183 virtual void OnNotificationParsed(double start, double end, 172 notification_promo_.InitFromJson(*test_json_);
184 bool new_notification) { 173 EXPECT_EQ(should_receive_notification,
185 if (should_receive_notification_) { 174 notification_promo_.new_notification());
186 EXPECT_EQ(notification_promo_->StartTimeForGroup(), start);
187 EXPECT_EQ(notification_promo_->end_, end);
188 }
189
190 received_notification_ = new_notification;
191 EXPECT_TRUE(received_notification_ == should_receive_notification_);
192 }
193
194 virtual bool IsBuildAllowed(int builds_targeted) const {
195 EXPECT_EQ(builds_targeted, build_);
196 return build_targeted_;
197 }
198
199 virtual int CurrentPlatform() const {
200 return current_platform_;
201 }
202
203 void InitPromoFromJson(bool should_receive_notification, bool legacy) {
204 should_receive_notification_ = should_receive_notification;
205 received_notification_ = false;
206 if (legacy)
207 notification_promo_->InitFromJsonLegacy(*test_json_);
208 else
209 notification_promo_->InitFromJson(*test_json_);
210 EXPECT_TRUE(received_notification_ == should_receive_notification);
211 175
212 // Test the fields. 176 // Test the fields.
213 TestNotification(); 177 TestNotification();
214 TestPrefs(); 178 TestPrefs();
215 } 179 }
216 180
217 void TestNotification() { 181 void TestNotification() {
218 // Check values. 182 // Check values.
219 EXPECT_EQ(notification_promo_->promo_text_, promo_text_); 183 EXPECT_EQ(notification_promo_.promo_text_, promo_text_);
220 184
221 EXPECT_EQ(notification_promo_->start_, start_); 185 EXPECT_EQ(notification_promo_.start_, start_);
222 EXPECT_EQ(notification_promo_->end_, end_); 186 EXPECT_EQ(notification_promo_.end_, end_);
223 187
224 EXPECT_EQ(notification_promo_->num_groups_, num_groups_); 188 EXPECT_EQ(notification_promo_.num_groups_, num_groups_);
225 EXPECT_EQ(notification_promo_->initial_segment_, initial_segment_); 189 EXPECT_EQ(notification_promo_.initial_segment_, initial_segment_);
226 EXPECT_EQ(notification_promo_->increment_, increment_); 190 EXPECT_EQ(notification_promo_.increment_, increment_);
227 EXPECT_EQ(notification_promo_->time_slice_, time_slice_); 191 EXPECT_EQ(notification_promo_.time_slice_, time_slice_);
228 EXPECT_EQ(notification_promo_->max_group_, max_group_); 192 EXPECT_EQ(notification_promo_.max_group_, max_group_);
229 193
230 EXPECT_EQ(notification_promo_->max_views_, max_views_); 194 EXPECT_EQ(notification_promo_.max_views_, max_views_);
231 EXPECT_EQ(notification_promo_->closed_, closed_); 195 EXPECT_EQ(notification_promo_.closed_, closed_);
232 196
233 // Check group within bounds. 197 // Check group within bounds.
234 EXPECT_GE(notification_promo_->group_, 0); 198 EXPECT_GE(notification_promo_.group_, 0);
235 EXPECT_LT(notification_promo_->group_, num_groups_); 199 EXPECT_LT(notification_promo_.group_, num_groups_);
236 200
237 // Views should be 0 for now. 201 // Views should be 0 for now.
238 EXPECT_EQ(notification_promo_->views_, 0); 202 EXPECT_EQ(notification_promo_.views_, 0);
239 203
240 EXPECT_EQ(notification_promo_->build_, build_); 204 EXPECT_EQ(notification_promo_.gplus_required_, gplus_required_);
241 EXPECT_EQ(notification_promo_->platform_, platform_);
242
243 EXPECT_EQ(notification_promo_->gplus_required_, gplus_required_);
244 } 205 }
245 206
246 void TestPrefs() { 207 void TestPrefs() {
247 EXPECT_EQ(prefs_->GetString(prefs::kNtpPromoLine), promo_text_); 208 EXPECT_EQ(prefs_->GetString(prefs::kNtpPromoLine), promo_text_);
248 209
249 EXPECT_EQ(prefs_->GetDouble(prefs::kNtpPromoStart), start_); 210 EXPECT_EQ(prefs_->GetDouble(prefs::kNtpPromoStart), start_);
250 EXPECT_EQ(prefs_->GetDouble(prefs::kNtpPromoEnd), end_); 211 EXPECT_EQ(prefs_->GetDouble(prefs::kNtpPromoEnd), end_);
251 212
252 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoNumGroups), num_groups_); 213 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoNumGroups), num_groups_);
253 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoInitialSegment), 214 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoInitialSegment),
254 initial_segment_); 215 initial_segment_);
255 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoIncrement), increment_); 216 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoIncrement), increment_);
256 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroupTimeSlice), time_slice_); 217 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroupTimeSlice), time_slice_);
257 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroupMax), max_group_); 218 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroupMax), max_group_);
258 219
259 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoViewsMax), max_views_); 220 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoViewsMax), max_views_);
260 EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoClosed), closed_); 221 EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoClosed), closed_);
261 222
262 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroup), 223 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroup),
263 notification_promo_ ? notification_promo_->group_: 0); 224 notification_promo_.group_);
264 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoViews), 0); 225 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoViews), 0);
265 226
266 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoBuild), build_);
267 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoPlatform), platform_);
268
269 EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoGplusRequired), 227 EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoGplusRequired),
270 gplus_required_); 228 gplus_required_);
271 } 229 }
272 230
273 // Create a new NotificationPromo from prefs and compare to current 231 // Create a new NotificationPromo from prefs and compare to current
274 // notification. 232 // notification.
275 void TestInitFromPrefs() { 233 void TestInitFromPrefs() {
276 scoped_refptr<NotificationPromo> prefs_notification_promo = 234 NotificationPromo prefs_notification_promo(profile_);
277 NotificationPromo::Create(profile_, this); 235 prefs_notification_promo.InitFromPrefs();
278 prefs_notification_promo->InitFromPrefs();
279 236
280 EXPECT_EQ(notification_promo_->prefs_, 237 EXPECT_EQ(notification_promo_.prefs_,
281 prefs_notification_promo->prefs_); 238 prefs_notification_promo.prefs_);
282 EXPECT_EQ(notification_promo_->delegate_, 239 EXPECT_EQ(notification_promo_.promo_text_,
283 prefs_notification_promo->delegate_); 240 prefs_notification_promo.promo_text_);
284 EXPECT_EQ(notification_promo_->promo_text_, 241 EXPECT_EQ(notification_promo_.start_,
285 prefs_notification_promo->promo_text_); 242 prefs_notification_promo.start_);
286 EXPECT_EQ(notification_promo_->start_, 243 EXPECT_EQ(notification_promo_.end_,
287 prefs_notification_promo->start_); 244 prefs_notification_promo.end_);
288 EXPECT_EQ(notification_promo_->end_, 245 EXPECT_EQ(notification_promo_.num_groups_,
289 prefs_notification_promo->end_); 246 prefs_notification_promo.num_groups_);
290 EXPECT_EQ(notification_promo_->num_groups_, 247 EXPECT_EQ(notification_promo_.initial_segment_,
291 prefs_notification_promo->num_groups_); 248 prefs_notification_promo.initial_segment_);
292 EXPECT_EQ(notification_promo_->initial_segment_, 249 EXPECT_EQ(notification_promo_.increment_,
293 prefs_notification_promo->initial_segment_); 250 prefs_notification_promo.increment_);
294 EXPECT_EQ(notification_promo_->increment_, 251 EXPECT_EQ(notification_promo_.time_slice_,
295 prefs_notification_promo->increment_); 252 prefs_notification_promo.time_slice_);
296 EXPECT_EQ(notification_promo_->time_slice_, 253 EXPECT_EQ(notification_promo_.max_group_,
297 prefs_notification_promo->time_slice_); 254 prefs_notification_promo.max_group_);
298 EXPECT_EQ(notification_promo_->max_group_, 255 EXPECT_EQ(notification_promo_.max_views_,
299 prefs_notification_promo->max_group_); 256 prefs_notification_promo.max_views_);
300 EXPECT_EQ(notification_promo_->max_views_, 257 EXPECT_EQ(notification_promo_.group_,
301 prefs_notification_promo->max_views_); 258 prefs_notification_promo.group_);
302 EXPECT_EQ(notification_promo_->group_, 259 EXPECT_EQ(notification_promo_.views_,
303 prefs_notification_promo->group_); 260 prefs_notification_promo.views_);
304 EXPECT_EQ(notification_promo_->views_, 261 EXPECT_EQ(notification_promo_.closed_,
305 prefs_notification_promo->views_); 262 prefs_notification_promo.closed_);
306 EXPECT_EQ(notification_promo_->closed_, 263 EXPECT_EQ(notification_promo_.gplus_required_,
307 prefs_notification_promo->closed_); 264 prefs_notification_promo.gplus_required_);
308 EXPECT_EQ(notification_promo_->build_,
309 prefs_notification_promo->build_);
310 EXPECT_EQ(notification_promo_->platform_,
311 prefs_notification_promo->platform_);
312 EXPECT_EQ(notification_promo_->gplus_required_,
313 prefs_notification_promo->gplus_required_);
314 } 265 }
315 266
316 void TestGroup() { 267 void TestGroup() {
317 // Test out of range groups. 268 // Test out of range groups.
318 const int incr = num_groups_ / 20; 269 const int incr = num_groups_ / 20;
319 for (int i = max_group_; i < num_groups_; i += incr) { 270 for (int i = max_group_; i < num_groups_; i += incr) {
320 notification_promo_->group_ = i; 271 notification_promo_.group_ = i;
321 EXPECT_FALSE(notification_promo_->CanShow()); 272 EXPECT_FALSE(notification_promo_.CanShow());
322 } 273 }
323 274
324 // Test in-range groups. 275 // Test in-range groups.
325 for (int i = 0; i < max_group_; i += incr) { 276 for (int i = 0; i < max_group_; i += incr) {
326 notification_promo_->group_ = i; 277 notification_promo_.group_ = i;
327 EXPECT_TRUE(notification_promo_->CanShow()); 278 EXPECT_TRUE(notification_promo_.CanShow());
328 } 279 }
329 } 280 }
330 281
331 void TestViews() { 282 void TestViews() {
332 // Test out of range views. 283 // Test out of range views.
333 for (int i = max_views_; i < max_views_ * 2; ++i) { 284 for (int i = max_views_; i < max_views_ * 2; ++i) {
334 notification_promo_->views_ = i; 285 notification_promo_.views_ = i;
335 EXPECT_FALSE(notification_promo_->CanShow()); 286 EXPECT_FALSE(notification_promo_.CanShow());
336 } 287 }
337 288
338 // Test in range views. 289 // Test in range views.
339 for (int i = 0; i < max_views_; ++i) { 290 for (int i = 0; i < max_views_; ++i) {
340 notification_promo_->views_ = i; 291 notification_promo_.views_ = i;
341 EXPECT_TRUE(notification_promo_->CanShow()); 292 EXPECT_TRUE(notification_promo_.CanShow());
342 } 293 }
343 } 294 }
344 295
345 void TestBuild() { 296 void TestClosed() {
346 build_targeted_ = false; 297 notification_promo_.closed_ = true;
347 EXPECT_FALSE(notification_promo_->CanShow()); 298 EXPECT_FALSE(notification_promo_.CanShow());
348 299
349 build_targeted_ = true; 300 notification_promo_.closed_ = false;
350 EXPECT_TRUE(notification_promo_->CanShow()); 301 EXPECT_TRUE(notification_promo_.CanShow());
351 }
352
353 void TestOnePlatform(int current_platform, bool expected) {
354 current_platform_ = current_platform;
355 EXPECT_EQ(expected, notification_promo_->CanShow());
356 }
357
358 void TestPlatformSet(int target_platform, bool expected_win,
359 bool expected_mac, bool expected_linux, bool expected_chromeos) {
360 notification_promo_->platform_ = target_platform;
361 TestOnePlatform(NotificationPromo::PLATFORM_WIN, expected_win);
362 TestOnePlatform(NotificationPromo::PLATFORM_MAC, expected_mac);
363 TestOnePlatform(NotificationPromo::PLATFORM_LINUX, expected_linux);
364 TestOnePlatform(NotificationPromo::PLATFORM_CHROMEOS, expected_chromeos);
365 }
366
367 void TestPlatforms() {
368 int target_platform;
369
370 // Windows and Mac only - test real current platform.
371 target_platform = 3;
372 notification_promo_->platform_ = target_platform;
373 bool expected = false;
374 #if defined(OS_WIN) || defined(OS_MACOSX)
375 expected = true;
376 #endif
377 EXPECT_EQ(expected, notification_promo_->CanShow());
378
379 // Windows only.
380 target_platform = 1;
381 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN);
382 TestPlatformSet(target_platform, true, false, false, false);
383
384 // Mac only.
385 target_platform = 2;
386 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_MAC);
387 TestPlatformSet(target_platform, false, true, false, false);
388
389 // Linux only.
390 target_platform = 4;
391 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_LINUX);
392 TestPlatformSet(target_platform, false, false, true, false);
393
394 // ChromeOS only.
395 target_platform = 8;
396 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_CHROMEOS);
397 TestPlatformSet(target_platform, false, false, false, true);
398
399 // Non-Windows.
400 target_platform = 14;
401 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL
402 & ~NotificationPromo::PLATFORM_WIN);
403 TestPlatformSet(target_platform, false, true, true, true);
404
405 // Non-Mac.
406 target_platform = 13;
407 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL
408 & ~NotificationPromo::PLATFORM_MAC);
409 TestPlatformSet(target_platform, true, false, true, true);
410
411 // Non-Linux.
412 target_platform = 11;
413 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL
414 & ~NotificationPromo::PLATFORM_LINUX);
415 TestPlatformSet(target_platform, true, true, false, true);
416
417 // Non-ChromeOS.
418 target_platform = 7;
419 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL
420 & ~NotificationPromo::PLATFORM_CHROMEOS);
421 TestPlatformSet(target_platform, true, true, true, false);
422
423 // Windows and Mac.
424 target_platform = 3;
425 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN
426 | NotificationPromo::PLATFORM_MAC);
427 TestPlatformSet(target_platform, true, true, false, false);
428
429 // Windows and Linux.
430 target_platform = 5;
431 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN
432 | NotificationPromo::PLATFORM_LINUX);
433 TestPlatformSet(target_platform, true, false, true, false);
434
435 // Windows and ChromeOS.
436 target_platform = 9;
437 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN
438 | NotificationPromo::PLATFORM_CHROMEOS);
439 TestPlatformSet(target_platform, true, false, false, true);
440
441 // Mac and Linux.
442 target_platform = 6;
443 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_MAC
444 | NotificationPromo::PLATFORM_LINUX);
445 TestPlatformSet(target_platform, false, true, true, false);
446
447 // Mac and ChromeOS.
448 target_platform = 10;
449 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_MAC
450 | NotificationPromo::PLATFORM_CHROMEOS);
451 TestPlatformSet(target_platform, false, true, false, true);
452
453 // Linux and ChromeOS.
454 target_platform = 12;
455 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_LINUX
456 | NotificationPromo::PLATFORM_CHROMEOS);
457 TestPlatformSet(target_platform, false, false, true, true);
458
459 // Disabled.
460 target_platform = 0;
461 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_NONE);
462 TestPlatformSet(target_platform, false, false, false, false);
463
464 // All platforms.
465 target_platform = 15;
466 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL);
467 TestPlatformSet(target_platform, true, true, true, true);
468 }
469
470 void TestClosed() {
471 notification_promo_->closed_ = true;
472 EXPECT_FALSE(notification_promo_->CanShow());
473
474 notification_promo_->closed_ = false;
475 EXPECT_TRUE(notification_promo_->CanShow());
476 } 302 }
477 303
478 void TestPromoText() { 304 void TestPromoText() {
479 notification_promo_->promo_text_.clear(); 305 notification_promo_.promo_text_.clear();
480 EXPECT_FALSE(notification_promo_->CanShow()); 306 EXPECT_FALSE(notification_promo_.CanShow());
481 307
482 notification_promo_->promo_text_ = promo_text_; 308 notification_promo_.promo_text_ = promo_text_;
483 EXPECT_TRUE(notification_promo_->CanShow()); 309 EXPECT_TRUE(notification_promo_.CanShow());
484 } 310 }
485 311
486 void TestTime() { 312 void TestTime() {
487 const double now = base::Time::Now().ToDoubleT(); 313 const double now = base::Time::Now().ToDoubleT();
488 const double qhour = 15 * 60; 314 const double qhour = 15 * 60;
489 315
490 notification_promo_->group_ = 0; // For simplicity. 316 notification_promo_.group_ = 0; // For simplicity.
491 317
492 notification_promo_->start_ = now - qhour; 318 notification_promo_.start_ = now - qhour;
493 notification_promo_->end_ = now + qhour; 319 notification_promo_.end_ = now + qhour;
494 EXPECT_TRUE(notification_promo_->CanShow()); 320 EXPECT_TRUE(notification_promo_.CanShow());
495 321
496 // Start time has not arrived. 322 // Start time has not arrived.
497 notification_promo_->start_ = now + qhour; 323 notification_promo_.start_ = now + qhour;
498 notification_promo_->end_ = now + qhour; 324 notification_promo_.end_ = now + qhour;
499 EXPECT_FALSE(notification_promo_->CanShow()); 325 EXPECT_FALSE(notification_promo_.CanShow());
500 326
501 // End time has past. 327 // End time has past.
502 notification_promo_->start_ = now - qhour; 328 notification_promo_.start_ = now - qhour;
503 notification_promo_->end_ = now - qhour; 329 notification_promo_.end_ = now - qhour;
504 EXPECT_FALSE(notification_promo_->CanShow()); 330 EXPECT_FALSE(notification_promo_.CanShow());
505 331
506 notification_promo_->start_ = start_; 332 notification_promo_.start_ = start_;
507 notification_promo_->end_ = end_; 333 notification_promo_.end_ = end_;
508 EXPECT_TRUE(notification_promo_->CanShow()); 334 EXPECT_TRUE(notification_promo_.CanShow());
509 } 335 }
510 336
511 void TestIncrement() { 337 void TestIncrement() {
512 const double now = base::Time::Now().ToDoubleT(); 338 const double now = base::Time::Now().ToDoubleT();
513 const double slice = 60; 339 const double slice = 60;
514 340
515 notification_promo_->num_groups_ = 18; 341 notification_promo_.num_groups_ = 18;
516 notification_promo_->initial_segment_ = 5; 342 notification_promo_.initial_segment_ = 5;
517 notification_promo_->increment_ = 3; 343 notification_promo_.increment_ = 3;
518 notification_promo_->time_slice_ = slice; 344 notification_promo_.time_slice_ = slice;
519 345
520 notification_promo_->start_ = now - 1; 346 notification_promo_.start_ = now - 1;
521 notification_promo_->end_ = now + slice; 347 notification_promo_.end_ = now + slice;
522 348
523 // Test initial segment. 349 // Test initial segment.
524 notification_promo_->group_ = 4; 350 notification_promo_.group_ = 4;
525 EXPECT_TRUE(notification_promo_->CanShow()); 351 EXPECT_TRUE(notification_promo_.CanShow());
526 notification_promo_->group_ = 5; 352 notification_promo_.group_ = 5;
527 EXPECT_FALSE(notification_promo_->CanShow()); 353 EXPECT_FALSE(notification_promo_.CanShow());
528 354
529 // Test first increment. 355 // Test first increment.
530 notification_promo_->start_ -= slice; 356 notification_promo_.start_ -= slice;
531 notification_promo_->group_ = 7; 357 notification_promo_.group_ = 7;
532 EXPECT_TRUE(notification_promo_->CanShow()); 358 EXPECT_TRUE(notification_promo_.CanShow());
533 notification_promo_->group_ = 8; 359 notification_promo_.group_ = 8;
534 EXPECT_FALSE(notification_promo_->CanShow()); 360 EXPECT_FALSE(notification_promo_.CanShow());
535 361
536 // Test second increment. 362 // Test second increment.
537 notification_promo_->start_ -= slice; 363 notification_promo_.start_ -= slice;
538 notification_promo_->group_ = 10; 364 notification_promo_.group_ = 10;
539 EXPECT_TRUE(notification_promo_->CanShow()); 365 EXPECT_TRUE(notification_promo_.CanShow());
540 notification_promo_->group_ = 11; 366 notification_promo_.group_ = 11;
541 EXPECT_FALSE(notification_promo_->CanShow()); 367 EXPECT_FALSE(notification_promo_.CanShow());
542 368
543 // Test penultimate increment. 369 // Test penultimate increment.
544 notification_promo_->start_ -= 2 * slice; 370 notification_promo_.start_ -= 2 * slice;
545 notification_promo_->group_ = 16; 371 notification_promo_.group_ = 16;
546 EXPECT_TRUE(notification_promo_->CanShow()); 372 EXPECT_TRUE(notification_promo_.CanShow());
547 notification_promo_->group_ = 17; 373 notification_promo_.group_ = 17;
548 EXPECT_FALSE(notification_promo_->CanShow()); 374 EXPECT_FALSE(notification_promo_.CanShow());
549 375
550 // Test last increment. 376 // Test last increment.
551 notification_promo_->start_ -= slice; 377 notification_promo_.start_ -= slice;
552 EXPECT_TRUE(notification_promo_->CanShow()); 378 EXPECT_TRUE(notification_promo_.CanShow());
553 } 379 }
554 380
555 void TestGplus() { 381 void TestGplus() {
556 notification_promo_->gplus_required_ = true; 382 notification_promo_.gplus_required_ = true;
557 383
558 // Test G+ required. 384 // Test G+ required.
559 notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, true); 385 notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, true);
560 EXPECT_TRUE(notification_promo_->CanShow()); 386 EXPECT_TRUE(notification_promo_.CanShow());
561 notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, false); 387 notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, false);
562 EXPECT_FALSE(notification_promo_->CanShow()); 388 EXPECT_FALSE(notification_promo_.CanShow());
563 389
564 notification_promo_->gplus_required_ = false; 390 notification_promo_.gplus_required_ = false;
565 391
566 // Test G+ not required. 392 // Test G+ not required.
567 notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, true); 393 notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, true);
568 EXPECT_TRUE(notification_promo_->CanShow()); 394 EXPECT_TRUE(notification_promo_.CanShow());
569 notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, false); 395 notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, false);
570 EXPECT_TRUE(notification_promo_->CanShow()); 396 EXPECT_TRUE(notification_promo_.CanShow());
571 } 397 }
572 398
573 private: 399 private:
574 Profile* profile_; 400 Profile* profile_;
575 PrefService* prefs_; 401 PrefService* prefs_;
576 NotificationPromo* notification_promo_; 402 NotificationPromo notification_promo_;
577 bool received_notification_; 403 bool received_notification_;
578 bool should_receive_notification_;
579 bool build_targeted_;
580 scoped_ptr<DictionaryValue> test_json_; 404 scoped_ptr<DictionaryValue> test_json_;
581 405
582 std::string promo_text_; 406 std::string promo_text_;
583 407
584 double start_; 408 double start_;
585 double end_; 409 double end_;
586 410
587 int num_groups_; 411 int num_groups_;
588 int initial_segment_; 412 int initial_segment_;
589 int increment_; 413 int increment_;
590 int time_slice_; 414 int time_slice_;
591 int max_group_; 415 int max_group_;
592 416
593 int max_views_; 417 int max_views_;
594 418
595 bool closed_; 419 bool closed_;
596 420
597 int build_;
598 int platform_;
599 int current_platform_;
600
601 bool gplus_required_; 421 bool gplus_required_;
602 }; 422 };
603 423
604 TEST_F(PromoResourceServiceTest, NotificationPromoTestLegacy) {
605 // Check that prefs are set correctly.
606 PrefService* prefs = profile_.GetPrefs();
607 ASSERT_TRUE(prefs != NULL);
608
609 NotificationPromoTestDelegate delegate(&profile_);
610 scoped_refptr<NotificationPromo> notification_promo =
611 NotificationPromo::Create(&profile_, &delegate);
612
613 // Make sure prefs are unset.
614 delegate.TestPrefs();
615
616 // Set up start and end dates and promo line in a Dictionary as if parsed
617 // from the service.
618 delegate.Init(notification_promo,
619 "{ "
620 " \"topic\": {"
621 " \"answers\": ["
622 " {"
623 " \"name\": \"promo_start\","
624 " \"question\": \"3:2:5:10:15:0\","
625 " \"tooltip\": \"Eat more pie!\","
626 " \"inproduct\": \"31/01/10 01:00 GMT\""
627 " },"
628 " {"
629 " \"name\": \"promo_end\","
630 " \"inproduct\": \"31/01/14 01:00 GMT\""
631 " }"
632 " ]"
633 " }"
634 "}",
635 "Eat more pie!",
636 1264899600, // unix epoch for Jan 31 2010 0100 GMT.
637 1391130000, // unix epoch for Jan 31 2012 0100 GMT.
638 100, 0, 1, 2, 5, 10, 3, 15, false);
639
640 delegate.InitPromoFromJson(true, true);
641
642 // Second time should not trigger a notification.
643 delegate.InitPromoFromJson(false, true);
644
645 delegate.TestInitFromPrefs();
646
647 // Test various conditions of CanShow.
648 // TestGroup Has the side effect of setting us to a passing group.
649 delegate.TestGroup();
650 delegate.TestViews();
651 delegate.TestBuild();
652 delegate.TestClosed();
653 delegate.TestPromoText();
654 delegate.TestTime();
655 delegate.TestPlatforms();
656 }
657
658 TEST_F(PromoResourceServiceTest, NotificationPromoTest) { 424 TEST_F(PromoResourceServiceTest, NotificationPromoTest) {
659 // Check that prefs are set correctly. 425 // Check that prefs are set correctly.
660 PrefService* prefs = profile_.GetPrefs(); 426 PrefService* prefs = profile_.GetPrefs();
661 ASSERT_TRUE(prefs != NULL); 427 ASSERT_TRUE(prefs != NULL);
662 428
663 NotificationPromoTestDelegate delegate(&profile_); 429 NotificationPromoTest promo_test(&profile_);
664 scoped_refptr<NotificationPromo> notification_promo =
665 NotificationPromo::Create(&profile_, &delegate);
666 430
667 // Make sure prefs are unset. 431 // Make sure prefs are unset.
668 delegate.TestPrefs(); 432 promo_test.TestPrefs();
669 433
670 // Set up start and end dates and promo line in a Dictionary as if parsed 434 // Set up start and end dates and promo line in a Dictionary as if parsed
671 // from the service. 435 // from the service.
672 delegate.Init(notification_promo, 436 promo_test.Init("{"
673 "{" 437 " \"ntp_notification_promo\":"
674 " \"ntp_notification_promo\":" 438 " {"
675 " {" 439 " \"date\":"
676 " \"date\":" 440 " ["
677 " [" 441 " {"
678 " {" 442 " \"start\":\"15 Jan 2012 10:50:85 PST\","
679 " \"start\":\"15 Jan 2012 10:50:85 PST\"," 443 " \"end\":\"7 Jan 2013 5:40:75 PST\""
680 " \"end\":\"7 Jan 2013 5:40:75 PST\"" 444 " }"
681 " }" 445 " ],"
682 " ]," 446 " \"strings\":"
683 " \"strings\":" 447 " {"
684 " {" 448 " \"NTP4_HOW_DO_YOU_FEEL_ABOUT_CHROME\":"
685 " \"NTP4_HOW_DO_YOU_FEEL_ABOUT_CHROME\":" 449 " \"What do you think of Chrome?\""
686 " \"What do you think of Chrome?\"" 450 " },"
687 " }," 451 " \"grouping\":"
688 " \"grouping\":" 452 " {"
689 " {" 453 " \"buckets\":1000,"
690 " \"buckets\":1000," 454 " \"segment\":200,"
691 " \"segment\":200," 455 " \"increment\":100,"
692 " \"increment\":100," 456 " \"increment_frequency\":3600,"
693 " \"increment_frequency\":3600," 457 " \"increment_max\":400"
694 " \"increment_max\":400" 458 " },"
695 " }," 459 " \"payload\":"
696 " \"payload\":" 460 " {"
697 " {" 461 " \"days_active\":7,"
698 " \"days_active\":7," 462 " \"install_age_days\":21,"
699 " \"install_age_days\":21," 463 " \"gplus_required\":false"
700 " \"gplus_required\":false" 464 " },"
701 " }," 465 " \"max_views\":30"
702 " \"max_views\":30" 466 " }"
703 " }" 467 "}",
704 "}", 468 "What do you think of Chrome?",
705 "What do you think of Chrome?", 469 1326653485, // unix epoch for 15 Jan 2012 10:50:85 PST.
706 1326653485, // unix epoch for 15 Jan 2012 10:50:85 PST. 470 1357566075, // unix epoch for 7 Jan 2013 5:40:75 PST.
707 1357566075, // unix epoch for 7 Jan 2013 5:40:75 PST. 471 1000, 200, 100, 3600, 400, 30, false);
708 1000, 200, 100, 3600, 400, 30, 15, 15, false);
709 472
710 delegate.InitPromoFromJson(true, false); 473 promo_test.InitPromoFromJson(true);
711 474
712 // Second time should not trigger a notification. 475 // Second time should not trigger a notification.
713 delegate.InitPromoFromJson(false, false); 476 promo_test.InitPromoFromJson(false);
714 477
715 delegate.TestInitFromPrefs(); 478 promo_test.TestInitFromPrefs();
716 479
717 // Test various conditions of CanShow. 480 // Test various conditions of CanShow.
718 // TestGroup Has the side effect of setting us to a passing group. 481 // TestGroup Has the side effect of setting us to a passing group.
719 delegate.TestGroup(); 482 promo_test.TestGroup();
720 delegate.TestViews(); 483 promo_test.TestViews();
721 delegate.TestBuild(); 484 promo_test.TestClosed();
722 delegate.TestClosed(); 485 promo_test.TestPromoText();
723 delegate.TestPromoText(); 486 promo_test.TestTime();
724 delegate.TestTime(); 487 promo_test.TestIncrement();
725 delegate.TestIncrement(); 488 promo_test.TestGplus();
726 delegate.TestPlatforms();
727 delegate.TestGplus();
728 }
729
730 TEST_F(PromoResourceServiceTest, NotificationPromoTestFail) {
731 // Check that prefs are set correctly.
732 PrefService* prefs = profile_.GetPrefs();
733 ASSERT_TRUE(prefs != NULL);
734
735 NotificationPromoTestDelegate delegate(&profile_);
736 scoped_refptr<NotificationPromo> notification_promo =
737 NotificationPromo::Create(&profile_, &delegate);
738
739 // Set up start and end dates and promo line in a Dictionary as if parsed
740 // from the service.
741 delegate.Init(notification_promo,
742 "{ "
743 " \"topic\": {"
744 " \"answers\": ["
745 " {"
746 " \"name\": \"promo_start\","
747 " \"question\": \"12:8:10:20:15\","
748 " \"tooltip\": \"Happy 3rd Birthday!\","
749 " \"inproduct\": \"09/15/10 05:00 PDT\""
750 " },"
751 " {"
752 " \"name\": \"promo_end\","
753 " \"inproduct\": \"09/30/10 05:00 PDT\""
754 " }"
755 " ]"
756 " }"
757 "}",
758 "Happy 3rd Birthday!",
759 1284552000, // unix epoch for Sep 15 2010 0500 PDT.
760 1285848000, // unix epoch for Sep 30 2010 0500 PDT.
761 100, 0, 1, 8, 10, 20, 12, 15, false);
762
763 delegate.InitPromoFromJson(true, true);
764
765 // Second time should not trigger a notification.
766 delegate.InitPromoFromJson(false, true);
767
768 delegate.TestInitFromPrefs();
769
770 // Should fail because out of time bounds.
771 EXPECT_FALSE(notification_promo->CanShow());
772 }
773
774 TEST_F(PromoResourceServiceTest, GetNextQuestionValueTest) {
775 const std::string question("0:-100:2048:0:0:0:2a");
776 const int question_vec[] = { 0, -100, 2048, 0, 0, 0};
777 size_t index = 0;
778 bool err = false;
779
780 for (size_t i = 0; i < arraysize(question_vec); ++i) {
781 EXPECT_EQ(question_vec[i],
782 NotificationPromo::GetNextQuestionValue(question, &index, &err));
783 EXPECT_FALSE(err);
784 }
785 EXPECT_EQ(NotificationPromo::GetNextQuestionValue(question, &index, &err), 0);
786 EXPECT_TRUE(err);
787 } 489 }
788 490
789 TEST_F(PromoResourceServiceTest, PromoServerURLTest) { 491 TEST_F(PromoResourceServiceTest, PromoServerURLTest) {
790 GURL promo_server_url = NotificationPromo::PromoServerURL(); 492 GURL promo_server_url = NotificationPromo::PromoServerURL();
791 EXPECT_FALSE(promo_server_url.is_empty()); 493 EXPECT_FALSE(promo_server_url.is_empty());
494 EXPECT_TRUE(promo_server_url.SchemeIs("https"));
792 // TODO(achuith): Test this better. 495 // TODO(achuith): Test this better.
793 } 496 }
794 497
795 TEST_F(PromoResourceServiceTest, UnpackWebStoreSignal) { 498 TEST_F(PromoResourceServiceTest, UnpackWebStoreSignal) {
796 web_resource_service_->set_channel(chrome::VersionInfo::CHANNEL_DEV); 499 web_resource_service_->set_channel(chrome::VersionInfo::CHANNEL_DEV);
797 500
798 std::string json = "{ " 501 std::string json = "{ "
799 " \"topic\": {" 502 " \"topic\": {"
800 " \"answers\": [" 503 " \"answers\": ["
801 " {" 504 " {"
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 7)); 758 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 7));
1056 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 15)); 759 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 15));
1057 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 8)); 760 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 8));
1058 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 11)); 761 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 11));
1059 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 12)); 762 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 12));
1060 763
1061 // invalid 764 // invalid
1062 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, -1)); 765 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, -1));
1063 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, INT_MAX)); 766 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, INT_MAX));
1064 } 767 }
OLDNEW
« no previous file with comments | « chrome/browser/web_resource/promo_resource_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698