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

Side by Side Diff: chrome/browser/rlz/rlz_unittest.cc

Issue 7980013: After a successful ping of the RLZ server, make sure to update the cached (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 3 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/rlz/rlz.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) 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/rlz/rlz.h" 5 #include "chrome/browser/rlz/rlz.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/test/test_reg_util_win.h" 10 #include "base/test/test_reg_util_win.h"
(...skipping 19 matching lines...) Expand all
30 30
31 namespace { 31 namespace {
32 32
33 // Registry path to overridden hive. 33 // Registry path to overridden hive.
34 const wchar_t kRlzTempHkcu[] = L"rlz_hkcu"; 34 const wchar_t kRlzTempHkcu[] = L"rlz_hkcu";
35 const wchar_t kRlzTempHklm[] = L"rlz_hklm"; 35 const wchar_t kRlzTempHklm[] = L"rlz_hklm";
36 36
37 // Dummy RLZ string for the access points. 37 // Dummy RLZ string for the access points.
38 const char kOmniboxRlzString[] = "test_omnibox"; 38 const char kOmniboxRlzString[] = "test_omnibox";
39 const char kHomepageRlzString[] = "test_homepage"; 39 const char kHomepageRlzString[] = "test_homepage";
40 const char kNewOmniboxRlzString[] = "new_omnibox";
41 const char kNewHomepageRlzString[] = "new_homepage";
40 42
41 // Some helper macros to test it a string contains/does not contain a substring. 43 // Some helper macros to test it a string contains/does not contain a substring.
42 44
43 AssertionResult CmpHelperSTRC(const char* str_expression, 45 AssertionResult CmpHelperSTRC(const char* str_expression,
44 const char* substr_expression, 46 const char* substr_expression,
45 const char* str, 47 const char* str,
46 const char* substr) { 48 const char* substr) {
47 if (NULL != strstr(str, substr)) { 49 if (NULL != strstr(str, substr)) {
48 return AssertionSuccess(); 50 return AssertionSuccess();
49 } 51 }
(...skipping 24 matching lines...) Expand all
74 76
75 } // namespace 77 } // namespace
76 78
77 // Test class for RLZ tracker. Makes some member functions public and 79 // Test class for RLZ tracker. Makes some member functions public and
78 // overrides others to make it easier to test. 80 // overrides others to make it easier to test.
79 class TestRLZTracker : public RLZTracker { 81 class TestRLZTracker : public RLZTracker {
80 public: 82 public:
81 using RLZTracker::DelayedInit; 83 using RLZTracker::DelayedInit;
82 using RLZTracker::Observe; 84 using RLZTracker::Observe;
83 85
84 TestRLZTracker() : pingnow_called_(false), assume_io_thread_(false) { 86 TestRLZTracker() : pingnow_called_(false), assume_not_ui_thread_(false) {
85 set_tracker(this); 87 set_tracker(this);
86 } 88 }
87 89
88 virtual ~TestRLZTracker() { 90 virtual ~TestRLZTracker() {
89 set_tracker(NULL); 91 set_tracker(NULL);
90 } 92 }
91 93
92 bool pingnow_called() const { 94 bool pingnow_called() const {
93 return pingnow_called_; 95 return pingnow_called_;
94 } 96 }
95 97
96 bool assume_io_thread() const { 98 void set_assume_not_ui_thread(bool assume_not_ui_thread) {
97 return assume_io_thread_; 99 assume_not_ui_thread_ = assume_not_ui_thread;
98 }
99
100 void set_assume_io_thread(bool assume_io_thread) {
101 assume_io_thread_ = assume_io_thread;
102 } 100 }
103 101
104 private: 102 private:
105 virtual void ScheduleDelayedInit(int delay) OVERRIDE { 103 virtual void ScheduleDelayedInit(int delay) OVERRIDE {
106 // If the delay is 0, invoke the delayed init now. Otherwise, 104 // If the delay is 0, invoke the delayed init now. Otherwise,
107 // don't schedule anything, it will be manually called during tests. 105 // don't schedule anything, it will be manually called during tests.
108 if (delay == 0) 106 if (delay == 0)
109 DelayedInit(); 107 DelayedInit();
110 } 108 }
111 109
112 virtual void ScheduleFinancialPing() OVERRIDE { 110 virtual void ScheduleFinancialPing() OVERRIDE {
113 PingNow(this); 111 PingNow(this);
114 } 112 }
115 113
116 virtual bool ScheduleGetAccessPointRlz(rlz_lib::AccessPoint point) OVERRIDE { 114 virtual bool ScheduleGetAccessPointRlz(rlz_lib::AccessPoint point) OVERRIDE {
117 return !assume_io_thread_; 115 return !assume_not_ui_thread_;
118 } 116 }
119 117
120 virtual bool SendFinancialPing(const std::wstring& brand, 118 virtual bool SendFinancialPing(const std::wstring& brand,
121 const std::wstring& lang, 119 const std::wstring& lang,
122 const std::wstring& referral, 120 const std::wstring& referral,
123 bool exclude_id) OVERRIDE { 121 bool exclude_id) OVERRIDE {
124 // Don't ping the server during tests. 122 // Don't ping the server during tests.
125 pingnow_called_ = true; 123 pingnow_called_ = true;
124
125 // Set new access points RLZ string, like the actual server ping would have
126 // done.
127 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kNewOmniboxRlzString);
128 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE,
129 kNewHomepageRlzString);
126 return true; 130 return true;
127 } 131 }
128 132
129 bool pingnow_called_; 133 bool pingnow_called_;
130 bool assume_io_thread_; 134 bool assume_not_ui_thread_;
131 135
132 DISALLOW_COPY_AND_ASSIGN(TestRLZTracker); 136 DISALLOW_COPY_AND_ASSIGN(TestRLZTracker);
133 }; 137 };
134 138
135 class RlzLibTest : public testing::Test { 139 class RlzLibTest : public testing::Test {
136 virtual void SetUp() OVERRIDE; 140 virtual void SetUp() OVERRIDE;
137 virtual void TearDown() OVERRIDE; 141 virtual void TearDown() OVERRIDE;
138 142
139 protected: 143 protected:
140 void SimulateOmniboxUsage(); 144 void SimulateOmniboxUsage();
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 462
459 ExpectRlzPingSent(false); 463 ExpectRlzPingSent(false);
460 } 464 }
461 465
462 TEST_F(RlzLibTest, GetAccessPointRlzOnIoThread) { 466 TEST_F(RlzLibTest, GetAccessPointRlzOnIoThread) {
463 // Set dummy RLZ string. 467 // Set dummy RLZ string.
464 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); 468 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString);
465 469
466 std::wstring rlz; 470 std::wstring rlz;
467 471
468 tracker_.set_assume_io_thread(true); 472 tracker_.set_assume_not_ui_thread(true);
469 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); 473 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz));
470 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); 474 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str());
471 } 475 }
472 476
473 TEST_F(RlzLibTest, GetAccessPointRlzNotOnIoThread) { 477 TEST_F(RlzLibTest, GetAccessPointRlzNotOnIoThread) {
474 // Set dummy RLZ string. 478 // Set dummy RLZ string.
475 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); 479 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString);
476 480
477 std::wstring rlz; 481 std::wstring rlz;
478 482
479 tracker_.set_assume_io_thread(false); 483 tracker_.set_assume_not_ui_thread(false);
480 EXPECT_FALSE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); 484 EXPECT_FALSE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz));
481 } 485 }
482 486
483 TEST_F(RlzLibTest, GetAccessPointRlzIsCached) { 487 TEST_F(RlzLibTest, GetAccessPointRlzIsCached) {
484 // Set dummy RLZ string. 488 // Set dummy RLZ string.
485 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); 489 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString);
486 490
487 std::wstring rlz; 491 std::wstring rlz;
488 492
489 tracker_.set_assume_io_thread(false); 493 tracker_.set_assume_not_ui_thread(false);
490 EXPECT_FALSE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); 494 EXPECT_FALSE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz));
491 495
492 tracker_.set_assume_io_thread(true); 496 tracker_.set_assume_not_ui_thread(true);
493 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); 497 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz));
494 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); 498 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str());
495 499
496 tracker_.set_assume_io_thread(false); 500 tracker_.set_assume_not_ui_thread(false);
497 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); 501 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz));
498 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); 502 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str());
499 } 503 }
500 504
501 TEST_F(RlzLibTest, PingInvalidatesRlzCache) { 505 TEST_F(RlzLibTest, PingUpdatesRlzCache) {
502 // Set dummy RLZ string. 506 // Set dummy RLZ string.
503 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); 507 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString);
508 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, kHomepageRlzString);
504 509
505 std::wstring rlz; 510 std::wstring rlz;
506 511
507 // Prime the cache. 512 // Prime the cache.
508 tracker_.set_assume_io_thread(true); 513 tracker_.set_assume_not_ui_thread(true);
514
509 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); 515 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz));
510 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); 516 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str());
517 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz));
518 EXPECT_STREQ(kHomepageRlzString, WideToUTF8(rlz).c_str());
511 519
512 // Make sure cache is valid. 520 // Make sure cache is valid.
513 tracker_.set_assume_io_thread(false); 521 tracker_.set_assume_not_ui_thread(false);
522
514 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); 523 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz));
515 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); 524 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str());
525 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz));
526 EXPECT_STREQ(kHomepageRlzString, WideToUTF8(rlz).c_str());
516 527
517 // Perform ping. 528 // Perform ping.
529 tracker_.set_assume_not_ui_thread(true);
518 RLZTracker::InitRlzDelayed(true, 20, true, true); 530 RLZTracker::InitRlzDelayed(true, 20, true, true);
519 InvokeDelayedInit(); 531 InvokeDelayedInit();
520 ExpectRlzPingSent(true); 532 ExpectRlzPingSent(true);
521 533
522 // Make sure cache is now invalid. 534 // Make sure cache is now updated.
523 EXPECT_FALSE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); 535 tracker_.set_assume_not_ui_thread(false);
536
537 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz));
538 EXPECT_STREQ(kNewOmniboxRlzString, WideToUTF8(rlz).c_str());
539 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz));
540 EXPECT_STREQ(kNewHomepageRlzString, WideToUTF8(rlz).c_str());
524 } 541 }
525 542
526 TEST_F(RlzLibTest, ObserveHandlesBadArgs) { 543 TEST_F(RlzLibTest, ObserveHandlesBadArgs) {
527 NavigationEntry entry(NULL, 0, GURL(), GURL(), string16(), 544 NavigationEntry entry(NULL, 0, GURL(), GURL(), string16(),
528 PageTransition::LINK); 545 PageTransition::LINK);
529 tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING, 546 tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING,
530 NotificationService::AllSources(), 547 NotificationService::AllSources(),
531 Details<NavigationEntry>(NULL)); 548 Details<NavigationEntry>(NULL));
532 tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING, 549 tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING,
533 NotificationService::AllSources(), 550 NotificationService::AllSources(),
534 Details<NavigationEntry>(&entry)); 551 Details<NavigationEntry>(&entry));
535 } 552 }
OLDNEW
« no previous file with comments | « chrome/browser/rlz/rlz.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698