Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1149)

Side by Side Diff: chrome/browser/chromeos/note_taking_helper_unittest.cc

Issue 2902293002: Introduce lock screen app manager (Closed)
Patch Set: . Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698