| Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app_unittest.cc
|
| diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app_unittest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app_unittest.cc
|
| index 3a11c5c15904d5ba623895900fca6a8ee509b652..d790fc6418c3ed654d11e930d3f90ea9c9867cfe 100644
|
| --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app_unittest.cc
|
| +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app_unittest.cc
|
| @@ -141,6 +141,180 @@ TEST_F(ChromeLauncherControllerPerAppTest, DefaultApps) {
|
| EXPECT_TRUE(launcher_controller.IsAppPinned(extension3_->id()));
|
| }
|
|
|
| +// Check that simple locking of an application will 'create' a launcher item.
|
| +TEST_F(ChromeLauncherControllerPerAppTest, CheckLockApps) {
|
| + ChromeLauncherControllerPerApp launcher_controller(profile(), &model_);
|
| + launcher_controller.Init();
|
| +
|
| + // Model should only contain the browser shortcut and app list items.
|
| + EXPECT_EQ(2, model_.item_count());
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension2_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension2_->id()));
|
| +
|
| + launcher_controller.LockV1AppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_WINDOWED_APP, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_TRUE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension2_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension2_->id()));
|
| +
|
| + launcher_controller.UnlockV1AppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(2, model_.item_count());
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension2_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension2_->id()));
|
| +}
|
| +
|
| +// Check that multiple locks of an application will be properly handled.
|
| +TEST_F(ChromeLauncherControllerPerAppTest, CheckMukltiLockApps) {
|
| + ChromeLauncherControllerPerApp launcher_controller(profile(), &model_);
|
| + launcher_controller.Init();
|
| +
|
| + // Model should only contain the browser shortcut and app list items.
|
| + EXPECT_EQ(2, model_.item_count());
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + for (int i = 0; i < 2; i++) {
|
| + launcher_controller.LockV1AppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_WINDOWED_APP, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_TRUE(launcher_controller.IsWindowedAppInLauncher(
|
| + extension1_->id()));
|
| + }
|
| +
|
| + launcher_controller.UnlockV1AppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_WINDOWED_APP, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_TRUE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.UnlockV1AppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(2, model_.item_count());
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension2_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +}
|
| +
|
| +// Check that already pinned items are not effected by locks.
|
| +TEST_F(ChromeLauncherControllerPerAppTest, CheckAlreadyPinnedLockApps) {
|
| + ChromeLauncherControllerPerApp launcher_controller(profile(), &model_);
|
| + launcher_controller.Init();
|
| +
|
| + // Model should only contain the browser shortcut and app list items.
|
| + EXPECT_EQ(2, model_.item_count());
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.PinAppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_TRUE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.LockV1AppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_TRUE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.UnlockV1AppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_TRUE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.UnpinAppsWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(2, model_.item_count());
|
| +}
|
| +
|
| +// Check that already pinned items which get locked stay after unpinning.
|
| +TEST_F(ChromeLauncherControllerPerAppTest, CheckPinnedAppsStayAfterUnlock) {
|
| + ChromeLauncherControllerPerApp launcher_controller(profile(), &model_);
|
| + launcher_controller.Init();
|
| +
|
| + // Model should only contain the browser shortcut and app list items.
|
| + EXPECT_EQ(2, model_.item_count());
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.PinAppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_TRUE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.LockV1AppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_TRUE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.UnpinAppsWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_WINDOWED_APP, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_TRUE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.UnlockV1AppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(2, model_.item_count());
|
| +}
|
| +
|
| +// Check that lock -> pin -> unlock -> unpin does properly transition.
|
| +TEST_F(ChromeLauncherControllerPerAppTest, CheckLockPinUnlockUnpin) {
|
| + ChromeLauncherControllerPerApp launcher_controller(profile(), &model_);
|
| + launcher_controller.Init();
|
| +
|
| + // Model should only contain the browser shortcut and app list items.
|
| + EXPECT_EQ(2, model_.item_count());
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.LockV1AppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_WINDOWED_APP, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_FALSE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_TRUE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.PinAppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_TRUE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.UnlockV1AppWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(3, model_.item_count());
|
| + EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_.items()[kExpectedAppIndex].type);
|
| + EXPECT_TRUE(launcher_controller.IsAppPinned(extension1_->id()));
|
| + EXPECT_FALSE(launcher_controller.IsWindowedAppInLauncher(extension1_->id()));
|
| +
|
| + launcher_controller.UnpinAppsWithID(extension1_->id());
|
| +
|
| + EXPECT_EQ(2, model_.item_count());
|
| +}
|
| +
|
| TEST_F(ChromeLauncherControllerPerAppTest, Policy) {
|
| extension_service_->AddExtension(extension1_.get());
|
| extension_service_->AddExtension(extension3_.get());
|
|
|