| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/chromeos/extensions/device_local_account_management_pol
icy_provider.h" | 5 #include "chrome/browser/chromeos/extensions/device_local_account_management_pol
icy_provider.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 scoped_refptr<const extensions::Extension> CreateExternalComponentExtension() { | 51 scoped_refptr<const extensions::Extension> CreateExternalComponentExtension() { |
| 52 base::DictionaryValue values; | 52 base::DictionaryValue values; |
| 53 return CreateExtensionFromValues(std::string(), | 53 return CreateExtensionFromValues(std::string(), |
| 54 extensions::Manifest::EXTERNAL_COMPONENT, | 54 extensions::Manifest::EXTERNAL_COMPONENT, |
| 55 &values, | 55 &values, |
| 56 extensions::Extension::NO_FLAGS); | 56 extensions::Extension::NO_FLAGS); |
| 57 } | 57 } |
| 58 | 58 |
| 59 scoped_refptr<const extensions::Extension> CreateHostedApp() { | 59 scoped_refptr<const extensions::Extension> CreateHostedApp() { |
| 60 base::DictionaryValue values; | 60 base::DictionaryValue values; |
| 61 values.Set(extensions::manifest_keys::kApp, new base::DictionaryValue); | 61 values.Set(extensions::manifest_keys::kApp, |
| 62 values.Set(extensions::manifest_keys::kWebURLs, new base::ListValue); | 62 base::MakeUnique<base::DictionaryValue>()); |
| 63 values.Set(extensions::manifest_keys::kWebURLs, |
| 64 base::MakeUnique<base::ListValue>()); |
| 63 return CreateExtensionFromValues(std::string(), | 65 return CreateExtensionFromValues(std::string(), |
| 64 extensions::Manifest::INTERNAL, | 66 extensions::Manifest::INTERNAL, |
| 65 &values, | 67 &values, |
| 66 extensions::Extension::NO_FLAGS); | 68 extensions::Extension::NO_FLAGS); |
| 67 } | 69 } |
| 68 | 70 |
| 69 scoped_refptr<const extensions::Extension> CreatePlatformAppWithExtraValues( | 71 scoped_refptr<const extensions::Extension> CreatePlatformAppWithExtraValues( |
| 70 const base::DictionaryValue* extra_values, | 72 const base::DictionaryValue* extra_values, |
| 71 extensions::Manifest::Location location, | 73 extensions::Manifest::Location location, |
| 72 int flags) { | 74 int flags) { |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); | 169 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); |
| 168 EXPECT_NE(base::string16(), error); | 170 EXPECT_NE(base::string16(), error); |
| 169 error.clear(); | 171 error.clear(); |
| 170 } | 172 } |
| 171 | 173 |
| 172 // Verify that a platform app with all safe manifest entries can be installed. | 174 // Verify that a platform app with all safe manifest entries can be installed. |
| 173 { | 175 { |
| 174 base::DictionaryValue values; | 176 base::DictionaryValue values; |
| 175 values.SetString(extensions::manifest_keys::kDescription, "something"); | 177 values.SetString(extensions::manifest_keys::kDescription, "something"); |
| 176 values.SetString(extensions::manifest_keys::kShortName, "something else"); | 178 values.SetString(extensions::manifest_keys::kShortName, "something else"); |
| 177 base::ListValue* permissions = new base::ListValue(); | 179 auto permissions = base::MakeUnique<base::ListValue>(); |
| 178 permissions->AppendString("alarms"); | 180 permissions->AppendString("alarms"); |
| 179 permissions->AppendString("background"); | 181 permissions->AppendString("background"); |
| 180 values.Set(extensions::manifest_keys::kPermissions, permissions); | 182 values.Set(extensions::manifest_keys::kPermissions, std::move(permissions)); |
| 181 base::ListValue* optional_permissions = new base::ListValue(); | 183 auto optional_permissions = base::MakeUnique<base::ListValue>(); |
| 182 optional_permissions->AppendString("alarms"); | 184 optional_permissions->AppendString("alarms"); |
| 183 optional_permissions->AppendString("background"); | 185 optional_permissions->AppendString("background"); |
| 184 values.Set(extensions::manifest_keys::kOptionalPermissions, | 186 values.Set(extensions::manifest_keys::kOptionalPermissions, |
| 185 optional_permissions); | 187 std::move(optional_permissions)); |
| 186 extension = CreatePlatformAppWithExtraValues( | 188 extension = CreatePlatformAppWithExtraValues( |
| 187 &values, | 189 &values, |
| 188 extensions::Manifest::EXTERNAL_POLICY, | 190 extensions::Manifest::EXTERNAL_POLICY, |
| 189 extensions::Extension::NO_FLAGS); | 191 extensions::Extension::NO_FLAGS); |
| 190 ASSERT_TRUE(extension); | 192 ASSERT_TRUE(extension); |
| 191 | 193 |
| 192 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); | 194 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); |
| 193 EXPECT_EQ(base::string16(), error); | 195 EXPECT_EQ(base::string16(), error); |
| 194 error.clear(); | 196 error.clear(); |
| 195 } | 197 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 209 EXPECT_NE(base::string16(), error); | 211 EXPECT_NE(base::string16(), error); |
| 210 error.clear(); | 212 error.clear(); |
| 211 } | 213 } |
| 212 | 214 |
| 213 // Verify that a platform app with an unsafe manifest entry cannot be | 215 // Verify that a platform app with an unsafe manifest entry cannot be |
| 214 // installed. Since the program logic is based entirely on whitelists, there | 216 // installed. Since the program logic is based entirely on whitelists, there |
| 215 // is no significant advantage in testing all unsafe manifest entries | 217 // is no significant advantage in testing all unsafe manifest entries |
| 216 // individually. | 218 // individually. |
| 217 { | 219 { |
| 218 base::DictionaryValue values; | 220 base::DictionaryValue values; |
| 219 values.Set("chrome_settings_overrides", new base::DictionaryValue()); | 221 values.Set("chrome_settings_overrides", |
| 222 base::MakeUnique<base::DictionaryValue>()); |
| 220 extension = CreatePlatformAppWithExtraValues( | 223 extension = CreatePlatformAppWithExtraValues( |
| 221 &values, | 224 &values, |
| 222 extensions::Manifest::EXTERNAL_POLICY, | 225 extensions::Manifest::EXTERNAL_POLICY, |
| 223 extensions::Extension::NO_FLAGS); | 226 extensions::Extension::NO_FLAGS); |
| 224 ASSERT_TRUE(extension); | 227 ASSERT_TRUE(extension); |
| 225 | 228 |
| 226 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); | 229 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); |
| 227 EXPECT_NE(base::string16(), error); | 230 EXPECT_NE(base::string16(), error); |
| 228 error.clear(); | 231 error.clear(); |
| 229 } | 232 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 257 | 260 |
| 258 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); | 261 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); |
| 259 EXPECT_EQ(base::string16(), error); | 262 EXPECT_EQ(base::string16(), error); |
| 260 error.clear(); | 263 error.clear(); |
| 261 } | 264 } |
| 262 | 265 |
| 263 // Verify that a hosted app with a safe manifest entry under "app" can be | 266 // Verify that a hosted app with a safe manifest entry under "app" can be |
| 264 // installed. | 267 // installed. |
| 265 { | 268 { |
| 266 base::DictionaryValue values; | 269 base::DictionaryValue values; |
| 267 values.Set(extensions::manifest_keys::kApp, new base::DictionaryValue); | 270 values.Set(extensions::manifest_keys::kApp, |
| 268 values.Set(extensions::manifest_keys::kWebURLs, new base::ListValue); | 271 base::MakeUnique<base::DictionaryValue>()); |
| 272 values.Set(extensions::manifest_keys::kWebURLs, |
| 273 base::MakeUnique<base::ListValue>()); |
| 269 values.SetString("app.content_security_policy", "something2"); | 274 values.SetString("app.content_security_policy", "something2"); |
| 270 extension = CreateExtensionFromValues( | 275 extension = CreateExtensionFromValues( |
| 271 std::string(), | 276 std::string(), |
| 272 extensions::Manifest::EXTERNAL_POLICY, | 277 extensions::Manifest::EXTERNAL_POLICY, |
| 273 &values, | 278 &values, |
| 274 extensions::Extension::NO_FLAGS); | 279 extensions::Extension::NO_FLAGS); |
| 275 ASSERT_TRUE(extension); | 280 ASSERT_TRUE(extension); |
| 276 | 281 |
| 277 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); | 282 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); |
| 278 EXPECT_EQ(base::string16(), error); | 283 EXPECT_EQ(base::string16(), error); |
| 279 error.clear(); | 284 error.clear(); |
| 280 } | 285 } |
| 281 | 286 |
| 282 // Verify that a theme with a safe manifest entry under "app" cannot be | 287 // Verify that a theme with a safe manifest entry under "app" cannot be |
| 283 // installed. | 288 // installed. |
| 284 { | 289 { |
| 285 base::DictionaryValue values; | 290 base::DictionaryValue values; |
| 286 values.Set("theme", new base::DictionaryValue()); | 291 values.Set("theme", base::MakeUnique<base::DictionaryValue>()); |
| 287 values.SetString("app.content_security_policy", "something2"); | 292 values.SetString("app.content_security_policy", "something2"); |
| 288 extension = CreateExtensionFromValues( | 293 extension = CreateExtensionFromValues( |
| 289 std::string(), | 294 std::string(), |
| 290 extensions::Manifest::EXTERNAL_POLICY, | 295 extensions::Manifest::EXTERNAL_POLICY, |
| 291 &values, | 296 &values, |
| 292 extensions::Extension::NO_FLAGS); | 297 extensions::Extension::NO_FLAGS); |
| 293 ASSERT_TRUE(extension); | 298 ASSERT_TRUE(extension); |
| 294 | 299 |
| 295 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); | 300 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); |
| 296 EXPECT_NE(base::string16(), error); | 301 EXPECT_NE(base::string16(), error); |
| 297 error.clear(); | 302 error.clear(); |
| 298 } | 303 } |
| 299 | 304 |
| 300 // Verify that a platform app with an unknown permission entry cannot be | 305 // Verify that a platform app with an unknown permission entry cannot be |
| 301 // installed. | 306 // installed. |
| 302 { | 307 { |
| 303 base::ListValue* const permissions = new base::ListValue(); | 308 auto permissions = base::MakeUnique<base::ListValue>(); |
| 304 permissions->AppendString("not_whitelisted_permission"); | 309 permissions->AppendString("not_whitelisted_permission"); |
| 305 base::DictionaryValue values; | 310 base::DictionaryValue values; |
| 306 values.Set(extensions::manifest_keys::kPermissions, permissions); | 311 values.Set(extensions::manifest_keys::kPermissions, std::move(permissions)); |
| 307 | 312 |
| 308 extension = CreatePlatformAppWithExtraValues( | 313 extension = CreatePlatformAppWithExtraValues( |
| 309 &values, | 314 &values, |
| 310 extensions::Manifest::EXTERNAL_POLICY, | 315 extensions::Manifest::EXTERNAL_POLICY, |
| 311 extensions::Extension::NO_FLAGS); | 316 extensions::Extension::NO_FLAGS); |
| 312 ASSERT_TRUE(extension); | 317 ASSERT_TRUE(extension); |
| 313 | 318 |
| 314 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); | 319 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); |
| 315 EXPECT_NE(base::string16(), error); | 320 EXPECT_NE(base::string16(), error); |
| 316 error.clear(); | 321 error.clear(); |
| 317 } | 322 } |
| 318 | 323 |
| 319 // Verify that a platform app with an unsafe permission entry cannot be | 324 // Verify that a platform app with an unsafe permission entry cannot be |
| 320 // installed. Since the program logic is based entirely on whitelists, there | 325 // installed. Since the program logic is based entirely on whitelists, there |
| 321 // is no significant advantage in testing all unsafe permissions individually. | 326 // is no significant advantage in testing all unsafe permissions individually. |
| 322 { | 327 { |
| 323 base::ListValue* const permissions = new base::ListValue(); | 328 auto permissions = base::MakeUnique<base::ListValue>(); |
| 324 permissions->AppendString("experimental"); | 329 permissions->AppendString("experimental"); |
| 325 base::DictionaryValue values; | 330 base::DictionaryValue values; |
| 326 values.Set(extensions::manifest_keys::kPermissions, permissions); | 331 values.Set(extensions::manifest_keys::kPermissions, std::move(permissions)); |
| 327 | 332 |
| 328 extension = CreatePlatformAppWithExtraValues( | 333 extension = CreatePlatformAppWithExtraValues( |
| 329 &values, | 334 &values, |
| 330 extensions::Manifest::EXTERNAL_POLICY, | 335 extensions::Manifest::EXTERNAL_POLICY, |
| 331 extensions::Extension::NO_FLAGS); | 336 extensions::Extension::NO_FLAGS); |
| 332 ASSERT_TRUE(extension); | 337 ASSERT_TRUE(extension); |
| 333 | 338 |
| 334 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); | 339 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); |
| 335 EXPECT_NE(base::string16(), error); | 340 EXPECT_NE(base::string16(), error); |
| 336 error.clear(); | 341 error.clear(); |
| 337 } | 342 } |
| 338 | 343 |
| 339 // Verify that a platform app with an unsafe optional permission entry cannot | 344 // Verify that a platform app with an unsafe optional permission entry cannot |
| 340 // be installed. | 345 // be installed. |
| 341 { | 346 { |
| 342 base::ListValue* const permissions = new base::ListValue(); | 347 auto permissions = base::MakeUnique<base::ListValue>(); |
| 343 permissions->AppendString("experimental"); | 348 permissions->AppendString("experimental"); |
| 344 base::DictionaryValue values; | 349 base::DictionaryValue values; |
| 345 values.Set(extensions::manifest_keys::kOptionalPermissions, permissions); | 350 values.Set(extensions::manifest_keys::kOptionalPermissions, |
| 351 std::move(permissions)); |
| 346 | 352 |
| 347 extension = CreatePlatformAppWithExtraValues( | 353 extension = CreatePlatformAppWithExtraValues( |
| 348 &values, | 354 &values, |
| 349 extensions::Manifest::EXTERNAL_POLICY, | 355 extensions::Manifest::EXTERNAL_POLICY, |
| 350 extensions::Extension::NO_FLAGS); | 356 extensions::Extension::NO_FLAGS); |
| 351 ASSERT_TRUE(extension); | 357 ASSERT_TRUE(extension); |
| 352 | 358 |
| 353 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); | 359 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); |
| 354 EXPECT_NE(base::string16(), error); | 360 EXPECT_NE(base::string16(), error); |
| 355 error.clear(); | 361 error.clear(); |
| 356 } | 362 } |
| 357 | 363 |
| 358 // Verify that a platform app with an url_handlers manifest entry and which is | 364 // Verify that a platform app with an url_handlers manifest entry and which is |
| 359 // not installed through the web store cannot be installed. | 365 // not installed through the web store cannot be installed. |
| 360 { | 366 { |
| 361 base::ListValue* const matches = new base::ListValue(); | 367 auto matches = base::MakeUnique<base::ListValue>(); |
| 362 matches->AppendString("https://example.com/*"); | 368 matches->AppendString("https://example.com/*"); |
| 363 base::DictionaryValue values; | 369 base::DictionaryValue values; |
| 364 values.Set("url_handlers.example_com.matches", matches); | 370 values.Set("url_handlers.example_com.matches", std::move(matches)); |
| 365 values.SetString("url_handlers.example_com.title", "example title"); | 371 values.SetString("url_handlers.example_com.title", "example title"); |
| 366 | 372 |
| 367 extension = CreatePlatformAppWithExtraValues( | 373 extension = CreatePlatformAppWithExtraValues( |
| 368 &values, | 374 &values, |
| 369 extensions::Manifest::EXTERNAL_POLICY, | 375 extensions::Manifest::EXTERNAL_POLICY, |
| 370 extensions::Extension::NO_FLAGS); | 376 extensions::Extension::NO_FLAGS); |
| 371 ASSERT_TRUE(extension); | 377 ASSERT_TRUE(extension); |
| 372 | 378 |
| 373 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); | 379 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); |
| 374 EXPECT_NE(base::string16(), error); | 380 EXPECT_NE(base::string16(), error); |
| 375 error.clear(); | 381 error.clear(); |
| 376 } | 382 } |
| 377 | 383 |
| 378 // Verify that a platform app with a url_handlers manifest entry and which is | 384 // Verify that a platform app with a url_handlers manifest entry and which is |
| 379 // installed through the web store can be installed. | 385 // installed through the web store can be installed. |
| 380 { | 386 { |
| 381 base::ListValue* const matches = new base::ListValue(); | 387 auto matches = base::MakeUnique<base::ListValue>(); |
| 382 matches->AppendString("https://example.com/*"); | 388 matches->AppendString("https://example.com/*"); |
| 383 base::DictionaryValue values; | 389 base::DictionaryValue values; |
| 384 values.Set("url_handlers.example_com.matches", matches); | 390 values.Set("url_handlers.example_com.matches", std::move(matches)); |
| 385 values.SetString("url_handlers.example_com.title", "example title"); | 391 values.SetString("url_handlers.example_com.title", "example title"); |
| 386 | 392 |
| 387 extension = CreatePlatformAppWithExtraValues( | 393 extension = CreatePlatformAppWithExtraValues( |
| 388 &values, | 394 &values, |
| 389 extensions::Manifest::EXTERNAL_POLICY, | 395 extensions::Manifest::EXTERNAL_POLICY, |
| 390 extensions::Extension::FROM_WEBSTORE); | 396 extensions::Extension::FROM_WEBSTORE); |
| 391 ASSERT_TRUE(extension); | 397 ASSERT_TRUE(extension); |
| 392 | 398 |
| 393 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); | 399 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); |
| 394 EXPECT_EQ(base::string16(), error); | 400 EXPECT_EQ(base::string16(), error); |
| 395 error.clear(); | 401 error.clear(); |
| 396 } | 402 } |
| 397 | 403 |
| 398 // Verify that a platform app with remote URL permissions can be installed. | 404 // Verify that a platform app with remote URL permissions can be installed. |
| 399 { | 405 { |
| 400 base::ListValue* const permissions = new base::ListValue(); | 406 auto permissions = base::MakeUnique<base::ListValue>(); |
| 401 permissions->AppendString("https://example.com/"); | 407 permissions->AppendString("https://example.com/"); |
| 402 permissions->AppendString("http://example.com/"); | 408 permissions->AppendString("http://example.com/"); |
| 403 permissions->AppendString("ftp://example.com/"); | 409 permissions->AppendString("ftp://example.com/"); |
| 404 base::DictionaryValue values; | 410 base::DictionaryValue values; |
| 405 values.Set(extensions::manifest_keys::kPermissions, permissions); | 411 values.Set(extensions::manifest_keys::kPermissions, std::move(permissions)); |
| 406 | 412 |
| 407 extension = CreatePlatformAppWithExtraValues( | 413 extension = CreatePlatformAppWithExtraValues( |
| 408 &values, | 414 &values, |
| 409 extensions::Manifest::EXTERNAL_POLICY, | 415 extensions::Manifest::EXTERNAL_POLICY, |
| 410 extensions::Extension::NO_FLAGS); | 416 extensions::Extension::NO_FLAGS); |
| 411 ASSERT_TRUE(extension); | 417 ASSERT_TRUE(extension); |
| 412 | 418 |
| 413 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); | 419 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); |
| 414 EXPECT_EQ(base::string16(), error); | 420 EXPECT_EQ(base::string16(), error); |
| 415 error.clear(); | 421 error.clear(); |
| 416 } | 422 } |
| 417 | 423 |
| 418 // Verify that an extension with remote URL permissions cannot be installed. | 424 // Verify that an extension with remote URL permissions cannot be installed. |
| 419 { | 425 { |
| 420 base::ListValue* const permissions = new base::ListValue(); | 426 auto permissions = base::MakeUnique<base::ListValue>(); |
| 421 permissions->AppendString("https://example.com/"); | 427 permissions->AppendString("https://example.com/"); |
| 422 permissions->AppendString("http://example.com/"); | 428 permissions->AppendString("http://example.com/"); |
| 423 permissions->AppendString("ftp://example.com/"); | 429 permissions->AppendString("ftp://example.com/"); |
| 424 base::DictionaryValue values; | 430 base::DictionaryValue values; |
| 425 values.Set(extensions::manifest_keys::kPermissions, permissions); | 431 values.Set(extensions::manifest_keys::kPermissions, std::move(permissions)); |
| 426 | 432 |
| 427 extension = CreateExtensionFromValues( | 433 extension = CreateExtensionFromValues( |
| 428 std::string(), | 434 std::string(), |
| 429 extensions::Manifest::EXTERNAL_POLICY, | 435 extensions::Manifest::EXTERNAL_POLICY, |
| 430 &values, | 436 &values, |
| 431 extensions::Extension::NO_FLAGS); | 437 extensions::Extension::NO_FLAGS); |
| 432 ASSERT_TRUE(extension); | 438 ASSERT_TRUE(extension); |
| 433 | 439 |
| 434 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); | 440 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); |
| 435 EXPECT_NE(base::string16(), error); | 441 EXPECT_NE(base::string16(), error); |
| 436 error.clear(); | 442 error.clear(); |
| 437 } | 443 } |
| 438 | 444 |
| 439 // Verify that a platform app with a local URL permission cannot be installed. | 445 // Verify that a platform app with a local URL permission cannot be installed. |
| 440 { | 446 { |
| 441 base::ListValue* const permissions = new base::ListValue(); | 447 auto permissions = base::MakeUnique<base::ListValue>(); |
| 442 permissions->AppendString("file:///some/where"); | 448 permissions->AppendString("file:///some/where"); |
| 443 base::DictionaryValue values; | 449 base::DictionaryValue values; |
| 444 values.Set(extensions::manifest_keys::kPermissions, permissions); | 450 values.Set(extensions::manifest_keys::kPermissions, std::move(permissions)); |
| 445 | 451 |
| 446 extension = CreatePlatformAppWithExtraValues( | 452 extension = CreatePlatformAppWithExtraValues( |
| 447 &values, | 453 &values, |
| 448 extensions::Manifest::EXTERNAL_POLICY, | 454 extensions::Manifest::EXTERNAL_POLICY, |
| 449 extensions::Extension::NO_FLAGS); | 455 extensions::Extension::NO_FLAGS); |
| 450 ASSERT_TRUE(extension); | 456 ASSERT_TRUE(extension); |
| 451 | 457 |
| 452 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); | 458 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); |
| 453 EXPECT_NE(base::string16(), error); | 459 EXPECT_NE(base::string16(), error); |
| 454 error.clear(); | 460 error.clear(); |
| 455 } | 461 } |
| 456 | 462 |
| 457 // Verify that a platform app with socket dictionary permission can be | 463 // Verify that a platform app with socket dictionary permission can be |
| 458 // installed. | 464 // installed. |
| 459 { | 465 { |
| 460 auto socket = base::MakeUnique<base::DictionaryValue>(); | 466 auto socket = base::MakeUnique<base::DictionaryValue>(); |
| 461 base::ListValue* const tcp_list = new base::ListValue(); | 467 auto tcp_list = base::MakeUnique<base::ListValue>(); |
| 462 tcp_list->AppendString("tcp-connect"); | 468 tcp_list->AppendString("tcp-connect"); |
| 463 socket->Set("socket", tcp_list); | 469 socket->Set("socket", std::move(tcp_list)); |
| 464 base::ListValue* const permissions = new base::ListValue(); | 470 auto permissions = base::MakeUnique<base::ListValue>(); |
| 465 permissions->Append(std::move(socket)); | 471 permissions->Append(std::move(socket)); |
| 466 base::DictionaryValue values; | 472 base::DictionaryValue values; |
| 467 values.Set(extensions::manifest_keys::kPermissions, permissions); | 473 values.Set(extensions::manifest_keys::kPermissions, std::move(permissions)); |
| 468 | 474 |
| 469 extension = CreatePlatformAppWithExtraValues( | 475 extension = CreatePlatformAppWithExtraValues( |
| 470 &values, | 476 &values, |
| 471 extensions::Manifest::EXTERNAL_POLICY, | 477 extensions::Manifest::EXTERNAL_POLICY, |
| 472 extensions::Extension::NO_FLAGS); | 478 extensions::Extension::NO_FLAGS); |
| 473 ASSERT_TRUE(extension); | 479 ASSERT_TRUE(extension); |
| 474 | 480 |
| 475 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); | 481 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); |
| 476 EXPECT_EQ(base::string16(), error); | 482 EXPECT_EQ(base::string16(), error); |
| 477 error.clear(); | 483 error.clear(); |
| 478 } | 484 } |
| 479 | 485 |
| 480 // Verify that a platform app with unknown dictionary permission cannot be | 486 // Verify that a platform app with unknown dictionary permission cannot be |
| 481 // installed. | 487 // installed. |
| 482 { | 488 { |
| 483 auto socket = base::MakeUnique<base::DictionaryValue>(); | 489 auto socket = base::MakeUnique<base::DictionaryValue>(); |
| 484 base::ListValue* const tcp_list = new base::ListValue(); | 490 auto tcp_list = base::MakeUnique<base::ListValue>(); |
| 485 tcp_list->AppendString("unknown_value"); | 491 tcp_list->AppendString("unknown_value"); |
| 486 socket->Set("unknown_key", tcp_list); | 492 socket->Set("unknown_key", std::move(tcp_list)); |
| 487 base::ListValue* const permissions = new base::ListValue(); | 493 auto permissions = base::MakeUnique<base::ListValue>(); |
| 488 permissions->Append(std::move(socket)); | 494 permissions->Append(std::move(socket)); |
| 489 base::DictionaryValue values; | 495 base::DictionaryValue values; |
| 490 values.Set(extensions::manifest_keys::kPermissions, permissions); | 496 values.Set(extensions::manifest_keys::kPermissions, std::move(permissions)); |
| 491 | 497 |
| 492 extension = CreatePlatformAppWithExtraValues( | 498 extension = CreatePlatformAppWithExtraValues( |
| 493 &values, | 499 &values, |
| 494 extensions::Manifest::EXTERNAL_POLICY, | 500 extensions::Manifest::EXTERNAL_POLICY, |
| 495 extensions::Extension::NO_FLAGS); | 501 extensions::Extension::NO_FLAGS); |
| 496 ASSERT_TRUE(extension); | 502 ASSERT_TRUE(extension); |
| 497 | 503 |
| 498 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); | 504 EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error)); |
| 499 EXPECT_NE(base::string16(), error); | 505 EXPECT_NE(base::string16(), error); |
| 500 error.clear(); | 506 error.clear(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 511 ASSERT_TRUE(extension); | 517 ASSERT_TRUE(extension); |
| 512 | 518 |
| 513 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); | 519 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); |
| 514 EXPECT_EQ(base::string16(), error); | 520 EXPECT_EQ(base::string16(), error); |
| 515 error.clear(); | 521 error.clear(); |
| 516 } | 522 } |
| 517 | 523 |
| 518 // Verify that a shared_module can be installed. | 524 // Verify that a shared_module can be installed. |
| 519 { | 525 { |
| 520 base::DictionaryValue values; | 526 base::DictionaryValue values; |
| 521 values.Set("export.whitelist", new base::ListValue()); | 527 values.Set("export.whitelist", base::MakeUnique<base::ListValue>()); |
| 522 extension = CreateExtensionFromValues( | 528 extension = CreateExtensionFromValues( |
| 523 std::string(), | 529 std::string(), |
| 524 extensions::Manifest::EXTERNAL_POLICY, | 530 extensions::Manifest::EXTERNAL_POLICY, |
| 525 &values, | 531 &values, |
| 526 extensions::Extension::NO_FLAGS); | 532 extensions::Extension::NO_FLAGS); |
| 527 ASSERT_TRUE(extension); | 533 ASSERT_TRUE(extension); |
| 528 | 534 |
| 529 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); | 535 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); |
| 530 EXPECT_EQ(base::string16(), error); | 536 EXPECT_EQ(base::string16(), error); |
| 531 error.clear(); | 537 error.clear(); |
| 532 } | 538 } |
| 533 | 539 |
| 534 // Verify that a theme can be installed. | 540 // Verify that a theme can be installed. |
| 535 { | 541 { |
| 536 base::DictionaryValue values; | 542 base::DictionaryValue values; |
| 537 values.Set("theme", new base::DictionaryValue()); | 543 values.Set("theme", base::MakeUnique<base::DictionaryValue>()); |
| 538 extension = CreateExtensionFromValues( | 544 extension = CreateExtensionFromValues( |
| 539 std::string(), | 545 std::string(), |
| 540 extensions::Manifest::EXTERNAL_POLICY, | 546 extensions::Manifest::EXTERNAL_POLICY, |
| 541 &values, | 547 &values, |
| 542 extensions::Extension::NO_FLAGS); | 548 extensions::Extension::NO_FLAGS); |
| 543 ASSERT_TRUE(extension); | 549 ASSERT_TRUE(extension); |
| 544 | 550 |
| 545 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); | 551 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); |
| 546 EXPECT_EQ(base::string16(), error); | 552 EXPECT_EQ(base::string16(), error); |
| 547 error.clear(); | 553 error.clear(); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 599 // types of device-local accounts cannot be installed in a single-app kiosk | 605 // types of device-local accounts cannot be installed in a single-app kiosk |
| 600 // session. | 606 // session. |
| 601 extension = CreateRegularExtension(kWhitelistedId); | 607 extension = CreateRegularExtension(kWhitelistedId); |
| 602 ASSERT_TRUE(extension.get()); | 608 ASSERT_TRUE(extension.get()); |
| 603 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); | 609 EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error)); |
| 604 EXPECT_EQ(base::string16(), error); | 610 EXPECT_EQ(base::string16(), error); |
| 605 error.clear(); | 611 error.clear(); |
| 606 } | 612 } |
| 607 | 613 |
| 608 } // namespace chromeos | 614 } // namespace chromeos |
| OLD | NEW |