Chromium Code Reviews| Index: chrome/browser/rlz/rlz_unittest.cc |
| diff --git a/chrome/browser/rlz/rlz_unittest.cc b/chrome/browser/rlz/rlz_unittest.cc |
| index 33f04e33adb4fa1a4bcccf1cfdf858fa245335ac..cc19aa103be9b14a653379e58e8a46468c3f6cb8 100644 |
| --- a/chrome/browser/rlz/rlz_unittest.cc |
| +++ b/chrome/browser/rlz/rlz_unittest.cc |
| @@ -7,9 +7,8 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/stringprintf.h" |
| #include "base/path_service.h" |
| -#include "base/test/test_reg_util_win.h" |
| +#include "base/scoped_temp_dir.h" |
| #include "base/utf_string_conversions.h" |
| -#include "base/win/registry.h" |
| #include "chrome/browser/autocomplete/autocomplete.h" |
| #include "chrome/browser/google/google_util.h" |
| #include "chrome/browser/profiles/profile.h" |
| @@ -21,21 +20,33 @@ |
| #include "content/public/browser/notification_service.h" |
| #include "content/public/browser/notification_details.h" |
| #include "content/public/browser/notification_source.h" |
| -#include "rlz/win/lib/rlz_lib.h" // InitializeTempHivesForTesting |
| #include "testing/gtest/include/gtest/gtest.h" |
| -using base::win::RegKey; |
| +#if defined(OS_WIN) |
| +#include "base/test/test_reg_util_win.h" |
| +#include "base/win/registry.h" |
| +#include "rlz/win/lib/rlz_lib.h" // InitializeTempHivesForTesting |
| +#elif defined(OS_MACOSX) |
| +#include "rlz/lib/rlz_value_store.h" // SetRlzStoreDirectory |
| +#endif |
| + |
| using content::NavigationEntry; |
| -using registry_util::RegistryOverrideManager; |
| using testing::AssertionResult; |
| using testing::AssertionSuccess; |
| using testing::AssertionFailure; |
| +#if defined(OS_WIN) |
| +using base::win::RegKey; |
| +using registry_util::RegistryOverrideManager; |
| +#endif |
| + |
| namespace { |
| +#if defined(OS_WIN) |
| // Registry path to overridden hive. |
| const wchar_t kRlzTempHkcu[] = L"rlz_hkcu"; |
| const wchar_t kRlzTempHklm[] = L"rlz_hklm"; |
| +#endif |
| // Dummy RLZ string for the access points. |
| const char kOmniboxRlzString[] = "test_omnibox"; |
| @@ -146,7 +157,9 @@ class RlzLibTest : public testing::Test { |
| protected: |
| void SetMainBrand(const char* brand); |
| void SetReactivationBrand(const char* brand); |
| +#if defined(OS_WIN) |
| void SetRegistryBrandValue(const wchar_t* name, const char* brand); |
| +#endif |
| void SimulateOmniboxUsage(); |
| void SimulateHomepageUsage(); |
| @@ -157,12 +170,18 @@ class RlzLibTest : public testing::Test { |
| void ExpectReactivationRlzPingSent(bool expected); |
| TestRLZTracker tracker_; |
| +#if defined(OS_WIN) |
| RegistryOverrideManager override_manager_; |
| +#elif defined(OS_MACOSX) |
| + ScopedTempDir temp_dir_; |
| + scoped_ptr<google_util::BrandForTesting> brand_override_; |
|
Roger Tawa OOO till Jul 10th
2012/03/26 18:52:38
just a question: is it possible to use BrandForTes
Nico
2012/03/26 20:26:57
I think so. (It would make the test more of a unit
|
| +#endif |
| }; |
| void RlzLibTest::SetUp() { |
| testing::Test::SetUp(); |
| +#if defined(OS_WIN) |
| // Before overriding HKLM for the tests, we need to set it up correctly |
| // so that the rlz_lib calls work. This needs to be done before we do the |
| // override. |
| @@ -193,6 +212,10 @@ void RlzLibTest::SetUp() { |
| // initialization performed above. |
| override_manager_.OverrideRegistry(HKEY_LOCAL_MACHINE, kRlzTempHklm); |
| override_manager_.OverrideRegistry(HKEY_CURRENT_USER, kRlzTempHkcu); |
| +#elif defined(OS_MACOSX) |
| + ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| + rlz_lib::testing::SetRlzStoreDirectory(temp_dir_.path()); |
| +#endif |
| // Make sure a non-organic brand code is set in the registry or the RLZTracker |
| // is pretty much a no-op. |
| @@ -201,23 +224,34 @@ void RlzLibTest::SetUp() { |
| } |
| void RlzLibTest::TearDown() { |
| +#if defined(OS_MACOSX) |
| + rlz_lib::testing::SetRlzStoreDirectory(FilePath()); |
| +#endif |
| testing::Test::TearDown(); |
| } |
| void RlzLibTest::SetMainBrand(const char* brand) { |
| +#if defined(OS_WIN) |
| SetRegistryBrandValue(google_update::kRegRLZBrandField, brand); |
| +#elif defined(OS_MACOSX) |
| + brand_override_.reset(new google_util::BrandForTesting(brand)); |
| +#endif |
| std::string check_brand; |
| google_util::GetBrand(&check_brand); |
| EXPECT_EQ(brand, check_brand); |
| } |
| void RlzLibTest::SetReactivationBrand(const char* brand) { |
| + // TODO(thakis): Reactivation doesn't exist on Mac yet. |
| +#if defined(OS_WIN) |
| SetRegistryBrandValue(google_update::kRegRLZReactivationBrandField, brand); |
| std::string check_brand; |
| google_util::GetReactivationBrand(&check_brand); |
| EXPECT_EQ(brand, check_brand); |
| +#endif |
| } |
| +#if defined(OS_WIN) |
| void RlzLibTest::SetRegistryBrandValue(const wchar_t* name, |
| const char* brand) { |
| BrowserDistribution* dist = BrowserDistribution::GetDistribution(); |
| @@ -227,10 +261,11 @@ void RlzLibTest::SetRegistryBrandValue(const wchar_t* name, |
| LONG result = key.DeleteValue(name); |
| ASSERT_TRUE(ERROR_SUCCESS == result || ERROR_FILE_NOT_FOUND == result); |
| } else { |
| - string16 brand16 = ASCIIToWide(brand); |
| + string16 brand16 = ASCIIToUTF16(brand); |
| ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name, brand16.c_str())); |
| } |
| } |
| +#endif |
| void RlzLibTest::SimulateOmniboxUsage() { |
| tracker_.Observe(chrome::NOTIFICATION_OMNIBOX_OPENED_URL, |
| @@ -513,7 +548,7 @@ TEST_F(RlzLibTest, GetAccessPointRlzOnIoThread) { |
| tracker_.set_assume_not_ui_thread(true); |
| EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| - EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); |
| + EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| } |
| TEST_F(RlzLibTest, GetAccessPointRlzNotOnIoThread) { |
| @@ -537,11 +572,11 @@ TEST_F(RlzLibTest, GetAccessPointRlzIsCached) { |
| tracker_.set_assume_not_ui_thread(true); |
| EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| - EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); |
| + EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| tracker_.set_assume_not_ui_thread(false); |
| EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| - EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); |
| + EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| } |
| TEST_F(RlzLibTest, PingUpdatesRlzCache) { |
| @@ -555,17 +590,17 @@ TEST_F(RlzLibTest, PingUpdatesRlzCache) { |
| tracker_.set_assume_not_ui_thread(true); |
| EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| - EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); |
| + EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz)); |
| - EXPECT_STREQ(kHomepageRlzString, WideToUTF8(rlz).c_str()); |
| + EXPECT_STREQ(kHomepageRlzString, UTF16ToUTF8(rlz).c_str()); |
| // Make sure cache is valid. |
| tracker_.set_assume_not_ui_thread(false); |
| EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| - EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); |
| + EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz)); |
| - EXPECT_STREQ(kHomepageRlzString, WideToUTF8(rlz).c_str()); |
| + EXPECT_STREQ(kHomepageRlzString, UTF16ToUTF8(rlz).c_str()); |
| // Perform ping. |
| tracker_.set_assume_not_ui_thread(true); |
| @@ -577,9 +612,9 @@ TEST_F(RlzLibTest, PingUpdatesRlzCache) { |
| tracker_.set_assume_not_ui_thread(false); |
| EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| - EXPECT_STREQ(kNewOmniboxRlzString, WideToUTF8(rlz).c_str()); |
| + EXPECT_STREQ(kNewOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz)); |
| - EXPECT_STREQ(kNewHomepageRlzString, WideToUTF8(rlz).c_str()); |
| + EXPECT_STREQ(kNewHomepageRlzString, UTF16ToUTF8(rlz).c_str()); |
| } |
| TEST_F(RlzLibTest, ObserveHandlesBadArgs) { |
| @@ -594,6 +629,8 @@ TEST_F(RlzLibTest, ObserveHandlesBadArgs) { |
| content::Details<NavigationEntry>(entry.get())); |
| } |
| +// TODO(thakis): Reactivation doesn't exist on Mac yet. |
| +#if defined(OS_WIN) |
| TEST_F(RlzLibTest, ReactivationNonOrganicNonOrganic) { |
| SetReactivationBrand("REAC"); |
| @@ -636,4 +673,4 @@ TEST_F(RlzLibTest, ReactivationOrganicOrganic) { |
| ExpectRlzPingSent(false); |
| ExpectReactivationRlzPingSent(false); |
| } |
| - |
| +#endif // defined(OS_WIN) |