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 |