| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/at_exit.h" | 6 #include "base/at_exit.h" |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/scoped_ptr.h" | 8 #include "base/scoped_ptr.h" |
| 9 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
| 10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
| 11 #include "base/win/registry.h" | 11 #include "base/win/registry.h" |
| 12 #include "chrome/common/policy_constants.h" | 12 #include "chrome/common/policy_constants.h" |
| 13 #include "chrome_frame/policy_settings.h" | 13 #include "chrome_frame/policy_settings.h" |
| 14 #include "chrome_frame/test/chrome_frame_test_utils.h" | 14 #include "chrome_frame/test/chrome_frame_test_utils.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 16 | 16 |
| 17 using base::win::RegKey; | 17 using base::win::RegKey; |
| 18 using chrome_frame_test::ScopedVirtualizeHklmAndHkcu; | 18 using chrome_frame_test::ScopedVirtualizeHklmAndHkcu; |
| 19 using chrome_frame_test::TempRegKeyOverride; | 19 using chrome_frame_test::TempRegKeyOverride; |
| 20 | 20 |
| 21 namespace { | 21 namespace { |
| 22 | 22 |
| 23 // A best effort way to zap CF policy entries that may be in the registry. | 23 // A best effort way to zap CF policy entries that may be in the registry. |
| 24 void DeleteChromeFramePolicyEntries(HKEY root) { | 24 void DeleteChromeFramePolicyEntries(HKEY root) { |
| 25 RegKey key; | 25 RegKey key; |
| 26 if (key.Open(root, policy::kRegistrySubKey, KEY_ALL_ACCESS)) { | 26 if (key.Open(root, policy::kRegistrySubKey, |
| 27 KEY_ALL_ACCESS) == ERROR_SUCCESS) { |
| 27 key.DeleteValue( | 28 key.DeleteValue( |
| 28 ASCIIToWide(policy::key::kChromeFrameRendererSettings).c_str()); | 29 ASCIIToWide(policy::key::kChromeFrameRendererSettings).c_str()); |
| 29 key.DeleteKey(ASCIIToWide(policy::key::kRenderInChromeFrameList).c_str()); | 30 key.DeleteKey(ASCIIToWide(policy::key::kRenderInChromeFrameList).c_str()); |
| 30 key.DeleteKey(ASCIIToWide(policy::key::kRenderInHostList).c_str()); | 31 key.DeleteKey(ASCIIToWide(policy::key::kRenderInHostList).c_str()); |
| 31 key.DeleteKey(ASCIIToWide(policy::key::kChromeFrameContentTypes).c_str()); | 32 key.DeleteKey(ASCIIToWide(policy::key::kChromeFrameContentTypes).c_str()); |
| 32 key.DeleteKey(ASCIIToWide(policy::key::kApplicationLocaleValue).c_str()); | 33 key.DeleteKey(ASCIIToWide(policy::key::kApplicationLocaleValue).c_str()); |
| 33 } | 34 } |
| 34 } | 35 } |
| 35 | 36 |
| 36 bool InitializePolicyKey(HKEY policy_root, RegKey* policy_key) { | 37 bool InitializePolicyKey(HKEY policy_root, RegKey* policy_key) { |
| 37 EXPECT_TRUE(policy_key->Create(policy_root, policy::kRegistrySubKey, | 38 EXPECT_EQ(ERROR_SUCCESS, policy_key->Create(policy_root, |
| 38 KEY_ALL_ACCESS)); | 39 policy::kRegistrySubKey, KEY_ALL_ACCESS)); |
| 39 return policy_key->Valid(); | 40 return policy_key->Valid(); |
| 40 } | 41 } |
| 41 | 42 |
| 42 void WritePolicyList(RegKey* policy_key, const wchar_t* list_name, | 43 void WritePolicyList(RegKey* policy_key, const wchar_t* list_name, |
| 43 const wchar_t* values[], int count) { | 44 const wchar_t* values[], int count) { |
| 44 DCHECK(policy_key); | 45 DCHECK(policy_key); |
| 45 // Remove any previous settings | 46 // Remove any previous settings |
| 46 policy_key->DeleteKey(list_name); | 47 policy_key->DeleteKey(list_name); |
| 47 | 48 |
| 48 RegKey list_key; | 49 RegKey list_key; |
| 49 EXPECT_TRUE(list_key.Create(policy_key->Handle(), list_name, KEY_ALL_ACCESS)); | 50 EXPECT_EQ(ERROR_SUCCESS, list_key.Create(policy_key->Handle(), list_name, |
| 51 KEY_ALL_ACCESS)); |
| 50 for (int i = 0; i < count; ++i) { | 52 for (int i = 0; i < count; ++i) { |
| 51 EXPECT_TRUE(list_key.WriteValue(base::StringPrintf(L"%i", i).c_str(), | 53 EXPECT_EQ(ERROR_SUCCESS, |
| 52 values[i])); | 54 list_key.WriteValue(base::StringPrintf(L"%i", i).c_str(), values[i])); |
| 53 } | 55 } |
| 54 } | 56 } |
| 55 | 57 |
| 56 bool SetRendererSettings(HKEY policy_root, | 58 bool SetRendererSettings(HKEY policy_root, |
| 57 PolicySettings::RendererForUrl renderer, | 59 PolicySettings::RendererForUrl renderer, |
| 58 const wchar_t* exclusions[], | 60 const wchar_t* exclusions[], |
| 59 int exclusion_count) { | 61 int exclusion_count) { |
| 60 RegKey policy_key; | 62 RegKey policy_key; |
| 61 if (!InitializePolicyKey(policy_root, &policy_key)) | 63 if (!InitializePolicyKey(policy_root, &policy_key)) |
| 62 return false; | 64 return false; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 87 return true; | 89 return true; |
| 88 } | 90 } |
| 89 | 91 |
| 90 bool SetChromeApplicationLocale(HKEY policy_root, const wchar_t* locale) { | 92 bool SetChromeApplicationLocale(HKEY policy_root, const wchar_t* locale) { |
| 91 RegKey policy_key; | 93 RegKey policy_key; |
| 92 if (!InitializePolicyKey(policy_root, &policy_key)) | 94 if (!InitializePolicyKey(policy_root, &policy_key)) |
| 93 return false; | 95 return false; |
| 94 | 96 |
| 95 std::wstring application_locale_value( | 97 std::wstring application_locale_value( |
| 96 ASCIIToWide(policy::key::kApplicationLocaleValue)); | 98 ASCIIToWide(policy::key::kApplicationLocaleValue)); |
| 97 EXPECT_TRUE(policy_key.WriteValue(application_locale_value.c_str(), locale)); | 99 EXPECT_EQ(ERROR_SUCCESS, |
| 100 policy_key.WriteValue(application_locale_value.c_str(), locale)); |
| 98 return true; | 101 return true; |
| 99 } | 102 } |
| 100 | 103 |
| 101 } // end namespace | 104 } // end namespace |
| 102 | 105 |
| 103 class PolicySettingsTest : public testing::Test { | 106 class PolicySettingsTest : public testing::Test { |
| 104 protected: | 107 protected: |
| 105 void SetUp() { | 108 void SetUp() { |
| 106 ResetPolicySettings(); | 109 ResetPolicySettings(); |
| 107 } | 110 } |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 HKEY root[] = { HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER }; | 208 HKEY root[] = { HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER }; |
| 206 for (int i = 0; i < arraysize(root); ++i) { | 209 for (int i = 0; i < arraysize(root); ++i) { |
| 207 SetChromeApplicationLocale(root[i], kTestApplicationLocale); | 210 SetChromeApplicationLocale(root[i], kTestApplicationLocale); |
| 208 ResetPolicySettings(); | 211 ResetPolicySettings(); |
| 209 EXPECT_EQ(std::wstring(kTestApplicationLocale), | 212 EXPECT_EQ(std::wstring(kTestApplicationLocale), |
| 210 PolicySettings::GetInstance()->ApplicationLocale()); | 213 PolicySettings::GetInstance()->ApplicationLocale()); |
| 211 | 214 |
| 212 DeleteChromeFramePolicyEntries(root[i]); | 215 DeleteChromeFramePolicyEntries(root[i]); |
| 213 } | 216 } |
| 214 } | 217 } |
| OLD | NEW |