diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-11 21:16:25 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-11 21:16:25 +0000 |
commit | 0b38a1ea9eb68a5b695b22b288e134557f433db1 (patch) | |
tree | b742708ae7a9231529d113b076f52c4d82af2b13 | |
parent | 57b3e83ee8556aaa23a3c31765789268a9a94cea (diff) | |
download | chromium_src-0b38a1ea9eb68a5b695b22b288e134557f433db1.zip chromium_src-0b38a1ea9eb68a5b695b22b288e134557f433db1.tar.gz chromium_src-0b38a1ea9eb68a5b695b22b288e134557f433db1.tar.bz2 |
Add support for Value::TYPE_LIST policies for the Mac.
BUG=51688
TEST=unit tested
Review URL: http://codereview.chromium.org/3124013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55785 0039d316-1c4b-4281-b951-d872f2087c98
3 files changed, 59 insertions, 4 deletions
diff --git a/chrome/browser/policy/configuration_policy_provider_mac.cc b/chrome/browser/policy/configuration_policy_provider_mac.cc index 77e3a4c..2f1d897 100644 --- a/chrome/browser/policy/configuration_policy_provider_mac.cc +++ b/chrome/browser/policy/configuration_policy_provider_mac.cc @@ -67,6 +67,31 @@ bool ConfigurationPolicyProviderMac::Provide(ConfigurationPolicyStore* store) { success = false; } break; + case Value::TYPE_LIST: + if (CFGetTypeID(value) == CFArrayGetTypeID()) { + scoped_ptr<ListValue> list_value(new ListValue); + bool valid_array = true; + CFArrayRef array_value = (CFArrayRef)value.get(); + for (CFIndex i = 0; i < CFArrayGetCount(array_value); ++i) { + // For now we assume that all values are strings. + CFStringRef array_string = + (CFStringRef)CFArrayGetValueAtIndex(array_value, i); + if (CFGetTypeID(array_string) == CFStringGetTypeID()) { + std::string array_string_value = + base::SysCFStringRefToUTF8(array_string); + list_value->Append(Value::CreateStringValue(array_string_value)); + } else { + valid_array = false; + } + } + if (valid_array) + store->Apply(current->policy_type, list_value.release()); + else + success = false; + } else { + success = false; + } + break; default: NOTREACHED(); return false; diff --git a/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc b/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc index 23f01b7..f521d7f 100644 --- a/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc +++ b/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc @@ -117,3 +117,33 @@ TEST(ConfigurationPolicyProviderMacTest, TestHomepageIsNewTabPagePolicy) { EXPECT_EQ(true, value); } +TEST(ConfigurationPolicyProviderMacTest, TestExtensionInstallBlacklist) { + scoped_cftyperef<CFMutableArrayRef> blacklist( + CFArrayCreateMutable(kCFAllocatorDefault, + 2, + &kCFTypeArrayCallBacks)); + CFArrayAppendValue(blacklist.get(), CFSTR("abc")); + CFArrayAppendValue(blacklist.get(), CFSTR("def")); + + MockConfigurationPolicyStore store; + TestConfigurationPolicyProviderMac provider; + provider.AddTestItem + (ConfigurationPolicyStore::kPolicyExtensionInstallDenyList, + blacklist.get(), + true); + provider.Provide(&store); + + const MockConfigurationPolicyStore::PolicyMap& map(store.policy_map()); + MockConfigurationPolicyStore::PolicyMap::const_iterator i = + map.find(ConfigurationPolicyStore::kPolicyExtensionInstallDenyList); + ASSERT_TRUE(i != map.end()); + ASSERT_TRUE(i->second->IsType(Value::TYPE_LIST)); + ListValue* value = reinterpret_cast<ListValue*>(i->second); + std::string str_value; + ASSERT_EQ(2U, value->GetSize()); + EXPECT_TRUE(value->GetString(0, &str_value)); + EXPECT_STREQ("abc", str_value.c_str()); + EXPECT_TRUE(value->GetString(1, &str_value)); + EXPECT_STREQ("def", str_value.c_str()); +} + diff --git a/chrome/browser/policy/configuration_policy_provider_win_unittest.cc b/chrome/browser/policy/configuration_policy_provider_win_unittest.cc index 1614a59..ed499aa 100644 --- a/chrome/browser/policy/configuration_policy_provider_win_unittest.cc +++ b/chrome/browser/policy/configuration_policy_provider_win_unittest.cc @@ -321,7 +321,7 @@ TEST_F(ConfigurationPolicyProviderWinTest, TestExtensionInstallWhitelistHKCU) { ASSERT_TRUE(i->second->IsType(Value::TYPE_LIST)); ListValue* value = reinterpret_cast<ListValue*>(i->second); std::string str_value; - EXPECT_EQ(2, value->GetSize()); + ASSERT_EQ(2U, value->GetSize()); EXPECT_TRUE(value->GetString(0, &str_value)); EXPECT_STREQ("abc", str_value.c_str()); EXPECT_TRUE(value->GetString(1, &str_value)); @@ -342,7 +342,7 @@ TEST_F(ConfigurationPolicyProviderWinTest, TestExtensionInstallWhitelistHKLM) { ASSERT_TRUE(i->second->IsType(Value::TYPE_LIST)); ListValue* value = reinterpret_cast<ListValue*>(i->second); std::string str_value; - EXPECT_EQ(2, value->GetSize()); + ASSERT_EQ(2U, value->GetSize()); EXPECT_TRUE(value->GetString(0, &str_value)); EXPECT_STREQ("abc", str_value.c_str()); EXPECT_TRUE(value->GetString(1, &str_value)); @@ -364,7 +364,7 @@ TEST_F(ConfigurationPolicyProviderWinTest, ASSERT_TRUE(i->second->IsType(Value::TYPE_LIST)); ListValue* value = reinterpret_cast<ListValue*>(i->second); std::string str_value; - EXPECT_EQ(1, value->GetSize()); + ASSERT_EQ(1U, value->GetSize()); EXPECT_TRUE(value->GetString(0, &str_value)); EXPECT_STREQ("def", str_value.c_str()); } @@ -383,7 +383,7 @@ TEST_F(ConfigurationPolicyProviderWinTest, TestExtensionInstallBlacklistHKLM) { ASSERT_TRUE(i->second->IsType(Value::TYPE_LIST)); ListValue* value = reinterpret_cast<ListValue*>(i->second); std::string str_value; - EXPECT_EQ(2, value->GetSize()); + ASSERT_EQ(2U, value->GetSize()); EXPECT_TRUE(value->GetString(0, &str_value)); EXPECT_STREQ("abc", str_value.c_str()); EXPECT_TRUE(value->GetString(1, &str_value)); |