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

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

Issue 2949943003: Introduce lock screen app manager interface (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
« no previous file with comments | « chrome/browser/chromeos/note_taking_helper.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 apps = helper()->GetAvailableApps(profile()); 356 apps = helper()->GetAvailableApps(profile());
357 ASSERT_EQ(2u, apps.size()); 357 ASSERT_EQ(2u, apps.size());
358 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, 358 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName,
359 false /* preferred */, 359 false /* preferred */,
360 NoteTakingLockScreenSupport::kNotSupported), 360 NoteTakingLockScreenSupport::kNotSupported),
361 GetAppString(apps[0])); 361 GetAppString(apps[0]));
362 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, 362 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId,
363 kProdKeepAppName, false /* preferred */, 363 kProdKeepAppName, false /* preferred */,
364 NoteTakingLockScreenSupport::kNotSupported), 364 NoteTakingLockScreenSupport::kNotSupported),
365 GetAppString(apps[1])); 365 GetAppString(apps[1]));
366 EXPECT_FALSE(helper()->GetPreferredChromeAppInfo(profile()));
366 367
367 // Now install a random extension and check that it's ignored. 368 // Now install a random extension and check that it's ignored.
368 const extensions::ExtensionId kOtherId = crx_file::id_util::GenerateId("a"); 369 const extensions::ExtensionId kOtherId = crx_file::id_util::GenerateId("a");
369 const std::string kOtherName = "Some Other App"; 370 const std::string kOtherName = "Some Other App";
370 scoped_refptr<const extensions::Extension> other_extension = 371 scoped_refptr<const extensions::Extension> other_extension =
371 CreateExtension(kOtherId, kOtherName); 372 CreateExtension(kOtherId, kOtherName);
372 InstallExtension(other_extension.get(), profile()); 373 InstallExtension(other_extension.get(), profile());
373 apps = helper()->GetAvailableApps(profile()); 374 apps = helper()->GetAvailableApps(profile());
374 ASSERT_EQ(2u, apps.size()); 375 ASSERT_EQ(2u, apps.size());
375 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, 376 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName,
376 false /* preferred */, 377 false /* preferred */,
377 NoteTakingLockScreenSupport::kNotSupported), 378 NoteTakingLockScreenSupport::kNotSupported),
378 GetAppString(apps[0])); 379 GetAppString(apps[0]));
379 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, 380 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId,
380 kProdKeepAppName, false /* preferred */, 381 kProdKeepAppName, false /* preferred */,
381 NoteTakingLockScreenSupport::kNotSupported), 382 NoteTakingLockScreenSupport::kNotSupported),
382 GetAppString(apps[1])); 383 GetAppString(apps[1]));
384 EXPECT_FALSE(helper()->GetPreferredChromeAppInfo(profile()));
383 385
384 // Mark the prod version as preferred. 386 // Mark the prod version as preferred.
385 helper()->SetPreferredApp(profile(), NoteTakingHelper::kProdKeepExtensionId); 387 helper()->SetPreferredApp(profile(), NoteTakingHelper::kProdKeepExtensionId);
386 apps = helper()->GetAvailableApps(profile()); 388 apps = helper()->GetAvailableApps(profile());
387 ASSERT_EQ(2u, apps.size()); 389 ASSERT_EQ(2u, apps.size());
388 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, 390 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName,
389 false /* preferred */, 391 false /* preferred */,
390 NoteTakingLockScreenSupport::kNotSupported), 392 NoteTakingLockScreenSupport::kNotSupported),
391 GetAppString(apps[0])); 393 GetAppString(apps[0]));
392 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, 394 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId,
393 kProdKeepAppName, true /* preferred */, 395 kProdKeepAppName, true /* preferred */,
394 NoteTakingLockScreenSupport::kNotSupported), 396 NoteTakingLockScreenSupport::kNotSupported),
395 GetAppString(apps[1])); 397 GetAppString(apps[1]));
398
399 std::unique_ptr<NoteTakingAppInfo> preferred_info =
400 helper()->GetPreferredChromeAppInfo(profile());
401 ASSERT_TRUE(preferred_info);
402 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId,
403 kProdKeepAppName, true /* preferred */,
404 NoteTakingLockScreenSupport::kNotSupported),
405 GetAppString(*preferred_info));
396 } 406 }
397 407
398 TEST_P(NoteTakingHelperTest, ListChromeAppsWithLockScreenNotesSupported) { 408 TEST_P(NoteTakingHelperTest, ListChromeAppsWithLockScreenNotesSupported) {
399 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS); 409 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS);
400 410
401 ASSERT_FALSE(helper()->IsAppAvailable(profile())); 411 ASSERT_FALSE(helper()->IsAppAvailable(profile()));
402 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty()); 412 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty());
403 413
404 std::unique_ptr<base::Value> lock_disabled_action_handler = 414 std::unique_ptr<base::Value> lock_disabled_action_handler =
405 extensions::ListBuilder() 415 extensions::ListBuilder()
406 .Append(app_runtime::ToString(app_runtime::ACTION_TYPE_NEW_NOTE)) 416 .Append(app_runtime::ToString(app_runtime::ACTION_TYPE_NEW_NOTE))
407 .Build(); 417 .Build();
408 418
409 // Install Keep app that does not support lock screen note taking - it should 419 // Install Keep app that does not support lock screen note taking - it should
410 // be reported not to support lock screen note taking. 420 // be reported not to support lock screen note taking.
411 scoped_refptr<const extensions::Extension> prod_extension = CreateExtension( 421 scoped_refptr<const extensions::Extension> prod_extension = CreateExtension(
412 NoteTakingHelper::kProdKeepExtensionId, kProdKeepAppName, 422 NoteTakingHelper::kProdKeepExtensionId, kProdKeepAppName,
413 nullptr /* permissions */, std::move(lock_disabled_action_handler)); 423 nullptr /* permissions */, std::move(lock_disabled_action_handler));
414 InstallExtension(prod_extension.get(), profile()); 424 InstallExtension(prod_extension.get(), profile());
415 EXPECT_TRUE(helper()->IsAppAvailable(profile())); 425 EXPECT_TRUE(helper()->IsAppAvailable(profile()));
416 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile()); 426 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile());
417 ASSERT_EQ(1u, apps.size()); 427 ASSERT_EQ(1u, apps.size());
418 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, 428 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId,
419 kProdKeepAppName, false /* preferred */, 429 kProdKeepAppName, false /* preferred */,
420 NoteTakingLockScreenSupport::kNotSupported), 430 NoteTakingLockScreenSupport::kNotSupported),
421 GetAppString(apps[0])); 431 GetAppString(apps[0]));
432 EXPECT_FALSE(helper()->GetPreferredChromeAppInfo(profile()));
422 433
423 std::unique_ptr<base::Value> lock_enabled_action_handler = 434 std::unique_ptr<base::Value> lock_enabled_action_handler =
424 extensions::ListBuilder() 435 extensions::ListBuilder()
425 .Append(extensions::DictionaryBuilder() 436 .Append(extensions::DictionaryBuilder()
426 .Set("action", app_runtime::ToString( 437 .Set("action", app_runtime::ToString(
427 app_runtime::ACTION_TYPE_NEW_NOTE)) 438 app_runtime::ACTION_TYPE_NEW_NOTE))
428 .SetBoolean("enabled_on_lock_screen", true) 439 .SetBoolean("enabled_on_lock_screen", true)
429 .Build()) 440 .Build())
430 .Build(); 441 .Build();
431 442
432 // Install additional Keep app - one that supports lock screen note taking. 443 // Install additional Keep app - one that supports lock screen note taking.
433 // This app should be reported to support note taking (given that 444 // This app should be reported to support note taking (given that
434 // enable-lock-screen-apps flag is set). 445 // enable-lock-screen-apps flag is set).
435 scoped_refptr<const extensions::Extension> dev_extension = 446 scoped_refptr<const extensions::Extension> dev_extension =
436 CreateExtension(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, 447 CreateExtension(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName,
437 extensions::ListBuilder().Append("lockScreen").Build(), 448 extensions::ListBuilder().Append("lockScreen").Build(),
438 std::move(lock_enabled_action_handler)); 449 std::move(lock_enabled_action_handler));
439 InstallExtension(dev_extension.get(), profile()); 450 InstallExtension(dev_extension.get(), profile());
440 apps = helper()->GetAvailableApps(profile()); 451 apps = helper()->GetAvailableApps(profile());
441 ASSERT_EQ(2u, apps.size()); 452 ASSERT_EQ(2u, apps.size());
442 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, 453 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName,
443 false /* preferred */, 454 false /* preferred */,
444 NoteTakingLockScreenSupport::kSupported), 455 NoteTakingLockScreenSupport::kSupported),
445 GetAppString(apps[0])); 456 GetAppString(apps[0]));
446 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId, 457 EXPECT_EQ(GetAppString(NoteTakingHelper::kProdKeepExtensionId,
447 kProdKeepAppName, false /* preferred */, 458 kProdKeepAppName, false /* preferred */,
448 NoteTakingLockScreenSupport::kNotSupported), 459 NoteTakingLockScreenSupport::kNotSupported),
449 GetAppString(apps[1])); 460 GetAppString(apps[1]));
461 EXPECT_FALSE(helper()->GetPreferredChromeAppInfo(profile()));
450 } 462 }
451 463
452 TEST_P(NoteTakingHelperTest, PreferredAppEnabledOnLockScreen) { 464 TEST_P(NoteTakingHelperTest, PreferredAppEnabledOnLockScreen) {
453 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS); 465 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS);
454 466
455 ASSERT_FALSE(helper()->IsAppAvailable(profile())); 467 ASSERT_FALSE(helper()->IsAppAvailable(profile()));
456 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty()); 468 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty());
457 469
458 std::unique_ptr<base::Value> lock_enabled_action_handler = 470 std::unique_ptr<base::Value> lock_enabled_action_handler =
459 extensions::ListBuilder() 471 extensions::ListBuilder()
(...skipping 11 matching lines...) Expand all
471 std::move(lock_enabled_action_handler)); 483 std::move(lock_enabled_action_handler));
472 InstallExtension(dev_extension.get(), profile()); 484 InstallExtension(dev_extension.get(), profile());
473 485
474 // Verify that the app is reported to support lock screen note taking. 486 // Verify that the app is reported to support lock screen note taking.
475 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile()); 487 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile());
476 ASSERT_EQ(1u, apps.size()); 488 ASSERT_EQ(1u, apps.size());
477 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, 489 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName,
478 false /* preferred */, 490 false /* preferred */,
479 NoteTakingLockScreenSupport::kSupported), 491 NoteTakingLockScreenSupport::kSupported),
480 GetAppString(apps[0])); 492 GetAppString(apps[0]));
493 EXPECT_FALSE(helper()->GetPreferredChromeAppInfo(profile()));
481 494
482 // When the lock screen note taking pref is set and the Keep app is set as the 495 // When the lock screen note taking pref is set and the Keep app is set as the
483 // preferred note taking app, the app should be reported as selected as lock 496 // preferred note taking app, the app should be reported as selected as lock
484 // screen note taking app. 497 // screen note taking app.
485 helper()->SetPreferredApp(profile(), NoteTakingHelper::kDevKeepExtensionId); 498 helper()->SetPreferredApp(profile(), NoteTakingHelper::kDevKeepExtensionId);
486 profile()->GetPrefs()->SetBoolean(prefs::kNoteTakingAppEnabledOnLockScreen, 499 profile()->GetPrefs()->SetBoolean(prefs::kNoteTakingAppEnabledOnLockScreen,
487 true); 500 true);
488 apps = helper()->GetAvailableApps(profile()); 501 apps = helper()->GetAvailableApps(profile());
489 ASSERT_EQ(1u, apps.size()); 502 ASSERT_EQ(1u, apps.size());
490 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, 503 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName,
491 true /* preferred */, 504 true /* preferred */,
492 NoteTakingLockScreenSupport::kSelected), 505 NoteTakingLockScreenSupport::kSelected),
493 GetAppString(apps[0])); 506 GetAppString(apps[0]));
507 std::unique_ptr<NoteTakingAppInfo> preferred_info =
508 helper()->GetPreferredChromeAppInfo(profile());
509 ASSERT_TRUE(preferred_info);
510 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName,
511 true /* preferred */,
512 NoteTakingLockScreenSupport::kSelected),
513 GetAppString(*preferred_info));
494 514
495 // When lock screen note taking pref is reset, the app should not be reported 515 // When lock screen note taking pref is reset, the app should not be reported
496 // as selected on lock screen. 516 // as selected on lock screen.
497 profile()->GetPrefs()->SetBoolean(prefs::kNoteTakingAppEnabledOnLockScreen, 517 profile()->GetPrefs()->SetBoolean(prefs::kNoteTakingAppEnabledOnLockScreen,
498 false); 518 false);
499 apps = helper()->GetAvailableApps(profile()); 519 apps = helper()->GetAvailableApps(profile());
500 ASSERT_EQ(1u, apps.size()); 520 ASSERT_EQ(1u, apps.size());
501 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName, 521 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName,
502 true /* preferred */, 522 true /* preferred */,
503 NoteTakingLockScreenSupport::kSupported), 523 NoteTakingLockScreenSupport::kSupported),
504 GetAppString(apps[0])); 524 GetAppString(apps[0]));
525 preferred_info = helper()->GetPreferredChromeAppInfo(profile());
526 ASSERT_TRUE(preferred_info);
527 EXPECT_EQ(GetAppString(NoteTakingHelper::kDevKeepExtensionId, kDevKeepAppName,
528 true /* preferred */,
529 NoteTakingLockScreenSupport::kSupported),
530 GetAppString(*preferred_info));
505 } 531 }
506 532
507 TEST_P(NoteTakingHelperTest, PreferredAppWithNoLockScreenPermission) { 533 TEST_P(NoteTakingHelperTest, PreferredAppWithNoLockScreenPermission) {
508 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS); 534 Init(ENABLE_PALETTE | ENABLE_LOCK_SCREEN_APPS);
509 535
510 ASSERT_FALSE(helper()->IsAppAvailable(profile())); 536 ASSERT_FALSE(helper()->IsAppAvailable(profile()));
511 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty()); 537 ASSERT_TRUE(helper()->GetAvailableApps(profile()).empty());
512 538
513 std::unique_ptr<base::Value> lock_enabled_action_handler = 539 std::unique_ptr<base::Value> lock_enabled_action_handler =
514 extensions::ListBuilder() 540 extensions::ListBuilder()
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 EXPECT_TRUE(helper()->IsAppAvailable(profile())); 946 EXPECT_TRUE(helper()->IsAppAvailable(profile()));
921 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile()); 947 std::vector<NoteTakingAppInfo> apps = helper()->GetAvailableApps(profile());
922 ASSERT_EQ(2u, apps.size()); 948 ASSERT_EQ(2u, apps.size());
923 EXPECT_EQ(GetAppString(kPackage1, kName1, false /* preferred */, 949 EXPECT_EQ(GetAppString(kPackage1, kName1, false /* preferred */,
924 NoteTakingLockScreenSupport::kNotSupported), 950 NoteTakingLockScreenSupport::kNotSupported),
925 GetAppString(apps[0])); 951 GetAppString(apps[0]));
926 EXPECT_EQ(GetAppString(kPackage2, kName2, false /* preferred */, 952 EXPECT_EQ(GetAppString(kPackage2, kName2, false /* preferred */,
927 NoteTakingLockScreenSupport::kNotSupported), 953 NoteTakingLockScreenSupport::kNotSupported),
928 GetAppString(apps[1])); 954 GetAppString(apps[1]));
929 955
956 helper()->SetPreferredApp(profile(), kPackage1);
957
958 apps = helper()->GetAvailableApps(profile());
959 ASSERT_EQ(2u, apps.size());
960 EXPECT_EQ(GetAppString(kPackage1, kName1, true /* preferred */,
961 NoteTakingLockScreenSupport::kNotSupported),
962 GetAppString(apps[0]));
963 EXPECT_EQ(GetAppString(kPackage2, kName2, false /* preferred */,
964 NoteTakingLockScreenSupport::kNotSupported),
965 GetAppString(apps[1]));
966
967 std::unique_ptr<NoteTakingAppInfo> preferred_info =
968 helper()->GetPreferredChromeAppInfo(profile());
969 EXPECT_FALSE(preferred_info);
970
930 // TODO(victorhsieh): Opt-out on Persistent ARC is special. Skip until 971 // TODO(victorhsieh): Opt-out on Persistent ARC is special. Skip until
931 // implemented. 972 // implemented.
932 if (arc::ShouldArcAlwaysStart()) 973 if (arc::ShouldArcAlwaysStart())
933 return; 974 return;
934 // Disable Play Store and check that the apps are no longer returned. 975 // Disable Play Store and check that the apps are no longer returned.
935 profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, false); 976 profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, false);
936 EXPECT_FALSE(helper()->play_store_enabled()); 977 EXPECT_FALSE(helper()->play_store_enabled());
937 EXPECT_FALSE(helper()->android_apps_received()); 978 EXPECT_FALSE(helper()->android_apps_received());
938 EXPECT_FALSE(helper()->IsAppAvailable(profile())); 979 EXPECT_FALSE(helper()->IsAppAvailable(profile()));
939 EXPECT_TRUE(helper()->GetAvailableApps(profile()).empty()); 980 EXPECT_TRUE(helper()->GetAvailableApps(profile()).empty());
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1110 InitExtensionService(second_profile); 1151 InitExtensionService(second_profile);
1111 EXPECT_EQ(0, observer.num_updates()); 1152 EXPECT_EQ(0, observer.num_updates());
1112 InstallExtension(keep_extension.get(), second_profile); 1153 InstallExtension(keep_extension.get(), second_profile);
1113 EXPECT_EQ(1, observer.num_updates()); 1154 EXPECT_EQ(1, observer.num_updates());
1114 UninstallExtension(keep_extension.get(), second_profile); 1155 UninstallExtension(keep_extension.get(), second_profile);
1115 EXPECT_EQ(2, observer.num_updates()); 1156 EXPECT_EQ(2, observer.num_updates());
1116 profile_manager_->DeleteTestingProfile(kSecondProfileName); 1157 profile_manager_->DeleteTestingProfile(kSecondProfileName);
1117 } 1158 }
1118 1159
1119 } // namespace chromeos 1160 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/note_taking_helper.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698