| 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/ui/ash/launcher/chrome_launcher_controller.h" | 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 | 95 |
| 96 virtual ~TestShelfModelObserver() { | 96 virtual ~TestShelfModelObserver() { |
| 97 } | 97 } |
| 98 | 98 |
| 99 // Overridden from ash::ShelfModelObserver: | 99 // Overridden from ash::ShelfModelObserver: |
| 100 virtual void ShelfItemAdded(int index) OVERRIDE { | 100 virtual void ShelfItemAdded(int index) OVERRIDE { |
| 101 ++added_; | 101 ++added_; |
| 102 last_index_ = index; | 102 last_index_ = index; |
| 103 } | 103 } |
| 104 | 104 |
| 105 virtual void ShelfItemRemoved(int index, ash::LauncherID id) OVERRIDE { | 105 virtual void ShelfItemRemoved(int index, ash::ShelfID id) OVERRIDE { |
| 106 ++removed_; | 106 ++removed_; |
| 107 last_index_ = index; | 107 last_index_ = index; |
| 108 } | 108 } |
| 109 | 109 |
| 110 virtual void ShelfItemChanged(int index, | 110 virtual void ShelfItemChanged(int index, |
| 111 const ash::LauncherItem& old_item) OVERRIDE { | 111 const ash::ShelfItem& old_item) OVERRIDE { |
| 112 ++changed_; | 112 ++changed_; |
| 113 last_index_ = index; | 113 last_index_ = index; |
| 114 } | 114 } |
| 115 | 115 |
| 116 virtual void ShelfItemMoved(int start_index, int target_index) OVERRIDE { | 116 virtual void ShelfItemMoved(int start_index, int target_index) OVERRIDE { |
| 117 last_index_ = target_index; | 117 last_index_ = target_index; |
| 118 } | 118 } |
| 119 | 119 |
| 120 virtual void ShelfStatusChanged() OVERRIDE { | 120 virtual void ShelfStatusChanged() OVERRIDE { |
| 121 } | 121 } |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 extension8_ = Extension::Create(base::FilePath(), Manifest::UNPACKED, | 354 extension8_ = Extension::Create(base::FilePath(), Manifest::UNPACKED, |
| 355 manifest, | 355 manifest, |
| 356 Extension::NO_FLAGS, | 356 Extension::NO_FLAGS, |
| 357 "ffffffffffffffffffffffffffffffff", | 357 "ffffffffffffffffffffffffffffffff", |
| 358 &error); | 358 &error); |
| 359 } | 359 } |
| 360 | 360 |
| 361 // Creates a running V2 app (not pinned) of type |app_id|. | 361 // Creates a running V2 app (not pinned) of type |app_id|. |
| 362 virtual void CreateRunningV2App(const std::string& app_id) { | 362 virtual void CreateRunningV2App(const std::string& app_id) { |
| 363 DCHECK(!test_controller_); | 363 DCHECK(!test_controller_); |
| 364 ash::LauncherID id = | 364 ash::ShelfID id = |
| 365 launcher_controller_->CreateAppShortcutLauncherItemWithType( | 365 launcher_controller_->CreateAppShortcutLauncherItemWithType( |
| 366 app_id, | 366 app_id, |
| 367 model_->item_count(), | 367 model_->item_count(), |
| 368 ash::TYPE_PLATFORM_APP); | 368 ash::TYPE_PLATFORM_APP); |
| 369 DCHECK(id); | 369 DCHECK(id); |
| 370 // Change the created launcher controller into a V2 app controller. | 370 // Change the created launcher controller into a V2 app controller. |
| 371 test_controller_ = new TestV2AppLauncherItemController(app_id, | 371 test_controller_ = new TestV2AppLauncherItemController(app_id, |
| 372 launcher_controller_.get()); | 372 launcher_controller_.get()); |
| 373 launcher_controller_->SetItemController(id, test_controller_); | 373 launcher_controller_->SetItemController(id, test_controller_); |
| 374 } | 374 } |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 416 delete item_delegate_manager_; | 416 delete item_delegate_manager_; |
| 417 model_->RemoveObserver(model_observer_.get()); | 417 model_->RemoveObserver(model_observer_.get()); |
| 418 model_observer_.reset(); | 418 model_observer_.reset(); |
| 419 launcher_controller_.reset(); | 419 launcher_controller_.reset(); |
| 420 model_.reset(); | 420 model_.reset(); |
| 421 | 421 |
| 422 BrowserWithTestWindowTest::TearDown(); | 422 BrowserWithTestWindowTest::TearDown(); |
| 423 } | 423 } |
| 424 | 424 |
| 425 void AddAppListLauncherItem() { | 425 void AddAppListLauncherItem() { |
| 426 ash::LauncherItem app_list; | 426 ash::ShelfItem app_list; |
| 427 app_list.type = ash::TYPE_APP_LIST; | 427 app_list.type = ash::TYPE_APP_LIST; |
| 428 model_->Add(app_list); | 428 model_->Add(app_list); |
| 429 } | 429 } |
| 430 | 430 |
| 431 void InitLauncherController() { | 431 void InitLauncherController() { |
| 432 AddAppListLauncherItem(); | 432 AddAppListLauncherItem(); |
| 433 launcher_controller_.reset( | 433 launcher_controller_.reset( |
| 434 new ChromeLauncherController(profile(), model_.get())); | 434 new ChromeLauncherController(profile(), model_.get())); |
| 435 if (!ash::Shell::HasInstance()) | 435 if (!ash::Shell::HasInstance()) |
| 436 SetShelfItemDelegateManager(item_delegate_manager_); | 436 SetShelfItemDelegateManager(item_delegate_manager_); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 460 const std::string& extension_id) { | 460 const std::string& extension_id) { |
| 461 base::DictionaryValue* entry = new base::DictionaryValue(); | 461 base::DictionaryValue* entry = new base::DictionaryValue(); |
| 462 entry->SetString(ash::kPinnedAppsPrefAppIDPath, extension_id); | 462 entry->SetString(ash::kPinnedAppsPrefAppIDPath, extension_id); |
| 463 pref_value->Insert(index, entry); | 463 pref_value->Insert(index, entry); |
| 464 } | 464 } |
| 465 | 465 |
| 466 // Gets the currently configured app launchers from the controller. | 466 // Gets the currently configured app launchers from the controller. |
| 467 void GetAppLaunchers(ChromeLauncherController* controller, | 467 void GetAppLaunchers(ChromeLauncherController* controller, |
| 468 std::vector<std::string>* launchers) { | 468 std::vector<std::string>* launchers) { |
| 469 launchers->clear(); | 469 launchers->clear(); |
| 470 for (ash::LauncherItems::const_iterator iter(model_->items().begin()); | 470 for (ash::ShelfItems::const_iterator iter(model_->items().begin()); |
| 471 iter != model_->items().end(); ++iter) { | 471 iter != model_->items().end(); ++iter) { |
| 472 ChromeLauncherController::IDToItemControllerMap::const_iterator | 472 ChromeLauncherController::IDToItemControllerMap::const_iterator |
| 473 entry(controller->id_to_item_controller_map_.find(iter->id)); | 473 entry(controller->id_to_item_controller_map_.find(iter->id)); |
| 474 if (iter->type == ash::TYPE_APP_SHORTCUT && | 474 if (iter->type == ash::TYPE_APP_SHORTCUT && |
| 475 entry != controller->id_to_item_controller_map_.end()) { | 475 entry != controller->id_to_item_controller_map_.end()) { |
| 476 launchers->push_back(entry->second->app_id()); | 476 launchers->push_back(entry->second->app_id()); |
| 477 } | 477 } |
| 478 } | 478 } |
| 479 } | 479 } |
| 480 | 480 |
| 481 // Get the setup of the currently shown launcher items in one string. | 481 // Get the setup of the currently shown launcher items in one string. |
| 482 // Each pinned element will start with a big letter, each running but not | 482 // Each pinned element will start with a big letter, each running but not |
| 483 // pinned V1 app will start with a small letter and each running but not | 483 // pinned V1 app will start with a small letter and each running but not |
| 484 // pinned V2 app will start with a '*' + small letter. | 484 // pinned V2 app will start with a '*' + small letter. |
| 485 std::string GetPinnedAppStatus() { | 485 std::string GetPinnedAppStatus() { |
| 486 std::string result; | 486 std::string result; |
| 487 for (int i = 0; i < model_->item_count(); i++) { | 487 for (int i = 0; i < model_->item_count(); i++) { |
| 488 if (!result.empty()) | 488 if (!result.empty()) |
| 489 result.append(", "); | 489 result.append(", "); |
| 490 switch (model_->items()[i].type) { | 490 switch (model_->items()[i].type) { |
| 491 case ash::TYPE_PLATFORM_APP: | 491 case ash::TYPE_PLATFORM_APP: |
| 492 result+= "*"; | 492 result+= "*"; |
| 493 // FALLTHROUGH | 493 // FALLTHROUGH |
| 494 case ash::TYPE_WINDOWED_APP: { | 494 case ash::TYPE_WINDOWED_APP: { |
| 495 const std::string& app = | 495 const std::string& app = |
| 496 launcher_controller_->GetAppIDForLauncherID( | 496 launcher_controller_->GetAppIDForShelfID(model_->items()[i].id); |
| 497 model_->items()[i].id); | |
| 498 if (app == extension1_->id()) { | 497 if (app == extension1_->id()) { |
| 499 result += "app1"; | 498 result += "app1"; |
| 500 EXPECT_FALSE( | 499 EXPECT_FALSE( |
| 501 launcher_controller_->IsAppPinned(extension1_->id())); | 500 launcher_controller_->IsAppPinned(extension1_->id())); |
| 502 } else if (app == extension2_->id()) { | 501 } else if (app == extension2_->id()) { |
| 503 result += "app2"; | 502 result += "app2"; |
| 504 EXPECT_FALSE( | 503 EXPECT_FALSE( |
| 505 launcher_controller_->IsAppPinned(extension2_->id())); | 504 launcher_controller_->IsAppPinned(extension2_->id())); |
| 506 } else if (app == extension3_->id()) { | 505 } else if (app == extension3_->id()) { |
| 507 result += "app3"; | 506 result += "app3"; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 526 } else if (app == extension8_->id()) { | 525 } else if (app == extension8_->id()) { |
| 527 result += "app8"; | 526 result += "app8"; |
| 528 EXPECT_FALSE( | 527 EXPECT_FALSE( |
| 529 launcher_controller_->IsAppPinned(extension8_->id())); | 528 launcher_controller_->IsAppPinned(extension8_->id())); |
| 530 } else { | 529 } else { |
| 531 result += "unknown"; | 530 result += "unknown"; |
| 532 } | 531 } |
| 533 break; | 532 break; |
| 534 } | 533 } |
| 535 case ash::TYPE_APP_SHORTCUT: { | 534 case ash::TYPE_APP_SHORTCUT: { |
| 536 const std::string& app = | 535 const std::string& app = |
| 537 launcher_controller_->GetAppIDForLauncherID( | 536 launcher_controller_->GetAppIDForShelfID(model_->items()[i].id); |
| 538 model_->items()[i].id); | |
| 539 if (app == extension1_->id()) { | 537 if (app == extension1_->id()) { |
| 540 result += "App1"; | 538 result += "App1"; |
| 541 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 539 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 542 } else if (app == extension2_->id()) { | 540 } else if (app == extension2_->id()) { |
| 543 result += "App2"; | 541 result += "App2"; |
| 544 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); | 542 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 545 } else if (app == extension3_->id()) { | 543 } else if (app == extension3_->id()) { |
| 546 result += "App3"; | 544 result += "App3"; |
| 547 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 545 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 548 } else if (app == extension4_->id()) { | 546 } else if (app == extension4_->id()) { |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1007 InsertPrefValue(&policy_value, 2, extension3_->id()); | 1005 InsertPrefValue(&policy_value, 2, extension3_->id()); |
| 1008 profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps, | 1006 profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps, |
| 1009 policy_value.DeepCopy()); | 1007 policy_value.DeepCopy()); |
| 1010 EXPECT_EQ(0, profile()->GetPrefs()->GetInteger(prefs::kShelfChromeIconIndex)); | 1008 EXPECT_EQ(0, profile()->GetPrefs()->GetInteger(prefs::kShelfChromeIconIndex)); |
| 1011 // Model should only contain the browser shortcut and app list items. | 1009 // Model should only contain the browser shortcut and app list items. |
| 1012 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1010 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1013 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); | 1011 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 1014 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 1012 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 1015 EXPECT_EQ("Chrome, AppList", GetPinnedAppStatus()); | 1013 EXPECT_EQ("Chrome, AppList", GetPinnedAppStatus()); |
| 1016 | 1014 |
| 1017 // Installing |extension3_| should add it to the launcher - behind the | 1015 // Installing |extension3_| should add it to the shelf - behind the |
| 1018 // chrome icon. | 1016 // chrome icon. |
| 1019 ash::LauncherItem item; | 1017 ash::ShelfItem item; |
| 1020 extension_service_->AddExtension(extension3_.get()); | 1018 extension_service_->AddExtension(extension3_.get()); |
| 1021 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1019 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1022 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); | 1020 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 1023 EXPECT_EQ("Chrome, App3, AppList", GetPinnedAppStatus()); | 1021 EXPECT_EQ("Chrome, App3, AppList", GetPinnedAppStatus()); |
| 1024 | 1022 |
| 1025 // Installing |extension2_| should add it to the launcher - behind the | 1023 // Installing |extension2_| should add it to the launcher - behind the |
| 1026 // chrome icon, but in first location. | 1024 // chrome icon, but in first location. |
| 1027 extension_service_->AddExtension(extension2_.get()); | 1025 extension_service_->AddExtension(extension2_.get()); |
| 1028 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1026 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1029 EXPECT_EQ("Chrome, App2, App3, AppList", GetPinnedAppStatus()); | 1027 EXPECT_EQ("Chrome, App2, App3, AppList", GetPinnedAppStatus()); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1087 profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps, | 1085 profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps, |
| 1088 policy_value.DeepCopy()); | 1086 policy_value.DeepCopy()); |
| 1089 profile()->GetTestingPrefService()->SetInteger(prefs::kShelfChromeIconIndex, | 1087 profile()->GetTestingPrefService()->SetInteger(prefs::kShelfChromeIconIndex, |
| 1090 1); | 1088 1); |
| 1091 // Model should only contain the browser shortcut and app list items. | 1089 // Model should only contain the browser shortcut and app list items. |
| 1092 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1090 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1093 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); | 1091 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 1094 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 1092 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 1095 EXPECT_EQ("Chrome, AppList", GetPinnedAppStatus()); | 1093 EXPECT_EQ("Chrome, AppList", GetPinnedAppStatus()); |
| 1096 | 1094 |
| 1097 // Installing |extension2_| should add it to the launcher - behind the | 1095 // Installing |extension2_| should add it to the shelf - behind the |
| 1098 // chrome icon. | 1096 // chrome icon. |
| 1099 ash::LauncherItem item; | 1097 ash::ShelfItem item; |
| 1100 extension_service_->AddExtension(extension2_.get()); | 1098 extension_service_->AddExtension(extension2_.get()); |
| 1101 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1099 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1102 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 1100 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 1103 EXPECT_EQ("Chrome, App2, AppList", GetPinnedAppStatus()); | 1101 EXPECT_EQ("Chrome, App2, AppList", GetPinnedAppStatus()); |
| 1104 | 1102 |
| 1105 // Installing |extension1_| should add it to the launcher - behind the | 1103 // Installing |extension1_| should add it to the launcher - behind the |
| 1106 // chrome icon, but in first location. | 1104 // chrome icon, but in first location. |
| 1107 extension_service_->AddExtension(extension1_.get()); | 1105 extension_service_->AddExtension(extension1_.get()); |
| 1108 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 1106 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 1109 EXPECT_EQ("App1, Chrome, App2, AppList", GetPinnedAppStatus()); | 1107 EXPECT_EQ("App1, Chrome, App2, AppList", GetPinnedAppStatus()); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1168 } | 1166 } |
| 1169 | 1167 |
| 1170 // Check that changing from the alternate shelf layout to the old shelflayout | 1168 // Check that changing from the alternate shelf layout to the old shelflayout |
| 1171 // and back does keep the app launcher at location #0. | 1169 // and back does keep the app launcher at location #0. |
| 1172 TEST_F(ChromeLauncherControllerTest, | 1170 TEST_F(ChromeLauncherControllerTest, |
| 1173 SwitchingFromAlternateShelfLayoutToLegacyAndBack) { | 1171 SwitchingFromAlternateShelfLayoutToLegacyAndBack) { |
| 1174 InitLauncherController(); | 1172 InitLauncherController(); |
| 1175 | 1173 |
| 1176 // We simulate this problem by intentionally placing the app list item in | 1174 // We simulate this problem by intentionally placing the app list item in |
| 1177 // the middle of several apps which caused a crash (see crbug.com/329597). | 1175 // the middle of several apps which caused a crash (see crbug.com/329597). |
| 1178 const char kAppLauncherIdPlaceholder[] = "AppLauncherIDPlaceholder--------"; | 1176 const char kAppShelfIdPlaceholder[] = "AppShelfIDPlaceholder--------"; |
| 1179 | 1177 |
| 1180 base::ListValue policy_value; | 1178 base::ListValue policy_value; |
| 1181 InsertPrefValue(&policy_value, 0, extension1_->id()); | 1179 InsertPrefValue(&policy_value, 0, extension1_->id()); |
| 1182 InsertPrefValue(&policy_value, 1, kAppLauncherIdPlaceholder); | 1180 InsertPrefValue(&policy_value, 1, kAppShelfIdPlaceholder); |
| 1183 InsertPrefValue(&policy_value, 2, extension2_->id()); | 1181 InsertPrefValue(&policy_value, 2, extension2_->id()); |
| 1184 profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps, | 1182 profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps, |
| 1185 policy_value.DeepCopy()); | 1183 policy_value.DeepCopy()); |
| 1186 EXPECT_EQ(0, profile()->GetPrefs()->GetInteger(prefs::kShelfChromeIconIndex)); | 1184 EXPECT_EQ(0, profile()->GetPrefs()->GetInteger(prefs::kShelfChromeIconIndex)); |
| 1187 // Model should only contain the browser shortcut and app list items. | 1185 // Model should only contain the browser shortcut and app list items. |
| 1188 extension_service_->AddExtension(extension1_.get()); | 1186 extension_service_->AddExtension(extension1_.get()); |
| 1189 extension_service_->AddExtension(extension2_.get()); | 1187 extension_service_->AddExtension(extension2_.get()); |
| 1190 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); | 1188 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); |
| 1191 } | 1189 } |
| 1192 | 1190 |
| 1193 // Check that the restauration of launcher items is happening in the same order | 1191 // Check that the restauration of launcher items is happening in the same order |
| 1194 // as the user has pinned them (on another system) when they are synced reverse | 1192 // as the user has pinned them (on another system) when they are synced reverse |
| 1195 // order. | 1193 // order. |
| 1196 TEST_F(ChromeLauncherControllerTest, RestoreDefaultAppsReverseOrder) { | 1194 TEST_F(ChromeLauncherControllerTest, RestoreDefaultAppsReverseOrder) { |
| 1197 InitLauncherController(); | 1195 InitLauncherController(); |
| 1198 | 1196 |
| 1199 base::ListValue policy_value; | 1197 base::ListValue policy_value; |
| 1200 InsertPrefValue(&policy_value, 0, extension1_->id()); | 1198 InsertPrefValue(&policy_value, 0, extension1_->id()); |
| 1201 InsertPrefValue(&policy_value, 1, extension2_->id()); | 1199 InsertPrefValue(&policy_value, 1, extension2_->id()); |
| 1202 InsertPrefValue(&policy_value, 2, extension3_->id()); | 1200 InsertPrefValue(&policy_value, 2, extension3_->id()); |
| 1203 profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps, | 1201 profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps, |
| 1204 policy_value.DeepCopy()); | 1202 policy_value.DeepCopy()); |
| 1205 SetShelfChromeIconIndex(0); | 1203 SetShelfChromeIconIndex(0); |
| 1206 // Model should only contain the browser shortcut and app list items. | 1204 // Model should only contain the browser shortcut and app list items. |
| 1207 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1205 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1208 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); | 1206 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 1209 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 1207 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 1210 EXPECT_EQ("AppList, Chrome", GetPinnedAppStatus()); | 1208 EXPECT_EQ("AppList, Chrome", GetPinnedAppStatus()); |
| 1211 | 1209 |
| 1212 // Installing |extension3_| should add it to the launcher - behind the | 1210 // Installing |extension3_| should add it to the shelf - behind the |
| 1213 // chrome icon. | 1211 // chrome icon. |
| 1214 ash::LauncherItem item; | 1212 ash::ShelfItem item; |
| 1215 extension_service_->AddExtension(extension3_.get()); | 1213 extension_service_->AddExtension(extension3_.get()); |
| 1216 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1214 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1217 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); | 1215 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 1218 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus()); | 1216 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus()); |
| 1219 | 1217 |
| 1220 // Installing |extension2_| should add it to the launcher - behind the | 1218 // Installing |extension2_| should add it to the launcher - behind the |
| 1221 // chrome icon, but in first location. | 1219 // chrome icon, but in first location. |
| 1222 extension_service_->AddExtension(extension2_.get()); | 1220 extension_service_->AddExtension(extension2_.get()); |
| 1223 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1221 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1224 EXPECT_EQ("AppList, Chrome, App2, App3", GetPinnedAppStatus()); | 1222 EXPECT_EQ("AppList, Chrome, App2, App3", GetPinnedAppStatus()); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1279 InsertPrefValue(&policy_value, 2, extension3_->id()); | 1277 InsertPrefValue(&policy_value, 2, extension3_->id()); |
| 1280 profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps, | 1278 profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps, |
| 1281 policy_value.DeepCopy()); | 1279 policy_value.DeepCopy()); |
| 1282 SetShelfChromeIconIndex(1); | 1280 SetShelfChromeIconIndex(1); |
| 1283 // Model should only contain the browser shortcut and app list items. | 1281 // Model should only contain the browser shortcut and app list items. |
| 1284 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1282 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1285 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); | 1283 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 1286 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 1284 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 1287 EXPECT_EQ("AppList, Chrome", GetPinnedAppStatus()); | 1285 EXPECT_EQ("AppList, Chrome", GetPinnedAppStatus()); |
| 1288 | 1286 |
| 1289 // Installing |extension2_| should add it to the launcher - behind the | 1287 // Installing |extension2_| should add it to the shelf - behind the |
| 1290 // chrome icon. | 1288 // chrome icon. |
| 1291 ash::LauncherItem item; | 1289 ash::ShelfItem item; |
| 1292 extension_service_->AddExtension(extension2_.get()); | 1290 extension_service_->AddExtension(extension2_.get()); |
| 1293 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1291 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1294 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 1292 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 1295 EXPECT_EQ("AppList, Chrome, App2", GetPinnedAppStatus()); | 1293 EXPECT_EQ("AppList, Chrome, App2", GetPinnedAppStatus()); |
| 1296 | 1294 |
| 1297 // Installing |extension1_| should add it to the launcher - behind the | 1295 // Installing |extension1_| should add it to the launcher - behind the |
| 1298 // chrome icon, but in first location. | 1296 // chrome icon, but in first location. |
| 1299 extension_service_->AddExtension(extension1_.get()); | 1297 extension_service_->AddExtension(extension1_.get()); |
| 1300 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 1298 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 1301 EXPECT_EQ("AppList, App1, Chrome, App2", GetPinnedAppStatus()); | 1299 EXPECT_EQ("AppList, App1, Chrome, App2", GetPinnedAppStatus()); |
| (...skipping 828 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2130 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); | 2128 GetAppLaunchers(launcher_controller_.get(), &actual_launchers); |
| 2131 EXPECT_EQ(expected_launchers, actual_launchers); | 2129 EXPECT_EQ(expected_launchers, actual_launchers); |
| 2132 } | 2130 } |
| 2133 | 2131 |
| 2134 // Checks the created menus and menu lists for correctness. It uses the given | 2132 // Checks the created menus and menu lists for correctness. It uses the given |
| 2135 // |controller| to create the objects for the given |item| and checks the | 2133 // |controller| to create the objects for the given |item| and checks the |
| 2136 // found item count against the |expected_items|. The |title| list contains the | 2134 // found item count against the |expected_items|. The |title| list contains the |
| 2137 // menu titles in the order of their appearance in the menu (not including the | 2135 // menu titles in the order of their appearance in the menu (not including the |
| 2138 // application name). | 2136 // application name). |
| 2139 bool CheckMenuCreation(ChromeLauncherController* controller, | 2137 bool CheckMenuCreation(ChromeLauncherController* controller, |
| 2140 const ash::LauncherItem& item, | 2138 const ash::ShelfItem& item, |
| 2141 size_t expected_items, | 2139 size_t expected_items, |
| 2142 base::string16 title[], | 2140 base::string16 title[], |
| 2143 bool is_browser) { | 2141 bool is_browser) { |
| 2144 ChromeLauncherAppMenuItems items = controller->GetApplicationList(item, 0); | 2142 ChromeLauncherAppMenuItems items = controller->GetApplicationList(item, 0); |
| 2145 // A new behavior has been added: Only show menus if there is at least one | 2143 // A new behavior has been added: Only show menus if there is at least one |
| 2146 // item available. | 2144 // item available. |
| 2147 if (expected_items < 1 && is_browser) { | 2145 if (expected_items < 1 && is_browser) { |
| 2148 EXPECT_EQ(0u, items.size()); | 2146 EXPECT_EQ(0u, items.size()); |
| 2149 return items.size() == 0; | 2147 return items.size() == 0; |
| 2150 } | 2148 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2178 } | 2176 } |
| 2179 | 2177 |
| 2180 // Check that browsers get reflected correctly in the launcher menu. | 2178 // Check that browsers get reflected correctly in the launcher menu. |
| 2181 TEST_F(ChromeLauncherControllerTest, BrowserMenuGeneration) { | 2179 TEST_F(ChromeLauncherControllerTest, BrowserMenuGeneration) { |
| 2182 EXPECT_EQ(1U, chrome::GetTotalBrowserCount()); | 2180 EXPECT_EQ(1U, chrome::GetTotalBrowserCount()); |
| 2183 chrome::NewTab(browser()); | 2181 chrome::NewTab(browser()); |
| 2184 | 2182 |
| 2185 InitLauncherController(); | 2183 InitLauncherController(); |
| 2186 | 2184 |
| 2187 // Check that the browser list is empty at this time. | 2185 // Check that the browser list is empty at this time. |
| 2188 ash::LauncherItem item_browser; | 2186 ash::ShelfItem item_browser; |
| 2189 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; | 2187 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; |
| 2190 item_browser.id = | 2188 item_browser.id = |
| 2191 launcher_controller_->GetLauncherIDForAppID(extension_misc::kChromeAppId); | 2189 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId); |
| 2192 EXPECT_TRUE(CheckMenuCreation( | 2190 EXPECT_TRUE(CheckMenuCreation( |
| 2193 launcher_controller_.get(), item_browser, 0, NULL, true)); | 2191 launcher_controller_.get(), item_browser, 0, NULL, true)); |
| 2194 | 2192 |
| 2195 // Now make the created browser() visible by adding it to the active browser | 2193 // Now make the created browser() visible by adding it to the active browser |
| 2196 // list. | 2194 // list. |
| 2197 BrowserList::SetLastActive(browser()); | 2195 BrowserList::SetLastActive(browser()); |
| 2198 base::string16 title1 = ASCIIToUTF16("Test1"); | 2196 base::string16 title1 = ASCIIToUTF16("Test1"); |
| 2199 NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1); | 2197 NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1); |
| 2200 base::string16 one_menu_item[] = { title1 }; | 2198 base::string16 one_menu_item[] = { title1 }; |
| 2201 | 2199 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2223 } | 2221 } |
| 2224 | 2222 |
| 2225 #if defined(OS_CHROMEOS) | 2223 #if defined(OS_CHROMEOS) |
| 2226 // Check the multi profile case where only user related browsers should show | 2224 // Check the multi profile case where only user related browsers should show |
| 2227 // up. | 2225 // up. |
| 2228 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest, | 2226 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest, |
| 2229 BrowserMenuGenerationTwoUsers) { | 2227 BrowserMenuGenerationTwoUsers) { |
| 2230 // Create a browser item in the LauncherController. | 2228 // Create a browser item in the LauncherController. |
| 2231 InitLauncherController(); | 2229 InitLauncherController(); |
| 2232 | 2230 |
| 2233 ash::LauncherItem item_browser; | 2231 ash::ShelfItem item_browser; |
| 2234 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; | 2232 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; |
| 2235 item_browser.id = | 2233 item_browser.id = |
| 2236 launcher_controller_->GetLauncherIDForAppID(extension_misc::kChromeAppId); | 2234 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId); |
| 2237 | 2235 |
| 2238 // Check that the menu is empty. | 2236 // Check that the menu is empty. |
| 2239 chrome::NewTab(browser()); | 2237 chrome::NewTab(browser()); |
| 2240 EXPECT_TRUE(CheckMenuCreation( | 2238 EXPECT_TRUE(CheckMenuCreation( |
| 2241 launcher_controller_.get(), item_browser, 0, NULL, true)); | 2239 launcher_controller_.get(), item_browser, 0, NULL, true)); |
| 2242 | 2240 |
| 2243 // Show the created |browser()| by adding it to the active browser list. | 2241 // Show the created |browser()| by adding it to the active browser list. |
| 2244 BrowserList::SetLastActive(browser()); | 2242 BrowserList::SetLastActive(browser()); |
| 2245 base::string16 title1 = ASCIIToUTF16("Test1"); | 2243 base::string16 title1 = ASCIIToUTF16("Test1"); |
| 2246 NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1); | 2244 NavigateAndCommitActiveTabWithTitle(browser(), GURL("http://test1"), title1); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2283 EXPECT_EQ(1U, chrome::GetTotalBrowserCount()); | 2281 EXPECT_EQ(1U, chrome::GetTotalBrowserCount()); |
| 2284 EXPECT_EQ(0, browser()->tab_strip_model()->count()); | 2282 EXPECT_EQ(0, browser()->tab_strip_model()->count()); |
| 2285 | 2283 |
| 2286 InitLauncherControllerWithBrowser(); | 2284 InitLauncherControllerWithBrowser(); |
| 2287 | 2285 |
| 2288 // Model should only contain the browser shortcut and app list items. | 2286 // Model should only contain the browser shortcut and app list items. |
| 2289 EXPECT_EQ(2, model_->item_count()); | 2287 EXPECT_EQ(2, model_->item_count()); |
| 2290 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); | 2288 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 2291 | 2289 |
| 2292 // Installing |extension3_| adds it to the launcher. | 2290 // Installing |extension3_| adds it to the launcher. |
| 2293 ash::LauncherID gmail_id = model_->next_id(); | 2291 ash::ShelfID gmail_id = model_->next_id(); |
| 2294 extension_service_->AddExtension(extension3_.get()); | 2292 extension_service_->AddExtension(extension3_.get()); |
| 2295 EXPECT_EQ(3, model_->item_count()); | 2293 EXPECT_EQ(3, model_->item_count()); |
| 2296 int gmail_index = model_->ItemIndexByID(gmail_id); | 2294 int gmail_index = model_->ItemIndexByID(gmail_id); |
| 2297 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[gmail_index].type); | 2295 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[gmail_index].type); |
| 2298 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 2296 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 2299 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); | 2297 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); |
| 2300 | 2298 |
| 2301 // Check the menu content. | 2299 // Check the menu content. |
| 2302 ash::LauncherItem item_browser; | 2300 ash::ShelfItem item_browser; |
| 2303 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; | 2301 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; |
| 2304 item_browser.id = | 2302 item_browser.id = |
| 2305 launcher_controller_->GetLauncherIDForAppID(extension_misc::kChromeAppId); | 2303 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId); |
| 2306 | 2304 |
| 2307 ash::LauncherItem item_gmail; | 2305 ash::ShelfItem item_gmail; |
| 2308 item_gmail.type = ash::TYPE_APP_SHORTCUT; | 2306 item_gmail.type = ash::TYPE_APP_SHORTCUT; |
| 2309 item_gmail.id = gmail_id; | 2307 item_gmail.id = gmail_id; |
| 2310 EXPECT_TRUE(CheckMenuCreation( | 2308 EXPECT_TRUE(CheckMenuCreation( |
| 2311 launcher_controller_.get(), item_gmail, 0, NULL, false)); | 2309 launcher_controller_.get(), item_gmail, 0, NULL, false)); |
| 2312 | 2310 |
| 2313 // Set the gmail URL to a new tab. | 2311 // Set the gmail URL to a new tab. |
| 2314 base::string16 title1 = ASCIIToUTF16("Test1"); | 2312 base::string16 title1 = ASCIIToUTF16("Test1"); |
| 2315 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); | 2313 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); |
| 2316 | 2314 |
| 2317 base::string16 one_menu_item[] = { title1 }; | 2315 base::string16 one_menu_item[] = { title1 }; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2353 | 2351 |
| 2354 #if defined(OS_CHROMEOS) | 2352 #if defined(OS_CHROMEOS) |
| 2355 // Check the multi profile case where only user related apps should show up. | 2353 // Check the multi profile case where only user related apps should show up. |
| 2356 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest, | 2354 TEST_F(MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerTest, |
| 2357 V1AppMenuGenerationTwoUsers) { | 2355 V1AppMenuGenerationTwoUsers) { |
| 2358 // Create a browser item in the LauncherController. | 2356 // Create a browser item in the LauncherController. |
| 2359 InitLauncherController(); | 2357 InitLauncherController(); |
| 2360 chrome::NewTab(browser()); | 2358 chrome::NewTab(browser()); |
| 2361 | 2359 |
| 2362 // Installing |extension3_| adds it to the launcher. | 2360 // Installing |extension3_| adds it to the launcher. |
| 2363 ash::LauncherID gmail_id = model_->next_id(); | 2361 ash::ShelfID gmail_id = model_->next_id(); |
| 2364 extension_service_->AddExtension(extension3_.get()); | 2362 extension_service_->AddExtension(extension3_.get()); |
| 2365 EXPECT_EQ(3, model_->item_count()); | 2363 EXPECT_EQ(3, model_->item_count()); |
| 2366 int gmail_index = model_->ItemIndexByID(gmail_id); | 2364 int gmail_index = model_->ItemIndexByID(gmail_id); |
| 2367 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[gmail_index].type); | 2365 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[gmail_index].type); |
| 2368 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 2366 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 2369 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); | 2367 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); |
| 2370 | 2368 |
| 2371 // Check the menu content. | 2369 // Check the menu content. |
| 2372 ash::LauncherItem item_browser; | 2370 ash::ShelfItem item_browser; |
| 2373 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; | 2371 item_browser.type = ash::TYPE_BROWSER_SHORTCUT; |
| 2374 item_browser.id = | 2372 item_browser.id = |
| 2375 launcher_controller_->GetLauncherIDForAppID(extension_misc::kChromeAppId); | 2373 launcher_controller_->GetShelfIDForAppID(extension_misc::kChromeAppId); |
| 2376 | 2374 |
| 2377 ash::LauncherItem item_gmail; | 2375 ash::ShelfItem item_gmail; |
| 2378 item_gmail.type = ash::TYPE_APP_SHORTCUT; | 2376 item_gmail.type = ash::TYPE_APP_SHORTCUT; |
| 2379 item_gmail.id = gmail_id; | 2377 item_gmail.id = gmail_id; |
| 2380 EXPECT_TRUE(CheckMenuCreation( | 2378 EXPECT_TRUE(CheckMenuCreation( |
| 2381 launcher_controller_.get(), item_gmail, 0, NULL, false)); | 2379 launcher_controller_.get(), item_gmail, 0, NULL, false)); |
| 2382 | 2380 |
| 2383 // Set the gmail URL to a new tab. | 2381 // Set the gmail URL to a new tab. |
| 2384 base::string16 title1 = ASCIIToUTF16("Test1"); | 2382 base::string16 title1 = ASCIIToUTF16("Test1"); |
| 2385 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); | 2383 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); |
| 2386 | 2384 |
| 2387 base::string16 one_menu_item[] = { title1 }; | 2385 base::string16 one_menu_item[] = { title1 }; |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2473 EXPECT_EQ(2, model_->item_count()); | 2471 EXPECT_EQ(2, model_->item_count()); |
| 2474 } | 2472 } |
| 2475 #endif // defined(OS_CHROMEOS) | 2473 #endif // defined(OS_CHROMEOS) |
| 2476 | 2474 |
| 2477 // Checks that the generated menu list properly activates items. | 2475 // Checks that the generated menu list properly activates items. |
| 2478 TEST_F(ChromeLauncherControllerTest, V1AppMenuExecution) { | 2476 TEST_F(ChromeLauncherControllerTest, V1AppMenuExecution) { |
| 2479 InitLauncherControllerWithBrowser(); | 2477 InitLauncherControllerWithBrowser(); |
| 2480 | 2478 |
| 2481 // Add |extension3_| to the launcher and add two items. | 2479 // Add |extension3_| to the launcher and add two items. |
| 2482 GURL gmail = GURL("https://mail.google.com/mail/u"); | 2480 GURL gmail = GURL("https://mail.google.com/mail/u"); |
| 2483 ash::LauncherID gmail_id = model_->next_id(); | 2481 ash::ShelfID gmail_id = model_->next_id(); |
| 2484 extension_service_->AddExtension(extension3_.get()); | 2482 extension_service_->AddExtension(extension3_.get()); |
| 2485 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); | 2483 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); |
| 2486 base::string16 title1 = ASCIIToUTF16("Test1"); | 2484 base::string16 title1 = ASCIIToUTF16("Test1"); |
| 2487 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); | 2485 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); |
| 2488 chrome::NewTab(browser()); | 2486 chrome::NewTab(browser()); |
| 2489 base::string16 title2 = ASCIIToUTF16("Test2"); | 2487 base::string16 title2 = ASCIIToUTF16("Test2"); |
| 2490 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2); | 2488 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2); |
| 2491 | 2489 |
| 2492 // Check that the menu is properly set. | 2490 // Check that the menu is properly set. |
| 2493 ash::LauncherItem item_gmail; | 2491 ash::ShelfItem item_gmail; |
| 2494 item_gmail.type = ash::TYPE_APP_SHORTCUT; | 2492 item_gmail.type = ash::TYPE_APP_SHORTCUT; |
| 2495 item_gmail.id = gmail_id; | 2493 item_gmail.id = gmail_id; |
| 2496 base::string16 two_menu_items[] = {title1, title2}; | 2494 base::string16 two_menu_items[] = {title1, title2}; |
| 2497 EXPECT_TRUE(CheckMenuCreation( | 2495 EXPECT_TRUE(CheckMenuCreation( |
| 2498 launcher_controller_.get(), item_gmail, 2, two_menu_items, false)); | 2496 launcher_controller_.get(), item_gmail, 2, two_menu_items, false)); |
| 2499 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 2497 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 2500 // Execute the second item in the list (which shouldn't do anything since that | 2498 // Execute the second item in the list (which shouldn't do anything since that |
| 2501 // item is per definition already the active tab). | 2499 // item is per definition already the active tab). |
| 2502 { | 2500 { |
| 2503 scoped_ptr<ash::ShelfMenuModel> menu(new LauncherApplicationMenuItemModel( | 2501 scoped_ptr<ash::ShelfMenuModel> menu(new LauncherApplicationMenuItemModel( |
| (...skipping 18 matching lines...) Expand all Loading... |
| 2522 // Now the active tab should be the second item. | 2520 // Now the active tab should be the second item. |
| 2523 EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); | 2521 EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); |
| 2524 } | 2522 } |
| 2525 | 2523 |
| 2526 // Checks that the generated menu list properly deletes items. | 2524 // Checks that the generated menu list properly deletes items. |
| 2527 TEST_F(ChromeLauncherControllerTest, V1AppMenuDeletionExecution) { | 2525 TEST_F(ChromeLauncherControllerTest, V1AppMenuDeletionExecution) { |
| 2528 InitLauncherControllerWithBrowser(); | 2526 InitLauncherControllerWithBrowser(); |
| 2529 | 2527 |
| 2530 // Add |extension3_| to the launcher and add two items. | 2528 // Add |extension3_| to the launcher and add two items. |
| 2531 GURL gmail = GURL("https://mail.google.com/mail/u"); | 2529 GURL gmail = GURL("https://mail.google.com/mail/u"); |
| 2532 ash::LauncherID gmail_id = model_->next_id(); | 2530 ash::ShelfID gmail_id = model_->next_id(); |
| 2533 extension_service_->AddExtension(extension3_.get()); | 2531 extension_service_->AddExtension(extension3_.get()); |
| 2534 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); | 2532 launcher_controller_->SetRefocusURLPatternForTest(gmail_id, GURL(gmail_url)); |
| 2535 base::string16 title1 = ASCIIToUTF16("Test1"); | 2533 base::string16 title1 = ASCIIToUTF16("Test1"); |
| 2536 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); | 2534 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title1); |
| 2537 chrome::NewTab(browser()); | 2535 chrome::NewTab(browser()); |
| 2538 base::string16 title2 = ASCIIToUTF16("Test2"); | 2536 base::string16 title2 = ASCIIToUTF16("Test2"); |
| 2539 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2); | 2537 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title2); |
| 2540 | 2538 |
| 2541 // Check that the menu is properly set. | 2539 // Check that the menu is properly set. |
| 2542 ash::LauncherItem item_gmail; | 2540 ash::ShelfItem item_gmail; |
| 2543 item_gmail.type = ash::TYPE_APP_SHORTCUT; | 2541 item_gmail.type = ash::TYPE_APP_SHORTCUT; |
| 2544 item_gmail.id = gmail_id; | 2542 item_gmail.id = gmail_id; |
| 2545 base::string16 two_menu_items[] = {title1, title2}; | 2543 base::string16 two_menu_items[] = {title1, title2}; |
| 2546 EXPECT_TRUE(CheckMenuCreation( | 2544 EXPECT_TRUE(CheckMenuCreation( |
| 2547 launcher_controller_.get(), item_gmail, 2, two_menu_items, false)); | 2545 launcher_controller_.get(), item_gmail, 2, two_menu_items, false)); |
| 2548 | 2546 |
| 2549 int tabs = browser()->tab_strip_model()->count(); | 2547 int tabs = browser()->tab_strip_model()->count(); |
| 2550 // Activate the proper tab through the menu item. | 2548 // Activate the proper tab through the menu item. |
| 2551 { | 2549 { |
| 2552 ChromeLauncherAppMenuItems items = | 2550 ChromeLauncherAppMenuItems items = |
| 2553 launcher_controller_->GetApplicationList(item_gmail, 0); | 2551 launcher_controller_->GetApplicationList(item_gmail, 0); |
| 2554 items[1]->Execute(0); | 2552 items[1]->Execute(0); |
| 2555 EXPECT_EQ(tabs, browser()->tab_strip_model()->count()); | 2553 EXPECT_EQ(tabs, browser()->tab_strip_model()->count()); |
| 2556 } | 2554 } |
| 2557 | 2555 |
| 2558 // Delete one tab through the menu item. | 2556 // Delete one tab through the menu item. |
| 2559 { | 2557 { |
| 2560 ChromeLauncherAppMenuItems items = | 2558 ChromeLauncherAppMenuItems items = |
| 2561 launcher_controller_->GetApplicationList(item_gmail, 0); | 2559 launcher_controller_->GetApplicationList(item_gmail, 0); |
| 2562 items[1]->Execute(ui::EF_SHIFT_DOWN); | 2560 items[1]->Execute(ui::EF_SHIFT_DOWN); |
| 2563 EXPECT_EQ(--tabs, browser()->tab_strip_model()->count()); | 2561 EXPECT_EQ(--tabs, browser()->tab_strip_model()->count()); |
| 2564 } | 2562 } |
| 2565 } | 2563 } |
| 2566 | 2564 |
| 2567 // Tests that panels create launcher items correctly | 2565 // Tests that panels create launcher items correctly |
| 2568 TEST_F(ChromeLauncherControllerTest, AppPanels) { | 2566 TEST_F(ChromeLauncherControllerTest, AppPanels) { |
| 2569 InitLauncherControllerWithBrowser(); | 2567 InitLauncherControllerWithBrowser(); |
| 2570 // App list and Browser shortcut LauncherItems are added. | 2568 // App list and Browser shortcut ShelfItems are added. |
| 2571 EXPECT_EQ(2, model_observer_->added()); | 2569 EXPECT_EQ(2, model_observer_->added()); |
| 2572 | 2570 |
| 2573 TestAppIconLoaderImpl* app_icon_loader = new TestAppIconLoaderImpl(); | 2571 TestAppIconLoaderImpl* app_icon_loader = new TestAppIconLoaderImpl(); |
| 2574 SetAppIconLoader(app_icon_loader); | 2572 SetAppIconLoader(app_icon_loader); |
| 2575 | 2573 |
| 2576 // Test adding an app panel | 2574 // Test adding an app panel |
| 2577 std::string app_id = extension1_->id(); | 2575 std::string app_id = extension1_->id(); |
| 2578 ShellWindowLauncherItemController* app_panel_controller = | 2576 ShellWindowLauncherItemController* app_panel_controller = |
| 2579 new ShellWindowLauncherItemController( | 2577 new ShellWindowLauncherItemController( |
| 2580 LauncherItemController::TYPE_APP_PANEL, | 2578 LauncherItemController::TYPE_APP_PANEL, |
| 2581 "id", | 2579 "id", |
| 2582 app_id, | 2580 app_id, |
| 2583 launcher_controller_.get()); | 2581 launcher_controller_.get()); |
| 2584 ash::LauncherID launcher_id1 = launcher_controller_->CreateAppLauncherItem( | 2582 ash::ShelfID shelf_id1 = launcher_controller_->CreateAppLauncherItem( |
| 2585 app_panel_controller, app_id, ash::STATUS_RUNNING); | 2583 app_panel_controller, app_id, ash::STATUS_RUNNING); |
| 2586 int panel_index = model_observer_->last_index(); | 2584 int panel_index = model_observer_->last_index(); |
| 2587 EXPECT_EQ(3, model_observer_->added()); | 2585 EXPECT_EQ(3, model_observer_->added()); |
| 2588 EXPECT_EQ(0, model_observer_->changed()); | 2586 EXPECT_EQ(0, model_observer_->changed()); |
| 2589 EXPECT_EQ(1, app_icon_loader->fetch_count()); | 2587 EXPECT_EQ(1, app_icon_loader->fetch_count()); |
| 2590 model_observer_->clear_counts(); | 2588 model_observer_->clear_counts(); |
| 2591 | 2589 |
| 2592 // App panels should have a separate identifier than the app id | 2590 // App panels should have a separate identifier than the app id |
| 2593 EXPECT_EQ(0, launcher_controller_->GetLauncherIDForAppID(app_id)); | 2591 EXPECT_EQ(0, launcher_controller_->GetShelfIDForAppID(app_id)); |
| 2594 | 2592 |
| 2595 // Setting the app image image should not change the panel if it set its icon | 2593 // Setting the app image image should not change the panel if it set its icon |
| 2596 app_panel_controller->set_image_set_by_controller(true); | 2594 app_panel_controller->set_image_set_by_controller(true); |
| 2597 gfx::ImageSkia image; | 2595 gfx::ImageSkia image; |
| 2598 launcher_controller_->SetAppImage(app_id, image); | 2596 launcher_controller_->SetAppImage(app_id, image); |
| 2599 EXPECT_EQ(0, model_observer_->changed()); | 2597 EXPECT_EQ(0, model_observer_->changed()); |
| 2600 model_observer_->clear_counts(); | 2598 model_observer_->clear_counts(); |
| 2601 | 2599 |
| 2602 // Add a second app panel and verify that it get the same index as the first | 2600 // Add a second app panel and verify that it get the same index as the first |
| 2603 // one had, being added to the left of the existing panel. | 2601 // one had, being added to the left of the existing panel. |
| 2604 ShellWindowLauncherItemController* app_panel_controller2 = | 2602 ShellWindowLauncherItemController* app_panel_controller2 = |
| 2605 new ShellWindowLauncherItemController( | 2603 new ShellWindowLauncherItemController( |
| 2606 LauncherItemController::TYPE_APP_PANEL, | 2604 LauncherItemController::TYPE_APP_PANEL, |
| 2607 "id", | 2605 "id", |
| 2608 app_id, | 2606 app_id, |
| 2609 launcher_controller_.get()); | 2607 launcher_controller_.get()); |
| 2610 | 2608 |
| 2611 ash::LauncherID launcher_id2 = launcher_controller_->CreateAppLauncherItem( | 2609 ash::ShelfID shelf_id2 = launcher_controller_->CreateAppLauncherItem( |
| 2612 app_panel_controller2, app_id, ash::STATUS_RUNNING); | 2610 app_panel_controller2, app_id, ash::STATUS_RUNNING); |
| 2613 EXPECT_EQ(panel_index, model_observer_->last_index()); | 2611 EXPECT_EQ(panel_index, model_observer_->last_index()); |
| 2614 EXPECT_EQ(1, model_observer_->added()); | 2612 EXPECT_EQ(1, model_observer_->added()); |
| 2615 model_observer_->clear_counts(); | 2613 model_observer_->clear_counts(); |
| 2616 | 2614 |
| 2617 launcher_controller_->CloseLauncherItem(launcher_id2); | 2615 launcher_controller_->CloseLauncherItem(shelf_id2); |
| 2618 launcher_controller_->CloseLauncherItem(launcher_id1); | 2616 launcher_controller_->CloseLauncherItem(shelf_id1); |
| 2619 EXPECT_EQ(2, model_observer_->removed()); | 2617 EXPECT_EQ(2, model_observer_->removed()); |
| 2620 } | 2618 } |
| 2621 | 2619 |
| 2622 // Tests that the Gmail extension matches more then the app itself claims with | 2620 // Tests that the Gmail extension matches more then the app itself claims with |
| 2623 // the manifest file. | 2621 // the manifest file. |
| 2624 TEST_F(ChromeLauncherControllerTest, GmailMatching) { | 2622 TEST_F(ChromeLauncherControllerTest, GmailMatching) { |
| 2625 InitLauncherControllerWithBrowser(); | 2623 InitLauncherControllerWithBrowser(); |
| 2626 | 2624 |
| 2627 // Create a Gmail browser tab. | 2625 // Create a Gmail browser tab. |
| 2628 chrome::NewTab(browser()); | 2626 chrome::NewTab(browser()); |
| 2629 base::string16 title = ASCIIToUTF16("Test"); | 2627 base::string16 title = ASCIIToUTF16("Test"); |
| 2630 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title); | 2628 NavigateAndCommitActiveTabWithTitle(browser(), GURL(gmail_url), title); |
| 2631 content::WebContents* content = | 2629 content::WebContents* content = |
| 2632 browser()->tab_strip_model()->GetActiveWebContents(); | 2630 browser()->tab_strip_model()->GetActiveWebContents(); |
| 2633 | 2631 |
| 2634 // Check that the launcher controller does not recognize the running app. | 2632 // Check that the launcher controller does not recognize the running app. |
| 2635 EXPECT_FALSE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); | 2633 EXPECT_FALSE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); |
| 2636 | 2634 |
| 2637 // Installing |extension3_| adds it to the launcher. | 2635 // Installing |extension3_| adds it to the launcher. |
| 2638 ash::LauncherID gmail_id = model_->next_id(); | 2636 ash::ShelfID gmail_id = model_->next_id(); |
| 2639 extension_service_->AddExtension(extension3_.get()); | 2637 extension_service_->AddExtension(extension3_.get()); |
| 2640 EXPECT_EQ(3, model_->item_count()); | 2638 EXPECT_EQ(3, model_->item_count()); |
| 2641 int gmail_index = model_->ItemIndexByID(gmail_id); | 2639 int gmail_index = model_->ItemIndexByID(gmail_id); |
| 2642 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[gmail_index].type); | 2640 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[gmail_index].type); |
| 2643 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 2641 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 2644 | 2642 |
| 2645 // Check that it is now handled. | 2643 // Check that it is now handled. |
| 2646 EXPECT_TRUE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); | 2644 EXPECT_TRUE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); |
| 2647 | 2645 |
| 2648 // Check also that the app has detected that properly. | 2646 // Check also that the app has detected that properly. |
| 2649 ash::LauncherItem item_gmail; | 2647 ash::ShelfItem item_gmail; |
| 2650 item_gmail.type = ash::TYPE_APP_SHORTCUT; | 2648 item_gmail.type = ash::TYPE_APP_SHORTCUT; |
| 2651 item_gmail.id = gmail_id; | 2649 item_gmail.id = gmail_id; |
| 2652 EXPECT_EQ(2U, launcher_controller_->GetApplicationList(item_gmail, 0).size()); | 2650 EXPECT_EQ(2U, launcher_controller_->GetApplicationList(item_gmail, 0).size()); |
| 2653 } | 2651 } |
| 2654 | 2652 |
| 2655 // Tests that the Gmail extension does not match the offline verison. | 2653 // Tests that the Gmail extension does not match the offline verison. |
| 2656 TEST_F(ChromeLauncherControllerTest, GmailOfflineMatching) { | 2654 TEST_F(ChromeLauncherControllerTest, GmailOfflineMatching) { |
| 2657 InitLauncherControllerWithBrowser(); | 2655 InitLauncherControllerWithBrowser(); |
| 2658 | 2656 |
| 2659 // Create a Gmail browser tab. | 2657 // Create a Gmail browser tab. |
| 2660 chrome::NewTab(browser()); | 2658 chrome::NewTab(browser()); |
| 2661 base::string16 title = ASCIIToUTF16("Test"); | 2659 base::string16 title = ASCIIToUTF16("Test"); |
| 2662 NavigateAndCommitActiveTabWithTitle(browser(), | 2660 NavigateAndCommitActiveTabWithTitle(browser(), |
| 2663 GURL(offline_gmail_url), | 2661 GURL(offline_gmail_url), |
| 2664 title); | 2662 title); |
| 2665 content::WebContents* content = | 2663 content::WebContents* content = |
| 2666 browser()->tab_strip_model()->GetActiveWebContents(); | 2664 browser()->tab_strip_model()->GetActiveWebContents(); |
| 2667 | 2665 |
| 2668 // Installing |extension3_| adds it to the launcher. | 2666 // Installing |extension3_| adds it to the launcher. |
| 2669 ash::LauncherID gmail_id = model_->next_id(); | 2667 ash::ShelfID gmail_id = model_->next_id(); |
| 2670 extension_service_->AddExtension(extension3_.get()); | 2668 extension_service_->AddExtension(extension3_.get()); |
| 2671 EXPECT_EQ(3, model_->item_count()); | 2669 EXPECT_EQ(3, model_->item_count()); |
| 2672 int gmail_index = model_->ItemIndexByID(gmail_id); | 2670 int gmail_index = model_->ItemIndexByID(gmail_id); |
| 2673 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[gmail_index].type); | 2671 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[gmail_index].type); |
| 2674 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 2672 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 2675 | 2673 |
| 2676 // The content should not be able to be handled by the app. | 2674 // The content should not be able to be handled by the app. |
| 2677 EXPECT_FALSE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); | 2675 EXPECT_FALSE(launcher_controller_->ContentCanBeHandledByGmailApp(content)); |
| 2678 } | 2676 } |
| 2679 | 2677 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2728 app_tab_helper = new TestAppTabHelperImpl; | 2726 app_tab_helper = new TestAppTabHelperImpl; |
| 2729 app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); | 2727 app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); |
| 2730 app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(1), "2"); | 2728 app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(1), "2"); |
| 2731 SetAppTabHelper(app_tab_helper); | 2729 SetAppTabHelper(app_tab_helper); |
| 2732 if (!ash::Shell::HasInstance()) { | 2730 if (!ash::Shell::HasInstance()) { |
| 2733 item_delegate_manager_ = new ash::ShelfItemDelegateManager(model_.get()); | 2731 item_delegate_manager_ = new ash::ShelfItemDelegateManager(model_.get()); |
| 2734 SetShelfItemDelegateManager(item_delegate_manager_); | 2732 SetShelfItemDelegateManager(item_delegate_manager_); |
| 2735 } | 2733 } |
| 2736 launcher_controller_->Init(); | 2734 launcher_controller_->Init(); |
| 2737 | 2735 |
| 2738 // Check LauncherItems are restored after resetting ChromeLauncherController. | 2736 // Check ShelfItems are restored after resetting ChromeLauncherController. |
| 2739 EXPECT_EQ(ash::TYPE_APP_LIST, model_->items()[0].type); | 2737 EXPECT_EQ(ash::TYPE_APP_LIST, model_->items()[0].type); |
| 2740 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[1].type); | 2738 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[1].type); |
| 2741 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[2].type); | 2739 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[2].type); |
| 2742 EXPECT_EQ(ash::TYPE_BROWSER_SHORTCUT, model_->items()[3].type); | 2740 EXPECT_EQ(ash::TYPE_BROWSER_SHORTCUT, model_->items()[3].type); |
| 2743 } | 2741 } |
| 2744 | 2742 |
| 2745 // Verifies pinned apps are persisted and restored. | 2743 // Verifies pinned apps are persisted and restored. |
| 2746 TEST_F(ChromeLauncherControllerTest, PersistPinned) { | 2744 TEST_F(ChromeLauncherControllerTest, PersistPinned) { |
| 2747 InitLauncherControllerWithBrowser(); | 2745 InitLauncherControllerWithBrowser(); |
| 2748 size_t initial_size = model_->items().size(); | 2746 size_t initial_size = model_->items().size(); |
| 2749 | 2747 |
| 2750 TabStripModel* tab_strip_model = browser()->tab_strip_model(); | 2748 TabStripModel* tab_strip_model = browser()->tab_strip_model(); |
| 2751 EXPECT_EQ(1, tab_strip_model->count()); | 2749 EXPECT_EQ(1, tab_strip_model->count()); |
| 2752 | 2750 |
| 2753 TestAppTabHelperImpl* app_tab_helper = new TestAppTabHelperImpl; | 2751 TestAppTabHelperImpl* app_tab_helper = new TestAppTabHelperImpl; |
| 2754 app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); | 2752 app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1"); |
| 2755 SetAppTabHelper(app_tab_helper); | 2753 SetAppTabHelper(app_tab_helper); |
| 2756 | 2754 |
| 2757 TestAppIconLoaderImpl* app_icon_loader = new TestAppIconLoaderImpl; | 2755 TestAppIconLoaderImpl* app_icon_loader = new TestAppIconLoaderImpl; |
| 2758 SetAppIconLoader(app_icon_loader); | 2756 SetAppIconLoader(app_icon_loader); |
| 2759 EXPECT_EQ(0, app_icon_loader->fetch_count()); | 2757 EXPECT_EQ(0, app_icon_loader->fetch_count()); |
| 2760 | 2758 |
| 2761 launcher_controller_->PinAppWithID("1"); | 2759 launcher_controller_->PinAppWithID("1"); |
| 2762 ash::LauncherID id = launcher_controller_->GetLauncherIDForAppID("1"); | 2760 ash::ShelfID id = launcher_controller_->GetShelfIDForAppID("1"); |
| 2763 int app_index = model_->ItemIndexByID(id); | 2761 int app_index = model_->ItemIndexByID(id); |
| 2764 EXPECT_EQ(1, app_icon_loader->fetch_count()); | 2762 EXPECT_EQ(1, app_icon_loader->fetch_count()); |
| 2765 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type); | 2763 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type); |
| 2766 EXPECT_TRUE(launcher_controller_->IsAppPinned("1")); | 2764 EXPECT_TRUE(launcher_controller_->IsAppPinned("1")); |
| 2767 EXPECT_FALSE(launcher_controller_->IsAppPinned("0")); | 2765 EXPECT_FALSE(launcher_controller_->IsAppPinned("0")); |
| 2768 EXPECT_EQ(initial_size + 1, model_->items().size()); | 2766 EXPECT_EQ(initial_size + 1, model_->items().size()); |
| 2769 | 2767 |
| 2770 launcher_controller_.reset(); | 2768 launcher_controller_.reset(); |
| 2771 if (!ash::Shell::HasInstance()) { | 2769 if (!ash::Shell::HasInstance()) { |
| 2772 delete item_delegate_manager_; | 2770 delete item_delegate_manager_; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 2793 | 2791 |
| 2794 EXPECT_EQ(1, app_icon_loader->fetch_count()); | 2792 EXPECT_EQ(1, app_icon_loader->fetch_count()); |
| 2795 ASSERT_EQ(initial_size + 1, model_->items().size()); | 2793 ASSERT_EQ(initial_size + 1, model_->items().size()); |
| 2796 EXPECT_TRUE(launcher_controller_->IsAppPinned("1")); | 2794 EXPECT_TRUE(launcher_controller_->IsAppPinned("1")); |
| 2797 EXPECT_FALSE(launcher_controller_->IsAppPinned("0")); | 2795 EXPECT_FALSE(launcher_controller_->IsAppPinned("0")); |
| 2798 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type); | 2796 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, model_->items()[app_index].type); |
| 2799 | 2797 |
| 2800 launcher_controller_->UnpinAppWithID("1"); | 2798 launcher_controller_->UnpinAppWithID("1"); |
| 2801 ASSERT_EQ(initial_size, model_->items().size()); | 2799 ASSERT_EQ(initial_size, model_->items().size()); |
| 2802 } | 2800 } |
| OLD | NEW |