| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <memory> | 5 #include <memory> |
| 6 #include <string> | 6 #include <string> |
| 7 | 7 |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #include "base/memory/ptr_util.h" |
| 9 #include "base/values.h" | 10 #include "base/values.h" |
| 10 #include "chrome/browser/chromeos/arc/arc_policy_bridge.h" | 11 #include "chrome/browser/chromeos/arc/arc_policy_bridge.h" |
| 11 #include "components/arc/test/fake_arc_bridge_service.h" | 12 #include "components/arc/test/fake_arc_bridge_service.h" |
| 12 #include "components/policy/core/common/mock_policy_service.h" | 13 #include "components/policy/core/common/mock_policy_service.h" |
| 13 #include "components/policy/core/common/policy_map.h" | 14 #include "components/policy/core/common/policy_map.h" |
| 14 #include "components/policy/core/common/policy_namespace.h" | 15 #include "components/policy/core/common/policy_namespace.h" |
| 15 #include "components/policy/core/common/policy_types.h" | 16 #include "components/policy/core/common/policy_types.h" |
| 16 #include "mojo/public/cpp/bindings/string.h" | 17 #include "mojo/public/cpp/bindings/string.h" |
| 17 #include "policy/policy_constants.h" | 18 #include "policy/policy_constants.h" |
| 18 #include "testing/gmock/include/gmock/gmock.h" | 19 #include "testing/gmock/include/gmock/gmock.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 | 79 |
| 79 TEST_F(ArcPolicyBridgeTest, EmptyPolicyTest) { | 80 TEST_F(ArcPolicyBridgeTest, EmptyPolicyTest) { |
| 80 // No policy is set, result should be empty. | 81 // No policy is set, result should be empty. |
| 81 policy_bridge()->GetPolicies(PolicyStringCallback("{}")); | 82 policy_bridge()->GetPolicies(PolicyStringCallback("{}")); |
| 82 } | 83 } |
| 83 | 84 |
| 84 TEST_F(ArcPolicyBridgeTest, ArcPolicyTest) { | 85 TEST_F(ArcPolicyBridgeTest, ArcPolicyTest) { |
| 85 policy_map().Set( | 86 policy_map().Set( |
| 86 policy::key::kArcPolicy, policy::POLICY_LEVEL_MANDATORY, | 87 policy::key::kArcPolicy, policy::POLICY_LEVEL_MANDATORY, |
| 87 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 88 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 88 new base::StringValue( | 89 base::WrapUnique(new base::StringValue( |
| 89 "{\"applications\":" | 90 "{\"applications\":" |
| 90 "[{\"packageName\":\"com.google.android.apps.youtube.kids\"," | 91 "[{\"packageName\":\"com.google.android.apps.youtube.kids\"," |
| 91 "\"installType\":\"REQUIRED\"," | 92 "\"installType\":\"REQUIRED\"," |
| 92 "\"lockTaskAllowed\":false," | 93 "\"lockTaskAllowed\":false," |
| 93 "\"permissionGrants\":[]" | 94 "\"permissionGrants\":[]" |
| 94 "}]," | 95 "}]," |
| 95 "\"defaultPermissionPolicy\":\"GRANT\"" | 96 "\"defaultPermissionPolicy\":\"GRANT\"" |
| 96 "}"), | 97 "}")), |
| 97 nullptr); | 98 nullptr); |
| 98 policy_bridge()->GetPolicies(PolicyStringCallback( | 99 policy_bridge()->GetPolicies(PolicyStringCallback( |
| 99 "{\"applications\":" | 100 "{\"applications\":" |
| 100 "[{\"installType\":\"REQUIRED\"," | 101 "[{\"installType\":\"REQUIRED\"," |
| 101 "\"lockTaskAllowed\":false," | 102 "\"lockTaskAllowed\":false," |
| 102 "\"packageName\":\"com.google.android.apps.youtube.kids\"," | 103 "\"packageName\":\"com.google.android.apps.youtube.kids\"," |
| 103 "\"permissionGrants\":[]" | 104 "\"permissionGrants\":[]" |
| 104 "}]," | 105 "}]," |
| 105 "\"defaultPermissionPolicy\":\"GRANT\"" | 106 "\"defaultPermissionPolicy\":\"GRANT\"" |
| 106 "}")); | 107 "}")); |
| 107 } | 108 } |
| 108 | 109 |
| 109 TEST_F(ArcPolicyBridgeTest, HompageLocationTest) { | 110 TEST_F(ArcPolicyBridgeTest, HompageLocationTest) { |
| 110 // This policy will not be passed on, result should be empty. | 111 // This policy will not be passed on, result should be empty. |
| 111 policy_map().Set(policy::key::kHomepageLocation, | 112 policy_map().Set( |
| 112 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 113 policy::key::kHomepageLocation, policy::POLICY_LEVEL_MANDATORY, |
| 113 policy::POLICY_SOURCE_CLOUD, | 114 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 114 new base::StringValue("http://chromium.org"), | 115 base::WrapUnique(new base::StringValue("http://chromium.org")), nullptr); |
| 115 nullptr); | |
| 116 policy_bridge()->GetPolicies(PolicyStringCallback("{}")); | 116 policy_bridge()->GetPolicies(PolicyStringCallback("{}")); |
| 117 } | 117 } |
| 118 | 118 |
| 119 TEST_F(ArcPolicyBridgeTest, DisableScreenshotsTest) { | 119 TEST_F(ArcPolicyBridgeTest, DisableScreenshotsTest) { |
| 120 policy_map().Set(policy::key::kDisableScreenshots, | 120 policy_map().Set(policy::key::kDisableScreenshots, |
| 121 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 121 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 122 policy::POLICY_SOURCE_CLOUD, | 122 policy::POLICY_SOURCE_CLOUD, |
| 123 new base::FundamentalValue(true), nullptr); | 123 base::WrapUnique(new base::FundamentalValue(true)), nullptr); |
| 124 policy_bridge()->GetPolicies( | 124 policy_bridge()->GetPolicies( |
| 125 PolicyStringCallback("{\"screenCaptureDisabled\":true}")); | 125 PolicyStringCallback("{\"screenCaptureDisabled\":true}")); |
| 126 } | 126 } |
| 127 | 127 |
| 128 TEST_F(ArcPolicyBridgeTest, VideoCaptureAllowedTest) { | 128 TEST_F(ArcPolicyBridgeTest, VideoCaptureAllowedTest) { |
| 129 policy_map().Set(policy::key::kVideoCaptureAllowed, | 129 policy_map().Set( |
| 130 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 130 policy::key::kVideoCaptureAllowed, policy::POLICY_LEVEL_MANDATORY, |
| 131 policy::POLICY_SOURCE_CLOUD, | 131 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 132 new base::FundamentalValue(false), nullptr); | 132 base::WrapUnique(new base::FundamentalValue(false)), nullptr); |
| 133 policy_bridge()->GetPolicies( | 133 policy_bridge()->GetPolicies( |
| 134 PolicyStringCallback("{\"cameraDisabled\":true}")); | 134 PolicyStringCallback("{\"cameraDisabled\":true}")); |
| 135 } | 135 } |
| 136 | 136 |
| 137 TEST_F(ArcPolicyBridgeTest, AudioCaptureAllowedTest) { | 137 TEST_F(ArcPolicyBridgeTest, AudioCaptureAllowedTest) { |
| 138 policy_map().Set(policy::key::kAudioCaptureAllowed, | 138 policy_map().Set( |
| 139 policy::POLICY_LEVEL_MANDATORY, | 139 policy::key::kAudioCaptureAllowed, policy::POLICY_LEVEL_MANDATORY, |
| 140 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 140 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 141 new base::FundamentalValue(false), nullptr); | 141 base::WrapUnique(new base::FundamentalValue(false)), nullptr); |
| 142 policy_bridge()->GetPolicies( | 142 policy_bridge()->GetPolicies( |
| 143 PolicyStringCallback("{\"unmuteMicrophoneDisabled\":true}")); | 143 PolicyStringCallback("{\"unmuteMicrophoneDisabled\":true}")); |
| 144 } | 144 } |
| 145 | 145 |
| 146 TEST_F(ArcPolicyBridgeTest, DefaultGeolocationSettingTest) { | 146 TEST_F(ArcPolicyBridgeTest, DefaultGeolocationSettingTest) { |
| 147 policy_map().Set(policy::key::kDefaultGeolocationSetting, | 147 policy_map().Set(policy::key::kDefaultGeolocationSetting, |
| 148 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 148 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 149 policy::POLICY_SOURCE_CLOUD, new base::FundamentalValue(1), | 149 policy::POLICY_SOURCE_CLOUD, |
| 150 nullptr); | 150 base::WrapUnique(new base::FundamentalValue(1)), nullptr); |
| 151 policy_bridge()->GetPolicies( | 151 policy_bridge()->GetPolicies( |
| 152 PolicyStringCallback("{\"shareLocationDisabled\":false}")); | 152 PolicyStringCallback("{\"shareLocationDisabled\":false}")); |
| 153 policy_map().Set(policy::key::kDefaultGeolocationSetting, | 153 policy_map().Set(policy::key::kDefaultGeolocationSetting, |
| 154 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 154 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 155 policy::POLICY_SOURCE_CLOUD, new base::FundamentalValue(2), | 155 policy::POLICY_SOURCE_CLOUD, |
| 156 nullptr); | 156 base::WrapUnique(new base::FundamentalValue(2)), nullptr); |
| 157 policy_bridge()->GetPolicies( | 157 policy_bridge()->GetPolicies( |
| 158 PolicyStringCallback("{\"shareLocationDisabled\":true}")); | 158 PolicyStringCallback("{\"shareLocationDisabled\":true}")); |
| 159 policy_map().Set(policy::key::kDefaultGeolocationSetting, | 159 policy_map().Set(policy::key::kDefaultGeolocationSetting, |
| 160 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 160 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 161 policy::POLICY_SOURCE_CLOUD, new base::FundamentalValue(3), | 161 policy::POLICY_SOURCE_CLOUD, |
| 162 nullptr); | 162 base::WrapUnique(new base::FundamentalValue(3)), nullptr); |
| 163 policy_bridge()->GetPolicies( | 163 policy_bridge()->GetPolicies( |
| 164 PolicyStringCallback("{\"shareLocationDisabled\":false}")); | 164 PolicyStringCallback("{\"shareLocationDisabled\":false}")); |
| 165 } | 165 } |
| 166 | 166 |
| 167 TEST_F(ArcPolicyBridgeTest, ExternalStorageDisabledTest) { | 167 TEST_F(ArcPolicyBridgeTest, ExternalStorageDisabledTest) { |
| 168 policy_map().Set(policy::key::kExternalStorageDisabled, | 168 policy_map().Set(policy::key::kExternalStorageDisabled, |
| 169 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 169 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 170 policy::POLICY_SOURCE_CLOUD, | 170 policy::POLICY_SOURCE_CLOUD, |
| 171 new base::FundamentalValue(true), nullptr); | 171 base::WrapUnique(new base::FundamentalValue(true)), nullptr); |
| 172 policy_bridge()->GetPolicies( | 172 policy_bridge()->GetPolicies( |
| 173 PolicyStringCallback("{\"usbFileTransferDisabled\":true}")); | 173 PolicyStringCallback("{\"usbFileTransferDisabled\":true}")); |
| 174 } | 174 } |
| 175 | 175 |
| 176 TEST_F(ArcPolicyBridgeTest, URLBlacklistTest) { | 176 TEST_F(ArcPolicyBridgeTest, URLBlacklistTest) { |
| 177 base::ListValue blacklist; | 177 base::ListValue blacklist; |
| 178 blacklist.Append(new base::StringValue("www.blacklist1.com")); | 178 blacklist.Append(new base::StringValue("www.blacklist1.com")); |
| 179 blacklist.Append(new base::StringValue("www.blacklist2.com")); | 179 blacklist.Append(new base::StringValue("www.blacklist2.com")); |
| 180 policy_map().Set(policy::key::kURLBlacklist, policy::POLICY_LEVEL_MANDATORY, | 180 policy_map().Set(policy::key::kURLBlacklist, policy::POLICY_LEVEL_MANDATORY, |
| 181 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 181 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 182 blacklist.DeepCopy(), nullptr); | 182 blacklist.CreateDeepCopy(), nullptr); |
| 183 policy_bridge()->GetPolicies( | 183 policy_bridge()->GetPolicies( |
| 184 PolicyStringCallback("{\"globalAppRestrictions\":" | 184 PolicyStringCallback("{\"globalAppRestrictions\":" |
| 185 "{\"com.android.browser:URLBlacklist\":" | 185 "{\"com.android.browser:URLBlacklist\":" |
| 186 "[\"www.blacklist1.com\"," | 186 "[\"www.blacklist1.com\"," |
| 187 "\"www.blacklist2.com\"" | 187 "\"www.blacklist2.com\"" |
| 188 "]}}")); | 188 "]}}")); |
| 189 } | 189 } |
| 190 | 190 |
| 191 TEST_F(ArcPolicyBridgeTest, URLWhitelistTest) { | 191 TEST_F(ArcPolicyBridgeTest, URLWhitelistTest) { |
| 192 base::ListValue whitelist; | 192 base::ListValue whitelist; |
| 193 whitelist.Append(new base::StringValue("www.whitelist1.com")); | 193 whitelist.Append(new base::StringValue("www.whitelist1.com")); |
| 194 whitelist.Append(new base::StringValue("www.whitelist2.com")); | 194 whitelist.Append(new base::StringValue("www.whitelist2.com")); |
| 195 policy_map().Set(policy::key::kURLWhitelist, policy::POLICY_LEVEL_MANDATORY, | 195 policy_map().Set(policy::key::kURLWhitelist, policy::POLICY_LEVEL_MANDATORY, |
| 196 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 196 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 197 whitelist.DeepCopy(), nullptr); | 197 whitelist.CreateDeepCopy(), nullptr); |
| 198 policy_bridge()->GetPolicies( | 198 policy_bridge()->GetPolicies( |
| 199 PolicyStringCallback("{\"globalAppRestrictions\":" | 199 PolicyStringCallback("{\"globalAppRestrictions\":" |
| 200 "{\"com.android.browser:URLWhitelist\":" | 200 "{\"com.android.browser:URLWhitelist\":" |
| 201 "[\"www.whitelist1.com\"," | 201 "[\"www.whitelist1.com\"," |
| 202 "\"www.whitelist2.com\"" | 202 "\"www.whitelist2.com\"" |
| 203 "]}}")); | 203 "]}}")); |
| 204 } | 204 } |
| 205 | 205 |
| 206 TEST_F(ArcPolicyBridgeTest, MultiplePoliciesTest) { | 206 TEST_F(ArcPolicyBridgeTest, MultiplePoliciesTest) { |
| 207 policy_map().Set( | 207 policy_map().Set( |
| 208 policy::key::kArcPolicy, policy::POLICY_LEVEL_MANDATORY, | 208 policy::key::kArcPolicy, policy::POLICY_LEVEL_MANDATORY, |
| 209 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 209 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 210 new base::StringValue("{\"applications\":" | 210 base::WrapUnique(new base::StringValue( |
| 211 "[{\"packageName\":\"com.google.android.apps.youtube.kids\"," | 211 "{\"applications\":" |
| 212 "\"installType\":\"REQUIRED\"," | 212 "[{\"packageName\":\"com.google.android.apps.youtube.kids\"," |
| 213 "\"lockTaskAllowed\":false," | 213 "\"installType\":\"REQUIRED\"," |
| 214 "\"permissionGrants\":[]" | 214 "\"lockTaskAllowed\":false," |
| 215 "}]," | 215 "\"permissionGrants\":[]" |
| 216 "\"defaultPermissionPolicy\":\"GRANT\"}"), | 216 "}]," |
| 217 "\"defaultPermissionPolicy\":\"GRANT\"}")), |
| 217 nullptr); | 218 nullptr); |
| 218 policy_map().Set(policy::key::kHomepageLocation, | 219 policy_map().Set( |
| 219 policy::POLICY_LEVEL_MANDATORY, | 220 policy::key::kHomepageLocation, policy::POLICY_LEVEL_MANDATORY, |
| 220 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 221 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 221 new base::StringValue("http://chromium.org"), nullptr); | 222 base::WrapUnique(new base::StringValue("http://chromium.org")), nullptr); |
| 222 policy_map().Set(policy::key::kVideoCaptureAllowed, | 223 policy_map().Set( |
| 223 policy::POLICY_LEVEL_MANDATORY, | 224 policy::key::kVideoCaptureAllowed, policy::POLICY_LEVEL_MANDATORY, |
| 224 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 225 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 225 new base::FundamentalValue(false), nullptr); | 226 base::WrapUnique(new base::FundamentalValue(false)), nullptr); |
| 226 policy_bridge()->GetPolicies(PolicyStringCallback( | 227 policy_bridge()->GetPolicies(PolicyStringCallback( |
| 227 "{\"applications\":" | 228 "{\"applications\":" |
| 228 "[{\"installType\":\"REQUIRED\"," | 229 "[{\"installType\":\"REQUIRED\"," |
| 229 "\"lockTaskAllowed\":false," | 230 "\"lockTaskAllowed\":false," |
| 230 "\"packageName\":\"com.google.android.apps.youtube.kids\"," | 231 "\"packageName\":\"com.google.android.apps.youtube.kids\"," |
| 231 "\"permissionGrants\":[]" | 232 "\"permissionGrants\":[]" |
| 232 "}]," | 233 "}]," |
| 233 "\"cameraDisabled\":true," | 234 "\"cameraDisabled\":true," |
| 234 "\"defaultPermissionPolicy\":\"GRANT\"" | 235 "\"defaultPermissionPolicy\":\"GRANT\"" |
| 235 "}")); | 236 "}")); |
| 236 } | 237 } |
| 237 | 238 |
| 238 } // namespace arc | 239 } // namespace arc |
| OLD | NEW |