15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include <cstring> 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <string> 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/values.h" 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "build/build_config.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_details.h" 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/schema.h" 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "policy/policy_constants.h" 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// This unittest tests the code generated by 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// chrome/tools/build/generate_policy_source.py. 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace policy { 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace { 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_CHROMEOS) 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Checks if two schemas are the same or not. Note that this function doesn't 25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// consider restrictions on integers and strings nor pattern properties. 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochbool IsSameSchema(Schema a, Schema b) { 27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (a.valid() != b.valid()) 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return false; 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (!a.valid()) 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return true; 31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (a.type() != b.type()) 32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return false; 33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (a.type() == base::Value::TYPE_LIST) 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return IsSameSchema(a.GetItems(), b.GetItems()); 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (a.type() != base::Value::TYPE_DICTIONARY) 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return true; 37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Schema::Iterator a_it = a.GetPropertiesIterator(); 38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Schema::Iterator b_it = b.GetPropertiesIterator(); 39c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch while (!a_it.IsAtEnd()) { 40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (b_it.IsAtEnd()) 41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return false; 42c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (strcmp(a_it.key(), b_it.key()) != 0) 43c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return false; 44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (!IsSameSchema(a_it.schema(), b_it.schema())) 45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return false; 46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch a_it.Advance(); 47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch b_it.Advance(); 48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch } 49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (!b_it.IsAtEnd()) 50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return false; 51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return IsSameSchema(a.GetAdditionalProperties(), b.GetAdditionalProperties()); 52c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 54c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 55c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace 56c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST(GeneratePolicySource, ChromeSchemaData) { 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) Schema schema = Schema::Wrap(GetChromeSchemaData()); 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(schema.valid()); 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(base::Value::TYPE_DICTIONARY, schema.type()); 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) Schema subschema = schema.GetAdditionalProperties(); 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(subschema.valid()); 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) subschema = schema.GetProperty("no such policy exists"); 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(subschema.valid()); 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) subschema = schema.GetProperty(key::kSearchSuggestEnabled); 69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(subschema.valid()); 70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(base::Value::TYPE_BOOLEAN, subschema.type()); 71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) subschema = schema.GetProperty(key::kDefaultCookiesSetting); 73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(subschema.valid()); 74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(base::Value::TYPE_INTEGER, subschema.type()); 75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) subschema = schema.GetProperty(key::kProxyMode); 77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(subschema.valid()); 78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(base::Value::TYPE_STRING, subschema.type()); 79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) subschema = schema.GetProperty(key::kURLBlacklist); 81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(subschema.valid()); 82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(base::Value::TYPE_LIST, subschema.type()); 83f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(subschema.GetItems().valid()); 84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(base::Value::TYPE_STRING, subschema.GetItems().type()); 85f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 86f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) subschema = schema.GetProperty(key::kProxySettings); 87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(subschema.valid()); 88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(base::Value::TYPE_DICTIONARY, subschema.type()); 89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(subschema.GetAdditionalProperties().valid()); 90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(subschema.GetProperty("no such proxy key exists").valid()); 91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(subschema.GetProperty(key::kProxyMode).valid()); 92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(subschema.GetProperty(key::kProxyServer).valid()); 93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(subschema.GetProperty(key::kProxyServerMode).valid()); 94f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(subschema.GetProperty(key::kProxyPacUrl).valid()); 95f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(subschema.GetProperty(key::kProxyBypassList).valid()); 96f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify that all the Chrome policies are there. 98f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) for (Schema::Iterator it = schema.GetPropertiesIterator(); 99f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) !it.IsAtEnd(); it.Advance()) { 100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(it.key()); 101f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(std::string(it.key()).empty()); 102f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(GetChromePolicyDetails(it.key())); 103f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 104f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 105f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The properties are iterated in order. 106f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const char* kExpectedProperties[] = { 107f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) key::kProxyBypassList, 108f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) key::kProxyMode, 109f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) key::kProxyPacUrl, 110f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) key::kProxyServer, 111f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) key::kProxyServerMode, 112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) NULL, 113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) }; 114f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const char** next = kExpectedProperties; 115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) for (Schema::Iterator it(subschema.GetPropertiesIterator()); 116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) !it.IsAtEnd(); it.Advance(), ++next) { 117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(*next != NULL); 118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_STREQ(*next, it.key()); 119f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(it.schema().valid()); 120f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(base::Value::TYPE_STRING, it.schema().type()); 121f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 122f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(*next == NULL); 123c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 124c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_CHROMEOS) 125c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch subschema = schema.GetKnownProperty(key::kPowerManagementIdleSettings); 126c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(subschema.valid()); 127c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 128c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_TRUE(IsSameSchema(subschema.GetKnownProperty("AC"), 129c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch subschema.GetKnownProperty("Battery"))); 130c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 131c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch subschema = schema.GetKnownProperty(key::kDeviceLoginScreenPowerManagement); 132c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(subschema.valid()); 133c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 134c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_TRUE(IsSameSchema(subschema.GetKnownProperty("AC"), 135c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch subschema.GetKnownProperty("Battery"))); 136c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif 137f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 138f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 139f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST(GeneratePolicySource, PolicyDetails) { 140f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(GetChromePolicyDetails("")); 141f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(GetChromePolicyDetails("no such policy")); 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(GetChromePolicyDetails("SearchSuggestEnable")); 1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(GetChromePolicyDetails("searchSuggestEnabled")); 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(GetChromePolicyDetails("SSearchSuggestEnabled")); 145f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 146f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const PolicyDetails* details = 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetChromePolicyDetails(key::kSearchSuggestEnabled); 148f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(details); 149f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(details->is_deprecated); 150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(details->is_device_policy); 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(6, details->id); 152f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(0u, details->max_external_data_size); 153f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if !defined(OS_IOS) 155f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) details = GetChromePolicyDetails(key::kJavascriptEnabled); 156f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(details); 157f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(details->is_deprecated); 158f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(details->is_device_policy); 159f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(9, details->id); 160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(0u, details->max_external_data_size); 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#if defined(OS_CHROMEOS) 164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) details = GetChromePolicyDetails(key::kDevicePolicyRefreshRate); 165f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ASSERT_TRUE(details); 166f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(details->is_deprecated); 167f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(details->is_device_policy); 168f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(90, details->id); 169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(0u, details->max_external_data_size); 170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif 171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // TODO(bartfab): add a test that verifies a max_external_data_size larger 173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // than 0, once a type 'external' policy is added. 174f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_CHROMEOS) 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST(GeneratePolicySource, SetEnterpriseDefaults) { 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci PolicyMap policy_map; 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // If policy not configured yet, set the enterprise default. 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetEnterpriseUsersDefaults(&policy_map); 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::Value* multiprof_behavior = 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy_map.GetValue(key::kChromeOsMultiProfileUserBehavior); 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::StringValue expected("primary-only"); 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(expected.Equals(multiprof_behavior)); 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // If policy already configured, it's not changed to enterprise defaults. 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy_map.Set(key::kChromeOsMultiProfileUserBehavior, 1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci POLICY_LEVEL_MANDATORY, 1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci POLICY_SCOPE_USER, 1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci new base::StringValue("test_value"), 1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NULL); 1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetEnterpriseUsersDefaults(&policy_map); 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci multiprof_behavior = 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy_map.GetValue(key::kChromeOsMultiProfileUserBehavior); 1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci expected = base::StringValue("test_value"); 1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(expected.Equals(multiprof_behavior)); 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace policy 203