OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/path_service.h" | 5 #include "base/path_service.h" |
6 #include "base/prefs/pref_service.h" | 6 #include "base/prefs/pref_service.h" |
7 #include "base/prefs/scoped_user_pref_update.h" | 7 #include "base/prefs/scoped_user_pref_update.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "chrome/browser/chrome_notification_types.h" | 9 #include "chrome/browser/chrome_notification_types.h" |
10 #include "chrome/browser/extensions/extension_service.h" | 10 #include "chrome/browser/extensions/extension_service.h" |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 scoped_ptr<base::DictionaryValue> source(new base::DictionaryValue()); | 194 scoped_ptr<base::DictionaryValue> source(new base::DictionaryValue()); |
195 source->SetString(extensions::manifest_keys::kName, "Theme"); | 195 source->SetString(extensions::manifest_keys::kName, "Theme"); |
196 source->Set(extensions::manifest_keys::kTheme, new base::DictionaryValue()); | 196 source->Set(extensions::manifest_keys::kTheme, new base::DictionaryValue()); |
197 source->SetString(extensions::manifest_keys::kVersion, "1.0"); | 197 source->SetString(extensions::manifest_keys::kVersion, "1.0"); |
198 extensions::ExtensionBuilder builder; | 198 extensions::ExtensionBuilder builder; |
199 scoped_refptr<extensions::Extension> extension = | 199 scoped_refptr<extensions::Extension> extension = |
200 builder.SetManifest(source.Pass()).Build(); | 200 builder.SetManifest(source.Pass()).Build(); |
201 return extension; | 201 return extension; |
202 } | 202 } |
203 | 203 |
204 scoped_refptr<extensions::Extension> MakeExtension() { | 204 scoped_refptr<extensions::Extension> MakeExtension(bool by_custodian) { |
205 scoped_ptr<base::DictionaryValue> manifest = extensions::DictionaryBuilder() | 205 scoped_ptr<base::DictionaryValue> manifest = extensions::DictionaryBuilder() |
206 .Set(extensions::manifest_keys::kName, "Extension") | 206 .Set(extensions::manifest_keys::kName, "Extension") |
207 .Set(extensions::manifest_keys::kVersion, "1.0") | 207 .Set(extensions::manifest_keys::kVersion, "1.0") |
208 .Build(); | 208 .Build(); |
| 209 int creation_flags = extensions::Extension::NO_FLAGS; |
| 210 if (by_custodian) |
| 211 creation_flags |= extensions::Extension::WAS_INSTALLED_BY_CUSTODIAN; |
209 extensions::ExtensionBuilder builder; | 212 extensions::ExtensionBuilder builder; |
210 scoped_refptr<extensions::Extension> extension = | 213 scoped_refptr<extensions::Extension> extension = |
211 builder.SetManifest(manifest.Pass()).Build(); | 214 builder.SetManifest(manifest.Pass()).AddFlags(creation_flags).Build(); |
212 return extension; | 215 return extension; |
213 } | 216 } |
214 | 217 |
215 bool is_supervised_; | 218 bool is_supervised_; |
216 extensions::ScopedCurrentChannel channel_; | 219 extensions::ScopedCurrentChannel channel_; |
217 }; | 220 }; |
218 | 221 |
219 class SupervisedUserServiceExtensionTestUnsupervised | 222 class SupervisedUserServiceExtensionTestUnsupervised |
220 : public SupervisedUserServiceExtensionTestBase { | 223 : public SupervisedUserServiceExtensionTestBase { |
221 public: | 224 public: |
222 SupervisedUserServiceExtensionTestUnsupervised() | 225 SupervisedUserServiceExtensionTestUnsupervised() |
223 : SupervisedUserServiceExtensionTestBase(false) {} | 226 : SupervisedUserServiceExtensionTestBase(false) {} |
224 }; | 227 }; |
225 | 228 |
226 class SupervisedUserServiceExtensionTest | 229 class SupervisedUserServiceExtensionTest |
227 : public SupervisedUserServiceExtensionTestBase { | 230 : public SupervisedUserServiceExtensionTestBase { |
228 public: | 231 public: |
229 SupervisedUserServiceExtensionTest() | 232 SupervisedUserServiceExtensionTest() |
230 : SupervisedUserServiceExtensionTestBase(true) {} | 233 : SupervisedUserServiceExtensionTestBase(true) {} |
231 }; | 234 }; |
232 | 235 |
233 TEST_F(SupervisedUserServiceExtensionTestUnsupervised, | 236 TEST_F(SupervisedUserServiceExtensionTestUnsupervised, |
234 ExtensionManagementPolicyProvider) { | 237 ExtensionManagementPolicyProvider) { |
235 SupervisedUserService* supervised_user_service = | 238 SupervisedUserService* supervised_user_service = |
236 SupervisedUserServiceFactory::GetForProfile(profile_.get()); | 239 SupervisedUserServiceFactory::GetForProfile(profile_.get()); |
237 EXPECT_FALSE(profile_->IsSupervised()); | 240 EXPECT_FALSE(profile_->IsSupervised()); |
238 | 241 |
239 scoped_refptr<extensions::Extension> extension = MakeExtension(); | 242 scoped_refptr<extensions::Extension> extension = MakeExtension(false); |
240 base::string16 error_1; | 243 base::string16 error_1; |
241 EXPECT_TRUE(supervised_user_service->UserMayLoad(extension.get(), &error_1)); | 244 EXPECT_TRUE(supervised_user_service->UserMayLoad(extension.get(), &error_1)); |
242 EXPECT_EQ(base::string16(), error_1); | 245 EXPECT_EQ(base::string16(), error_1); |
243 | 246 |
244 base::string16 error_2; | 247 base::string16 error_2; |
245 EXPECT_TRUE( | 248 EXPECT_TRUE( |
246 supervised_user_service->UserMayModifySettings(extension.get(), | 249 supervised_user_service->UserMayModifySettings(extension.get(), |
247 &error_2)); | 250 &error_2)); |
248 EXPECT_EQ(base::string16(), error_2); | 251 EXPECT_EQ(base::string16(), error_2); |
249 } | 252 } |
(...skipping 10 matching lines...) Expand all Loading... |
260 // Check that a supervised user can install a theme. | 263 // Check that a supervised user can install a theme. |
261 scoped_refptr<extensions::Extension> theme = MakeThemeExtension(); | 264 scoped_refptr<extensions::Extension> theme = MakeThemeExtension(); |
262 base::string16 error_1; | 265 base::string16 error_1; |
263 EXPECT_TRUE(supervised_user_service->UserMayLoad(theme.get(), &error_1)); | 266 EXPECT_TRUE(supervised_user_service->UserMayLoad(theme.get(), &error_1)); |
264 EXPECT_TRUE(error_1.empty()); | 267 EXPECT_TRUE(error_1.empty()); |
265 EXPECT_TRUE( | 268 EXPECT_TRUE( |
266 supervised_user_service->UserMayModifySettings(theme.get(), &error_1)); | 269 supervised_user_service->UserMayModifySettings(theme.get(), &error_1)); |
267 EXPECT_TRUE(error_1.empty()); | 270 EXPECT_TRUE(error_1.empty()); |
268 | 271 |
269 // Now check a different kind of extension. | 272 // Now check a different kind of extension. |
270 scoped_refptr<extensions::Extension> extension = MakeExtension(); | 273 scoped_refptr<extensions::Extension> extension = MakeExtension(false); |
271 EXPECT_FALSE(supervised_user_service->UserMayLoad(extension.get(), &error_1)); | 274 EXPECT_FALSE(supervised_user_service->UserMayLoad(extension.get(), &error_1)); |
272 EXPECT_FALSE(error_1.empty()); | 275 EXPECT_FALSE(error_1.empty()); |
273 | 276 |
274 base::string16 error_2; | 277 base::string16 error_2; |
275 EXPECT_FALSE( | 278 EXPECT_FALSE(supervised_user_service->UserMayModifySettings(extension.get(), |
276 supervised_user_service->UserMayModifySettings(extension.get(), | 279 &error_2)); |
277 &error_2)); | |
278 EXPECT_FALSE(error_2.empty()); | 280 EXPECT_FALSE(error_2.empty()); |
279 | 281 |
| 282 // Check that an extension that was installed by the custodian may be loaded. |
| 283 base::string16 error_3; |
| 284 scoped_refptr<extensions::Extension> extension_2 = MakeExtension(true); |
| 285 EXPECT_TRUE(supervised_user_service->UserMayLoad(extension_2.get(), |
| 286 &error_3)); |
| 287 EXPECT_TRUE(error_3.empty()); |
| 288 |
| 289 // The supervised user should still not be able to uninstall or disable the |
| 290 // extension. |
| 291 base::string16 error_4; |
| 292 EXPECT_FALSE(supervised_user_service->UserMayModifySettings(extension_2.get(), |
| 293 &error_4)); |
| 294 EXPECT_FALSE(error_4.empty()); |
| 295 |
280 #ifndef NDEBUG | 296 #ifndef NDEBUG |
281 EXPECT_FALSE(supervised_user_service->GetDebugPolicyProviderName().empty()); | 297 EXPECT_FALSE(supervised_user_service->GetDebugPolicyProviderName().empty()); |
282 #endif | 298 #endif |
283 } | 299 } |
284 | 300 |
285 TEST_F(SupervisedUserServiceExtensionTest, NoContentPacks) { | 301 TEST_F(SupervisedUserServiceExtensionTest, NoContentPacks) { |
286 SupervisedUserService* supervised_user_service = | 302 SupervisedUserService* supervised_user_service = |
287 SupervisedUserServiceFactory::GetForProfile(profile_.get()); | 303 SupervisedUserServiceFactory::GetForProfile(profile_.get()); |
288 SupervisedUserURLFilter* url_filter = | 304 SupervisedUserURLFilter* url_filter = |
289 supervised_user_service->GetURLFilterForUIThread(); | 305 supervised_user_service->GetURLFilterForUIThread(); |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 site_lists[0]->GetSites(&sites); | 414 site_lists[0]->GetSites(&sites); |
399 ASSERT_EQ(1u, sites.size()); | 415 ASSERT_EQ(1u, sites.size()); |
400 EXPECT_EQ(base::ASCIIToUTF16("Moose"), sites[0].name); | 416 EXPECT_EQ(base::ASCIIToUTF16("Moose"), sites[0].name); |
401 | 417 |
402 EXPECT_EQ(SupervisedUserURLFilter::WARN, | 418 EXPECT_EQ(SupervisedUserURLFilter::WARN, |
403 url_filter->GetFilteringBehaviorForURL(example_url)); | 419 url_filter->GetFilteringBehaviorForURL(example_url)); |
404 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 420 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
405 url_filter->GetFilteringBehaviorForURL(moose_url)); | 421 url_filter->GetFilteringBehaviorForURL(moose_url)); |
406 } | 422 } |
407 #endif // !defined(OS_ANDROID) | 423 #endif // !defined(OS_ANDROID) |
OLD | NEW |