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 "chrome/browser/chromeos/note_taking_helper.h" | 5 #include "chrome/browser/chromeos/note_taking_helper.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "ash/ash_switches.h" | 9 #include "ash/ash_switches.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 apps = helper()->GetAvailableApps(profile()); | 352 apps = helper()->GetAvailableApps(profile()); |
353 ASSERT_EQ(2u, apps.size()); | 353 ASSERT_EQ(2u, apps.size()); |
354 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, | 354 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, |
355 false /* preferred */, | 355 false /* preferred */, |
356 NoteTakingLockScreenSupport::kNotSupported), | 356 NoteTakingLockScreenSupport::kNotSupported), |
357 GetAppString(apps[0])); | 357 GetAppString(apps[0])); |
358 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, | 358 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, |
359 kProdKeepAppName, false /* preferred */, | 359 kProdKeepAppName, false /* preferred */, |
360 NoteTakingLockScreenSupport::kNotSupported), | 360 NoteTakingLockScreenSupport::kNotSupported), |
361 GetAppString(apps[1])); | 361 GetAppString(apps[1])); |
| 362 EXPECT_FALSE(helper()->GetPreferredChromeAppInfo(profile())); |
362 | 363 |
363 // Now install a random extension and check that it's ignored. | 364 // Now install a random extension and check that it's ignored. |
364 const extensions::ExtensionId kOtherId = crx_file::id_util::GenerateId("a"); | 365 const extensions::ExtensionId kOtherId = crx_file::id_util::GenerateId("a"); |
365 const std::string kOtherName = "Some Other App"; | 366 const std::string kOtherName = "Some Other App"; |
366 scoped_refptr<const extensions::Extension> other_extension = | 367 scoped_refptr<const extensions::Extension> other_extension = |
367 CreateExtension(kOtherId, kOtherName); | 368 CreateExtension(kOtherId, kOtherName); |
368 InstallExtension(other_extension.get(), profile()); | 369 InstallExtension(other_extension.get(), profile()); |
369 apps = helper()->GetAvailableApps(profile()); | 370 apps = helper()->GetAvailableApps(profile()); |
370 ASSERT_EQ(2u, apps.size()); | 371 ASSERT_EQ(2u, apps.size()); |
371 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, | 372 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, |
372 false /* preferred */, | 373 false /* preferred */, |
373 NoteTakingLockScreenSupport::kNotSupported), | 374 NoteTakingLockScreenSupport::kNotSupported), |
374 GetAppString(apps[0])); | 375 GetAppString(apps[0])); |
375 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, | 376 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, |
376 kProdKeepAppName, false /* preferred */, | 377 kProdKeepAppName, false /* preferred */, |
377 NoteTakingLockScreenSupport::kNotSupported), | 378 NoteTakingLockScreenSupport::kNotSupported), |
378 GetAppString(apps[1])); | 379 GetAppString(apps[1])); |
| 380 EXPECT_FALSE(helper()->GetPreferredChromeAppInfo(profile())); |
379 | 381 |
380 // Mark the prod version as preferred. | 382 // Mark the prod version as preferred. |
381 helper()->SetPreferredApp(profile(), NoteTakingHelper::kProdKeepExtensionId); | 383 helper()->SetPreferredApp(profile(), NoteTakingHelper::kProdKeepExtensionId); |
382 apps = helper()->GetAvailableApps(profile()); | 384 apps = helper()->GetAvailableApps(profile()); |
383 ASSERT_EQ(2u, apps.size()); | 385 ASSERT_EQ(2u, apps.size()); |
384 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, | 386 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, |
385 false /* preferred */, | 387 false /* preferred */, |
386 NoteTakingLockScreenSupport::kNotSupported), | 388 NoteTakingLockScreenSupport::kNotSupported), |
387 GetAppString(apps[0])); | 389 GetAppString(apps[0])); |
388 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, | 390 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, |
389 kProdKeepAppName, true /* preferred */, | 391 kProdKeepAppName, true /* preferred */, |
390 NoteTakingLockScreenSupport::kNotSupported), | 392 NoteTakingLockScreenSupport::kNotSupported), |
391 GetAppString(apps[1])); | 393 GetAppString(apps[1])); |
| 394 |
| 395 std::unique_ptr<NoteTakingAppInfo> preferred_info = |
| 396 helper()->GetPreferredChromeAppInfo(profile()); |
| 397 ASSERT_TRUE(preferred_info); |
| 398 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, |
| 399 kProdKeepAppName, true /* preferred */, |
| 400 NoteTakingLockScreenSupport::kNotSupported), |
| 401 GetAppString(*preferred_info)); |
392 } | 402 } |
393 | 403 |
394 TEST_P(NoteTakingHelperTest, ListChromeAppsWithLockScreenNotesSupported) { | 404 TEST_P(NoteTakingHelperTest, ListChromeAppsWithLockScreenNotesSupported) { |
395 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS); | 405 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS); |
396 | 406 |
397 ASSERT_FALSE(helper()->IsAppAvailable(profile())); | 407 ASSERT_FALSE(helper()->IsAppAvailable(profile())); |
398 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty()); | 408 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty()); |
399 | 409 |
400 std::unique_ptr<base::Value> lock_disabled_action_handler = | 410 std::unique_ptr<base::Value> lock_disabled_action_handler = |
401 extensions::ListBuilder() | 411 extensions::ListBuilder() |
402 .Append(app_runtime::ToString(app_runtime::ACTION_TYPE_NEW_NOTE)) | 412 .Append(app_runtime::ToString(app_runtime::ACTION_TYPE_NEW_NOTE)) |
403 .Build(); | 413 .Build(); |
404 | 414 |
405 // Install Keep app that does not support lock screen note taking - it should | 415 // Install Keep app that does not support lock screen note taking - it should |
406 // be reported not to support lock screen note taking. | 416 // be reported not to support lock screen note taking. |
407 scoped_refptr<const extensions::Extension> prod_extension = | 417 scoped_refptr<const extensions::Extension> prod_extension = |
408 CreateExtension(NoteTakingHelper::kProdKeepExtensionId, kProdKeepAppName, | 418 CreateExtension(NoteTakingHelper::kProdKeepExtensionId, kProdKeepAppName, |
409 std::move(lock_disabled_action_handler)); | 419 std::move(lock_disabled_action_handler)); |
410 InstallExtension(prod_extension.get(), profile()); | 420 InstallExtension(prod_extension.get(), profile()); |
411 EXPECT_TRUE(helper()->IsAppAvailable(profile())); | 421 EXPECT_TRUE(helper()->IsAppAvailable(profile())); |
412 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile()); | 422 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile()); |
413 ASSERT_EQ(1u, apps.size()); | 423 ASSERT_EQ(1u, apps.size()); |
414 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, | 424 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, |
415 kProdKeepAppName, false /* preferred */, | 425 kProdKeepAppName, false /* preferred */, |
416 NoteTakingLockScreenSupport::kNotSupported), | 426 NoteTakingLockScreenSupport::kNotSupported), |
417 GetAppString(apps[0])); | 427 GetAppString(apps[0])); |
| 428 EXPECT_FALSE(helper()->GetPreferredChromeAppInfo(profile())); |
418 | 429 |
419 std::unique_ptr<base::Value> lock_enabled_action_handler = | 430 std::unique_ptr<base::Value> lock_enabled_action_handler = |
420 extensions::ListBuilder() | 431 extensions::ListBuilder() |
421 .Append(extensions::DictionaryBuilder() | 432 .Append(extensions::DictionaryBuilder() |
422 .Set("action", app_runtime::ToString( | 433 .Set("action", app_runtime::ToString( |
423 app_runtime::ACTION_TYPE_NEW_NOTE)) | 434 app_runtime::ACTION_TYPE_NEW_NOTE)) |
424 .SetBoolean("enabled_on_lock_screen", true) | 435 .SetBoolean("enabled_on_lock_screen", true) |
425 .Build()) | 436 .Build()) |
426 .Build(); | 437 .Build(); |
427 | 438 |
428 // Install additional Keep app - one that supports lock screen note taking. | 439 // Install additional Keep app - one that supports lock screen note taking. |
429 // This app should be reported to support note taking (given that | 440 // This app should be reported to support note taking (given that |
430 // enable-lock-screen-apps flag is set). | 441 // enable-lock-screen-apps flag is set). |
431 scoped_refptr<const extensions::Extension> dev_extension = | 442 scoped_refptr<const extensions::Extension> dev_extension = |
432 CreateExtension(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, | 443 CreateExtension(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, |
433 std::move(lock_enabled_action_handler)); | 444 std::move(lock_enabled_action_handler)); |
434 InstallExtension(dev_extension.get(), profile()); | 445 InstallExtension(dev_extension.get(), profile()); |
435 apps = helper()->GetAvailableApps(profile()); | 446 apps = helper()->GetAvailableApps(profile()); |
436 ASSERT_EQ(2u, apps.size()); | 447 ASSERT_EQ(2u, apps.size()); |
437 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, | 448 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, |
438 false /* preferred */, | 449 false /* preferred */, |
439 NoteTakingLockScreenSupport::kSupported), | 450 NoteTakingLockScreenSupport::kSupported), |
440 GetAppString(apps[0])); | 451 GetAppString(apps[0])); |
441 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, | 452 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, |
442 kProdKeepAppName, false /* preferred */, | 453 kProdKeepAppName, false /* preferred */, |
443 NoteTakingLockScreenSupport::kNotSupported), | 454 NoteTakingLockScreenSupport::kNotSupported), |
444 GetAppString(apps[1])); | 455 GetAppString(apps[1])); |
| 456 EXPECT_FALSE(helper()->GetPreferredChromeAppInfo(profile())); |
445 } | 457 } |
446 | 458 |
447 TEST_P(NoteTakingHelperTest, PreferredAppEnabledOnLockScreen) { | 459 TEST_P(NoteTakingHelperTest, PreferredAppEnabledOnLockScreen) { |
448 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS); | 460 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS); |
449 | 461 |
450 ASSERT_FALSE(helper()->IsAppAvailable(profile())); | 462 ASSERT_FALSE(helper()->IsAppAvailable(profile())); |
451 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty()); | 463 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty()); |
452 | 464 |
453 std::unique_ptr<base::Value> lock_enabled_action_handler = | 465 std::unique_ptr<base::Value> lock_enabled_action_handler = |
454 extensions::ListBuilder() | 466 extensions::ListBuilder() |
(...skipping 10 matching lines...) Expand all Loading... |
465 std::move(lock_enabled_action_handler)); | 477 std::move(lock_enabled_action_handler)); |
466 InstallExtension(dev_extension.get(), profile()); | 478 InstallExtension(dev_extension.get(), profile()); |
467 | 479 |
468 // Verify that the app is reported to support lock screen note taking. | 480 // Verify that the app is reported to support lock screen note taking. |
469 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile()); | 481 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile()); |
470 ASSERT_EQ(1u, apps.size()); | 482 ASSERT_EQ(1u, apps.size()); |
471 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, | 483 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, |
472 false /* preferred */, | 484 false /* preferred */, |
473 NoteTakingLockScreenSupport::kSupported), | 485 NoteTakingLockScreenSupport::kSupported), |
474 GetAppString(apps[0])); | 486 GetAppString(apps[0])); |
| 487 EXPECT_FALSE(helper()->GetPreferredChromeAppInfo(profile())); |
475 | 488 |
476 // When the lock screen note taking pref is set and the Keep app is set as the | 489 // When the lock screen note taking pref is set and the Keep app is set as the |
477 // preferred note taking app, the app should be reported as selected as lock | 490 // preferred note taking app, the app should be reported as selected as lock |
478 // screen note taking app. | 491 // screen note taking app. |
479 helper()->SetPreferredApp(profile(), NoteTakingHelper::kDevKeepExtensionId); | 492 helper()->SetPreferredApp(profile(), NoteTakingHelper::kDevKeepExtensionId); |
480 profile()->GetPrefs()->SetBoolean(prefs::kNoteTakingAppEnabledOnLockScreen, | 493 profile()->GetPrefs()->SetBoolean(prefs::kNoteTakingAppEnabledOnLockScreen, |
481 true); | 494 true); |
482 apps = helper()->GetAvailableApps(profile()); | 495 apps = helper()->GetAvailableApps(profile()); |
483 ASSERT_EQ(1u, apps.size()); | 496 ASSERT_EQ(1u, apps.size()); |
484 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, | 497 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, |
485 true /* preferred */, | 498 true /* preferred */, |
486 NoteTakingLockScreenSupport::kSelected), | 499 NoteTakingLockScreenSupport::kSelected), |
487 GetAppString(apps[0])); | 500 GetAppString(apps[0])); |
| 501 std::unique_ptr<NoteTakingAppInfo> preferred_info = |
| 502 helper()->GetPreferredChromeAppInfo(profile()); |
| 503 ASSERT_TRUE(preferred_info); |
| 504 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, |
| 505 true /* preferred */, |
| 506 NoteTakingLockScreenSupport::kSelected), |
| 507 GetAppString(*preferred_info)); |
488 | 508 |
489 // When lock screen note taking pref is reset, the app should not be reported | 509 // When lock screen note taking pref is reset, the app should not be reported |
490 // as selected on lock screen. | 510 // as selected on lock screen. |
491 profile()->GetPrefs()->SetBoolean(prefs::kNoteTakingAppEnabledOnLockScreen, | 511 profile()->GetPrefs()->SetBoolean(prefs::kNoteTakingAppEnabledOnLockScreen, |
492 false); | 512 false); |
493 apps = helper()->GetAvailableApps(profile()); | 513 apps = helper()->GetAvailableApps(profile()); |
494 ASSERT_EQ(1u, apps.size()); | 514 ASSERT_EQ(1u, apps.size()); |
495 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, | 515 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, |
496 true /* preferred */, | 516 true /* preferred */, |
497 NoteTakingLockScreenSupport::kSupported), | 517 NoteTakingLockScreenSupport::kSupported), |
498 GetAppString(apps[0])); | 518 GetAppString(apps[0])); |
| 519 preferred_info = helper()->GetPreferredChromeAppInfo(profile()); |
| 520 ASSERT_TRUE(preferred_info); |
| 521 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, |
| 522 true /* preferred */, |
| 523 NoteTakingLockScreenSupport::kSupported), |
| 524 GetAppString(*preferred_info)); |
499 } | 525 } |
500 | 526 |
501 TEST_P(NoteTakingHelperTest, | 527 TEST_P(NoteTakingHelperTest, |
502 PreferredAppWithotLockSupportClearsLockScreenPref) { | 528 PreferredAppWithotLockSupportClearsLockScreenPref) { |
503 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS); | 529 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS); |
504 | 530 |
505 ASSERT_FALSE(helper()->IsAppAvailable(profile())); | 531 ASSERT_FALSE(helper()->IsAppAvailable(profile())); |
506 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty()); | 532 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty()); |
507 | 533 |
508 std::unique_ptr<base::Value> lock_enabled_action_handler = | 534 std::unique_ptr<base::Value> lock_enabled_action_handler = |
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
877 EXPECT_TRUE(helper()->IsAppAvailable(profile())); | 903 EXPECT_TRUE(helper()->IsAppAvailable(profile())); |
878 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile()); | 904 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile()); |
879 ASSERT_EQ(2u, apps.size()); | 905 ASSERT_EQ(2u, apps.size()); |
880 EXPECT_EQ(GetAppString(kPackage1, kName1, false /* preferred */, | 906 EXPECT_EQ(GetAppString(kPackage1, kName1, false /* preferred */, |
881 NoteTakingLockScreenSupport::kNotSupported), | 907 NoteTakingLockScreenSupport::kNotSupported), |
882 GetAppString(apps[0])); | 908 GetAppString(apps[0])); |
883 EXPECT_EQ(GetAppString(kPackage2, kName2, false /* preferred */, | 909 EXPECT_EQ(GetAppString(kPackage2, kName2, false /* preferred */, |
884 NoteTakingLockScreenSupport::kNotSupported), | 910 NoteTakingLockScreenSupport::kNotSupported), |
885 GetAppString(apps[1])); | 911 GetAppString(apps[1])); |
886 | 912 |
| 913 helper()->SetPreferredApp(profile(), kPackage1); |
| 914 |
| 915 apps = helper()->GetAvailableApps(profile()); |
| 916 ASSERT_EQ(2u, apps.size()); |
| 917 EXPECT_EQ(GetAppString(kPackage1, kName1, true /* preferred */, |
| 918 NoteTakingLockScreenSupport::kNotSupported), |
| 919 GetAppString(apps[0])); |
| 920 EXPECT_EQ(GetAppString(kPackage2, kName2, false /* preferred */, |
| 921 NoteTakingLockScreenSupport::kNotSupported), |
| 922 GetAppString(apps[1])); |
| 923 |
| 924 std::unique_ptr<NoteTakingAppInfo> preferred_info = |
| 925 helper()->GetPreferredChromeAppInfo(profile()); |
| 926 EXPECT_FALSE(preferred_info); |
| 927 |
887 // TODO(victorhsieh): Opt-out on Persistent ARC is special. Skip until | 928 // TODO(victorhsieh): Opt-out on Persistent ARC is special. Skip until |
888 // implemented. | 929 // implemented. |
889 if (arc::ShouldArcAlwaysStart()) | 930 if (arc::ShouldArcAlwaysStart()) |
890 return; | 931 return; |
891 // Disable Play Store and check that the apps are no longer returned. | 932 // Disable Play Store and check that the apps are no longer returned. |
892 profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, false); | 933 profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, false); |
893 EXPECT_FALSE(helper()->play_store_enabled()); | 934 EXPECT_FALSE(helper()->play_store_enabled()); |
894 EXPECT_FALSE(helper()->android_apps_received()); | 935 EXPECT_FALSE(helper()->android_apps_received()); |
895 EXPECT_FALSE(helper()->IsAppAvailable(profile())); | 936 EXPECT_FALSE(helper()->IsAppAvailable(profile())); |
896 EXPECT_TRUE(helper()->GetAvailableApps(profile()).empty()); | 937 EXPECT_TRUE(helper()->GetAvailableApps(profile()).empty()); |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1067 InitExtensionService(second_profile); | 1108 InitExtensionService(second_profile); |
1068 EXPECT_EQ(0, observer.num_updates()); | 1109 EXPECT_EQ(0, observer.num_updates()); |
1069 InstallExtension(keep_extension.get(), second_profile); | 1110 InstallExtension(keep_extension.get(), second_profile); |
1070 EXPECT_EQ(1, observer.num_updates()); | 1111 EXPECT_EQ(1, observer.num_updates()); |
1071 UninstallExtension(keep_extension.get(), second_profile); | 1112 UninstallExtension(keep_extension.get(), second_profile); |
1072 EXPECT_EQ(2, observer.num_updates()); | 1113 EXPECT_EQ(2, observer.num_updates()); |
1073 profile_manager_->DeleteTestingProfile(kSecondProfileName); | 1114 profile_manager_->DeleteTestingProfile(kSecondProfileName); |
1074 } | 1115 } |
1075 | 1116 |
1076 } // namespace chromeos | 1117 } // namespace chromeos |
OLD | NEW |