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

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

Issue 63153009: Use RegistryOverrideManager properly in RLZ tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comment fix Created 7 years, 1 month 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 | « no previous file | chrome/chrome_tests_unit.gypi » ('j') | 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 "chrome/browser/rlz/rlz.h" 5 #include "chrome/browser/rlz/rlz.h"
6 6
7 #include "base/files/scoped_temp_dir.h"
8 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop/message_loop.h"
10 #include "base/path_service.h"
11 #include "base/strings/stringprintf.h"
12 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
13 #include "base/threading/thread.h"
14 #include "chrome/browser/chrome_notification_types.h" 9 #include "chrome/browser/chrome_notification_types.h"
15 #include "chrome/browser/google/google_util.h" 10 #include "chrome/browser/google/google_util.h"
16 #include "chrome/browser/omnibox/omnibox_log.h" 11 #include "chrome/browser/omnibox/omnibox_log.h"
17 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
18 #include "chrome/common/env_vars.h"
19 #include "chrome/installer/util/browser_distribution.h" 13 #include "chrome/installer/util/browser_distribution.h"
20 #include "chrome/installer/util/google_update_constants.h" 14 #include "chrome/installer/util/google_update_constants.h"
21 #include "content/public/browser/navigation_entry.h" 15 #include "content/public/browser/navigation_entry.h"
22 #include "content/public/browser/notification_details.h" 16 #include "content/public/browser/notification_details.h"
23 #include "content/public/browser/notification_service.h" 17 #include "content/public/browser/notification_service.h"
24 #include "content/public/browser/notification_source.h" 18 #include "content/public/browser/notification_source.h"
19 #include "rlz/test/rlz_test_helpers.h"
25 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
26 21
27 #if defined(OS_WIN) 22 #if defined(OS_WIN)
28 #include "base/test/test_reg_util_win.h"
29 #include "base/win/registry.h" 23 #include "base/win/registry.h"
30 #include "rlz/win/lib/rlz_lib.h" // InitializeTempHivesForTesting
31 #elif defined(OS_POSIX)
32 #include "rlz/lib/rlz_value_store.h" // SetRlzStoreDirectory
33 #endif 24 #endif
34 25
35 using content::NavigationEntry; 26 using content::NavigationEntry;
36 using testing::AssertionResult; 27 using testing::AssertionResult;
37 using testing::AssertionSuccess; 28 using testing::AssertionSuccess;
38 using testing::AssertionFailure; 29 using testing::AssertionFailure;
39 30
40 #if defined(OS_WIN) 31 #if defined(OS_WIN)
41 using base::win::RegKey; 32 using base::win::RegKey;
42 using registry_util::RegistryOverrideManager;
43 #endif 33 #endif
44 34
45 namespace { 35 namespace {
46 36
47 #if defined(OS_WIN)
48 // Registry path to overridden hive.
49 const wchar_t kRlzTempHkcu[] = L"rlz_hkcu";
50 const wchar_t kRlzTempHklm[] = L"rlz_hklm";
51 #endif
52
53 // Dummy RLZ string for the access points. 37 // Dummy RLZ string for the access points.
54 const char kOmniboxRlzString[] = "test_omnibox"; 38 const char kOmniboxRlzString[] = "test_omnibox";
55 const char kHomepageRlzString[] = "test_homepage"; 39 const char kHomepageRlzString[] = "test_homepage";
56 const char kNewOmniboxRlzString[] = "new_omnibox"; 40 const char kNewOmniboxRlzString[] = "new_omnibox";
57 const char kNewHomepageRlzString[] = "new_homepage"; 41 const char kNewHomepageRlzString[] = "new_homepage";
58 42
59 // 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.
60 44
61 AssertionResult CmpHelperSTRC(const char* str_expression, 45 AssertionResult CmpHelperSTRC(const char* str_expression,
62 const char* substr_expression, 46 const char* substr_expression,
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 kNewHomepageRlzString); 147 kNewHomepageRlzString);
164 return true; 148 return true;
165 } 149 }
166 150
167 std::set<std::string> pinged_brands_; 151 std::set<std::string> pinged_brands_;
168 bool assume_not_ui_thread_; 152 bool assume_not_ui_thread_;
169 153
170 DISALLOW_COPY_AND_ASSIGN(TestRLZTracker); 154 DISALLOW_COPY_AND_ASSIGN(TestRLZTracker);
171 }; 155 };
172 156
173 class RlzLibTest : public testing::Test { 157 class RlzLibTest : public RlzLibTestNoMachineState {
174 public: 158 protected:
175 virtual void SetUp() OVERRIDE; 159 virtual void SetUp() OVERRIDE;
176 virtual void TearDown() OVERRIDE;
177 160
178 protected:
179 void SetMainBrand(const char* brand); 161 void SetMainBrand(const char* brand);
180 void SetReactivationBrand(const char* brand); 162 void SetReactivationBrand(const char* brand);
181 #if defined(OS_WIN) 163 #if defined(OS_WIN)
182 void SetRegistryBrandValue(const wchar_t* name, const char* brand); 164 void SetRegistryBrandValue(const wchar_t* name, const char* brand);
183 #endif 165 #endif
184 166
185 void SimulateOmniboxUsage(); 167 void SimulateOmniboxUsage();
186 void SimulateHomepageUsage(); 168 void SimulateHomepageUsage();
187 void InvokeDelayedInit(); 169 void InvokeDelayedInit();
188 170
189 void ExpectEventRecorded(const char* event_name, bool expected); 171 void ExpectEventRecorded(const char* event_name, bool expected);
190 void ExpectRlzPingSent(bool expected); 172 void ExpectRlzPingSent(bool expected);
191 void ExpectReactivationRlzPingSent(bool expected); 173 void ExpectReactivationRlzPingSent(bool expected);
192 174
193 TestRLZTracker tracker_; 175 TestRLZTracker tracker_;
194 #if defined(OS_WIN) 176 #if defined(OS_POSIX)
195 RegistryOverrideManager override_manager_;
196 #elif defined(OS_POSIX)
197 base::ScopedTempDir temp_dir_;
198 scoped_ptr<google_util::BrandForTesting> brand_override_; 177 scoped_ptr<google_util::BrandForTesting> brand_override_;
199 #endif 178 #endif
200 }; 179 };
201 180
202 void RlzLibTest::SetUp() { 181 void RlzLibTest::SetUp() {
203 testing::Test::SetUp(); 182 RlzLibTestNoMachineState::SetUp();
204
205 #if defined(OS_WIN)
206 // Before overriding HKLM for the tests, we need to set it up correctly
207 // so that the rlz_lib calls work. This needs to be done before we do the
208 // override.
209
210 string16 temp_hklm_path = base::StringPrintf(
211 L"%ls\\%ls",
212 RegistryOverrideManager::kTempTestKeyPath,
213 kRlzTempHklm);
214
215 base::win::RegKey hklm;
216 ASSERT_EQ(ERROR_SUCCESS, hklm.Create(HKEY_CURRENT_USER,
217 temp_hklm_path.c_str(),
218 KEY_READ));
219
220 string16 temp_hkcu_path = base::StringPrintf(
221 L"%ls\\%ls",
222 RegistryOverrideManager::kTempTestKeyPath,
223 kRlzTempHkcu);
224
225 base::win::RegKey hkcu;
226 ASSERT_EQ(ERROR_SUCCESS, hkcu.Create(HKEY_CURRENT_USER,
227 temp_hkcu_path.c_str(),
228 KEY_READ));
229
230 rlz_lib::InitializeTempHivesForTesting(hklm, hkcu);
231
232 // Its important to override HKLM before HKCU because of the registry
233 // initialization performed above.
234 override_manager_.OverrideRegistry(HKEY_LOCAL_MACHINE, kRlzTempHklm);
235 override_manager_.OverrideRegistry(HKEY_CURRENT_USER, kRlzTempHkcu);
236 #elif defined(OS_POSIX)
237 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
238 rlz_lib::testing::SetRlzStoreDirectory(temp_dir_.path());
239 #endif
240 183
241 // Make sure a non-organic brand code is set in the registry or the RLZTracker 184 // Make sure a non-organic brand code is set in the registry or the RLZTracker
242 // is pretty much a no-op. 185 // is pretty much a no-op.
243 SetMainBrand("TEST"); 186 SetMainBrand("TEST");
244 SetReactivationBrand(""); 187 SetReactivationBrand("");
245 } 188 }
246 189
247 void RlzLibTest::TearDown() {
248 #if defined(OS_POSIX)
249 rlz_lib::testing::SetRlzStoreDirectory(base::FilePath());
250 #endif
251 testing::Test::TearDown();
252 }
253
254 void RlzLibTest::SetMainBrand(const char* brand) { 190 void RlzLibTest::SetMainBrand(const char* brand) {
255 #if defined(OS_WIN) 191 #if defined(OS_WIN)
256 SetRegistryBrandValue(google_update::kRegRLZBrandField, brand); 192 SetRegistryBrandValue(google_update::kRegRLZBrandField, brand);
257 #elif defined(OS_POSIX) 193 #elif defined(OS_POSIX)
258 brand_override_.reset(new google_util::BrandForTesting(brand)); 194 brand_override_.reset(new google_util::BrandForTesting(brand));
259 #endif 195 #endif
260 std::string check_brand; 196 std::string check_brand;
261 google_util::GetBrand(&check_brand); 197 google_util::GetBrand(&check_brand);
262 EXPECT_EQ(brand, check_brand); 198 EXPECT_EQ(brand, check_brand);
263 } 199 }
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::CHROME_OMNIBOX, 722 RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::CHROME_OMNIBOX,
787 rlz_lib::FIRST_SEARCH); 723 rlz_lib::FIRST_SEARCH);
788 724
789 ExpectEventRecorded(kOmniboxFirstSearch, true); 725 ExpectEventRecorded(kOmniboxFirstSearch, true);
790 726
791 RLZTracker::ClearRlzState(); 727 RLZTracker::ClearRlzState();
792 728
793 ExpectEventRecorded(kOmniboxFirstSearch, false); 729 ExpectEventRecorded(kOmniboxFirstSearch, false);
794 } 730 }
795 #endif // defined(OS_CHROMEOS) 731 #endif // defined(OS_CHROMEOS)
OLDNEW
« no previous file with comments | « no previous file | chrome/chrome_tests_unit.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698