summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-11 21:16:25 +0000
committeravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-11 21:16:25 +0000
commit0b38a1ea9eb68a5b695b22b288e134557f433db1 (patch)
treeb742708ae7a9231529d113b076f52c4d82af2b13
parent57b3e83ee8556aaa23a3c31765789268a9a94cea (diff)
downloadchromium_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
-rw-r--r--chrome/browser/policy/configuration_policy_provider_mac.cc25
-rw-r--r--chrome/browser/policy/configuration_policy_provider_mac_unittest.cc30
-rw-r--r--chrome/browser/policy/configuration_policy_provider_win_unittest.cc8
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));