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 |