Index: chrome/browser/ui/views/aura/launcher/launcher_updater_unittest.cc |
diff --git a/chrome/browser/ui/views/aura/launcher/launcher_updater_unittest.cc b/chrome/browser/ui/views/aura/launcher/launcher_updater_unittest.cc |
deleted file mode 100644 |
index d3741b1d86bfd9d21d72449626fcd9521d411f82..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/views/aura/launcher/launcher_updater_unittest.cc |
+++ /dev/null |
@@ -1,584 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/ui/views/aura/launcher/launcher_updater.h" |
- |
-#include <map> |
-#include <string> |
- |
-#include "ash/launcher/launcher_model.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
-#include "chrome/browser/ui/views/aura/launcher/chrome_launcher_delegate.h" |
-#include "chrome/browser/tabs/tab_strip_model.h" |
-#include "chrome/browser/tabs/test_tab_strip_model_delegate.h" |
-#include "chrome/test/base/chrome_render_view_host_test_harness.h" |
-#include "chrome/test/base/testing_profile.h" |
-#include "content/browser/tab_contents/test_tab_contents.h" |
-#include "content/test/test_browser_thread.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "third_party/skia/include/core/SkBitmap.h" |
-#include "ui/aura/window.h" |
- |
-namespace { |
- |
-// Test implementation of AppIconLoader. |
-class AppIconLoaderImpl : public ChromeLauncherDelegate::AppIconLoader { |
- public: |
- AppIconLoaderImpl() : fetch_count_(0) {} |
- virtual ~AppIconLoaderImpl() {} |
- |
- // Sets the id for the specified tab. The id is removed if Remove() is |
- // invoked. |
- void SetAppID(TabContentsWrapper* tab, const std::string& id) { |
- tab_id_map_[tab] = id; |
- } |
- |
- // Returns true if there is an id registered for |tab|. |
- bool HasAppID(TabContentsWrapper* tab) const { |
- return tab_id_map_.find(tab) != tab_id_map_.end(); |
- } |
- |
- // Returns the number of times FetchImage() has been invoked and resets the |
- // count to 0. |
- int GetAndClearFetchCount() { |
- int value = fetch_count_; |
- fetch_count_ = 0; |
- return value; |
- } |
- |
- // AppIconLoader implementation: |
- virtual std::string GetAppID(TabContentsWrapper* tab) OVERRIDE { |
- return tab_id_map_.find(tab) != tab_id_map_.end() ? tab_id_map_[tab] : |
- std::string(); |
- } |
- |
- virtual bool IsValidID(const std::string& id) OVERRIDE { |
- for (TabToStringMap::const_iterator i = tab_id_map_.begin(); |
- i != tab_id_map_.end(); ++i) { |
- if (i->second == id) |
- return true; |
- } |
- return false; |
- } |
- |
- virtual void FetchImage(const std::string& id) OVERRIDE { |
- fetch_count_++; |
- } |
- |
- private: |
- typedef std::map<TabContentsWrapper*, std::string> TabToStringMap; |
- |
- TabToStringMap tab_id_map_; |
- |
- int fetch_count_; |
- |
- DISALLOW_COPY_AND_ASSIGN(AppIconLoaderImpl); |
-}; |
- |
-// Contains all the objects needed to create a LauncherUpdater. |
-struct State { |
- State(Profile* profile, |
- ChromeLauncherDelegate* launcher_delegate, |
- const std::string& app_id, |
- LauncherUpdater::Type launcher_type) |
- : window(NULL), |
- tab_strip(&tab_strip_delegate, profile), |
- updater(&window, &tab_strip, launcher_delegate, launcher_type, |
- app_id) { |
- updater.Init(); |
- } |
- |
- aura::Window window; |
- TestTabStripModelDelegate tab_strip_delegate; |
- TabStripModel tab_strip; |
- LauncherUpdater updater; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(State); |
-}; |
- |
-} // namespace |
- |
-class LauncherUpdaterTest : public ChromeRenderViewHostTestHarness { |
- public: |
- LauncherUpdaterTest() |
- : browser_thread_(content::BrowserThread::UI, &message_loop_) { |
- } |
- |
- virtual void SetUp() OVERRIDE { |
- ChromeRenderViewHostTestHarness::SetUp(); |
- launcher_model_.reset(new ash::LauncherModel); |
- launcher_delegate_.reset( |
- new ChromeLauncherDelegate(profile(), launcher_model_.get())); |
- app_icon_loader_ = new AppIconLoaderImpl; |
- launcher_delegate_->SetAppIconLoaderForTest(app_icon_loader_); |
- launcher_delegate_->Init(); |
- } |
- |
- protected: |
- LauncherUpdater* GetUpdaterByID(ash::LauncherID id) const { |
- return launcher_delegate_->id_to_item_map_[id].updater; |
- } |
- |
- const std::string& GetAppID(ash::LauncherID id) const { |
- return launcher_delegate_->id_to_item_map_[id].app_id; |
- } |
- |
- void ResetAppIconLoader() { |
- launcher_delegate_->SetAppIconLoaderForTest(app_icon_loader_); |
- } |
- |
- void UnpinAppsWithID(const std::string& app_id) { |
- launcher_delegate_->UnpinAppsWithID(app_id); |
- } |
- |
- scoped_ptr<ash::LauncherModel> launcher_model_; |
- scoped_ptr<ChromeLauncherDelegate> launcher_delegate_; |
- |
- // Owned by LauncherUpdater. |
- AppIconLoaderImpl* app_icon_loader_; |
- |
- private: |
- content::TestBrowserThread browser_thread_; |
- |
- DISALLOW_COPY_AND_ASSIGN(LauncherUpdaterTest); |
-}; |
- |
-// Verifies a new launcher item is added for TYPE_TABBED. |
-TEST_F(LauncherUpdaterTest, TabbedSetup) { |
- size_t initial_size = launcher_model_->items().size(); |
- { |
- TabContentsWrapper wrapper(CreateTestTabContents()); |
- State state(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- // Since the type is tabbed and there is nothing in the tabstrip an item |
- // should not have been added. |
- EXPECT_EQ(initial_size, launcher_model_->items().size()); |
- |
- // Add a tab. |
- state.tab_strip.InsertTabContentsAt(0, &wrapper, TabStripModel::ADD_NONE); |
- |
- // There should be one more item. |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- // New item should be added at the end. |
- EXPECT_EQ(ash::TYPE_TABBED, launcher_model_->items()[initial_size].type); |
- } |
- // Deleting the LauncherUpdater should have removed the item. |
- ASSERT_EQ(initial_size, launcher_model_->items().size()); |
- |
- // Do the same, but this time add the tab first. |
- { |
- TabContentsWrapper wrapper(CreateTestTabContents()); |
- |
- TestTabStripModelDelegate tab_strip_delegate; |
- TabStripModel tab_strip(&tab_strip_delegate, profile()); |
- tab_strip.InsertTabContentsAt(0, &wrapper, TabStripModel::ADD_NONE); |
- LauncherUpdater updater(NULL, &tab_strip, launcher_delegate_.get(), |
- LauncherUpdater::TYPE_TABBED, std::string()); |
- updater.Init(); |
- |
- // There should be one more item. |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- // New item should be added at the end. |
- EXPECT_EQ(ash::TYPE_TABBED, launcher_model_->items()[initial_size].type); |
- } |
-} |
- |
-// Verifies a new launcher item is added for TYPE_APP. |
-TEST_F(LauncherUpdaterTest, AppSetup) { |
- size_t initial_size = launcher_model_->items().size(); |
- { |
- State state(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_APP); |
- // There should be one more item. |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- // New item should be added at the end. |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size].type); |
- } |
- // Deleting the LauncherUpdater should have removed the item. |
- ASSERT_EQ(initial_size, launcher_model_->items().size()); |
-} |
- |
-// Various assertions when adding/removing a tab that has an app associated with |
-// it. |
-TEST_F(LauncherUpdaterTest, TabbedWithApp) { |
- size_t initial_size = launcher_model_->items().size(); |
- { |
- TabContentsWrapper initial_tab(CreateTestTabContents()); |
- State state(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- // Add a tab. |
- state.tab_strip.InsertTabContentsAt(0, &initial_tab, |
- TabStripModel::ADD_NONE); |
- |
- // There should be one more item. |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- // New item should be added at the end. |
- EXPECT_EQ(ash::TYPE_TABBED, launcher_model_->items()[initial_size].type); |
- ash::LauncherID tabbed_id = launcher_model_->items()[initial_size].id; |
- |
- // Add another tab, configure it so that the launcher thinks it's an app. |
- TabContentsWrapper app_tab(CreateTestTabContents()); |
- app_icon_loader_->SetAppID(&app_tab, "1"); |
- state.tab_strip.InsertTabContentsAt(1, &app_tab, TabStripModel::ADD_NONE); |
- |
- // There should be one more item. |
- ASSERT_EQ(initial_size + 2, launcher_model_->items().size()); |
- // New item should be added at the end. |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size + 1].type); |
- |
- // Remove the first tab, this should trigger removing the tabbed item. |
- state.tab_strip.DetachTabContentsAt(0); |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size + 1].type); |
- EXPECT_EQ(-1, launcher_model_->ItemIndexByID(tabbed_id)); |
- |
- // Add back the tab, which triggers creating the tabbed item. |
- state.tab_strip.InsertTabContentsAt(0, &initial_tab, |
- TabStripModel::ADD_NONE); |
- ASSERT_EQ(initial_size + 2, launcher_model_->items().size()); |
- EXPECT_EQ(ash::TYPE_TABBED, |
- launcher_model_->items()[initial_size].type); |
- |
- } |
- // Deleting the LauncherUpdater should have removed the item. |
- ASSERT_EQ(initial_size, launcher_model_->items().size()); |
-} |
- |
-TEST_F(LauncherUpdaterTest, TabbedWithAppOnCreate) { |
- size_t initial_size = launcher_model_->items().size(); |
- aura::Window window(NULL); |
- TestTabStripModelDelegate tab_strip_delegate; |
- TabStripModel tab_strip(&tab_strip_delegate, profile()); |
- TabContentsWrapper app_tab(CreateTestTabContents()); |
- app_icon_loader_->SetAppID(&app_tab, "1"); |
- tab_strip.InsertTabContentsAt(0, &app_tab, TabStripModel::ADD_NONE); |
- LauncherUpdater updater(&window, &tab_strip, launcher_delegate_.get(), |
- LauncherUpdater::TYPE_TABBED, std::string()); |
- updater.Init(); |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size].type); |
-} |
- |
-// Verifies transitioning from a normal tab to app tab and back works. |
-TEST_F(LauncherUpdaterTest, ChangeToApp) { |
- size_t initial_size = launcher_model_->items().size(); |
- { |
- TabContentsWrapper initial_tab(CreateTestTabContents()); |
- State state(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- // Add a tab. |
- state.tab_strip.InsertTabContentsAt(0, &initial_tab, |
- TabStripModel::ADD_NONE); |
- |
- // There should be one more item. |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- // New item should be added at the end. |
- EXPECT_EQ(ash::TYPE_TABBED, launcher_model_->items()[initial_size].type); |
- ash::LauncherID tabbed_id = launcher_model_->items()[initial_size].id; |
- |
- app_icon_loader_->SetAppID(&initial_tab, "1"); |
- // Triggers LauncherUpdater seeing the tab changed to an app. |
- state.updater.TabChangedAt(&initial_tab, 0, TabStripModelObserver::ALL); |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size].type); |
- EXPECT_EQ(tabbed_id, launcher_model_->items()[initial_size].id); |
- |
- // Change back to a non-app and make sure the tabbed item is added back. |
- app_icon_loader_->SetAppID(&initial_tab, std::string()); |
- state.updater.TabChangedAt(&initial_tab, 0, TabStripModelObserver::ALL); |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- EXPECT_EQ(ash::TYPE_TABBED, launcher_model_->items()[initial_size].type); |
- EXPECT_EQ(tabbed_id, launcher_model_->items()[initial_size].id); |
- } |
- // Deleting the LauncherUpdater should have removed the item. |
- ASSERT_EQ(initial_size, launcher_model_->items().size()); |
-} |
- |
-// Verifies AppIconLoader is queried appropriately. |
-TEST_F(LauncherUpdaterTest, QueryAppIconLoader) { |
- size_t initial_size = launcher_model_->items().size(); |
- { |
- TabContentsWrapper initial_tab(CreateTestTabContents()); |
- State state(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- // Configure the tab as an app. |
- app_icon_loader_->SetAppID(&initial_tab, "1"); |
- // Add a tab. |
- state.tab_strip.InsertTabContentsAt(0, &initial_tab, |
- TabStripModel::ADD_NONE); |
- // AppIconLoader should have been queried. |
- EXPECT_GT(app_icon_loader_->GetAndClearFetchCount(), 0); |
- // Remove the tab. |
- state.tab_strip.DetachTabContentsAt(0); |
- } |
- // Deleting the LauncherUpdater should have removed the item. |
- ASSERT_EQ(initial_size, launcher_model_->items().size()); |
-} |
- |
-// Verifies SetAppImage works. |
-TEST_F(LauncherUpdaterTest, SetAppImage) { |
- size_t initial_size = launcher_model_->items().size(); |
- TabContentsWrapper initial_tab(CreateTestTabContents()); |
- State state(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- // Configure the tab as an app. |
- app_icon_loader_->SetAppID(&initial_tab, "1"); |
- // Add a tab. |
- state.tab_strip.InsertTabContentsAt(0, &initial_tab, |
- TabStripModel::ADD_NONE); |
- SkBitmap image; |
- image.setConfig(SkBitmap::kARGB_8888_Config, 2, 3); |
- image.allocPixels(); |
- launcher_delegate_->SetAppImage("1", &image); |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- EXPECT_EQ(2, launcher_model_->items()[initial_size].image.width()); |
- EXPECT_EQ(3, launcher_model_->items()[initial_size].image.height()); |
-} |
- |
-// Verifies app tabs are added right after the existing tabbed item. |
-TEST_F(LauncherUpdaterTest, AddAppAfterTabbed) { |
- size_t initial_size = launcher_model_->items().size(); |
- TabContentsWrapper tab1(CreateTestTabContents()); |
- State state1(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- // Add a tab. |
- state1.tab_strip.InsertTabContentsAt(0, &tab1, TabStripModel::ADD_NONE); |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- ash::LauncherID tabbed_id = launcher_model_->items()[initial_size].id; |
- |
- // Create another LauncherUpdater. |
- State state2(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_APP); |
- |
- // Should be two extra items. |
- EXPECT_EQ(initial_size + 2, launcher_model_->items().size()); |
- |
- // Add an app tab to state1, it should go after the item for state1 but |
- // before the item for state2. |
- int next_id = launcher_model_->next_id(); |
- TabContentsWrapper app_tab(CreateTestTabContents()); |
- app_icon_loader_->SetAppID(&app_tab, "1"); |
- state1.tab_strip.InsertTabContentsAt(1, &app_tab, TabStripModel::ADD_NONE); |
- |
- ASSERT_EQ(initial_size + 3, launcher_model_->items().size()); |
- EXPECT_EQ(next_id, launcher_model_->items()[initial_size + 1].id); |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size + 1].type); |
- |
- // Remove the non-app tab. |
- state1.tab_strip.DetachTabContentsAt(0); |
- // Should have removed one item. |
- EXPECT_EQ(initial_size + 2, launcher_model_->items().size()); |
- EXPECT_EQ(-1, launcher_model_->ItemIndexByID(tabbed_id)); |
- next_id = launcher_model_->next_id(); |
- // Add the non-app tab back. It should go to the original position (but get a |
- // new id). |
- state1.tab_strip.InsertTabContentsAt(0, &tab1, TabStripModel::ADD_NONE); |
- ASSERT_EQ(initial_size + 3, launcher_model_->items().size()); |
- EXPECT_EQ(next_id, launcher_model_->items()[initial_size].id); |
-} |
- |
-// Verifies GetWindowAndTabByID works. |
-TEST_F(LauncherUpdaterTest, GetUpdaterByID) { |
- size_t initial_size = launcher_model_->items().size(); |
- TabContentsWrapper tab1(CreateTestTabContents()); |
- TabContentsWrapper tab2(CreateTestTabContents()); |
- TabContentsWrapper tab3(CreateTestTabContents()); |
- |
- // Create 3 states: |
- // . tabbed with an app tab and normal tab. |
- // . tabbed with a normal tab. |
- // . app. |
- State state1(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- state1.tab_strip.InsertTabContentsAt(0, &tab1, TabStripModel::ADD_NONE); |
- app_icon_loader_->SetAppID(&tab2, "1"); |
- state1.tab_strip.InsertTabContentsAt(0, &tab2, TabStripModel::ADD_NONE); |
- State state2(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- state2.tab_strip.InsertTabContentsAt(0, &tab3, TabStripModel::ADD_NONE); |
- State state3(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_APP); |
- ASSERT_EQ(initial_size + 4, launcher_model_->items().size()); |
- |
- // Tabbed item from first state. |
- ash::LauncherID id = launcher_model_->items()[initial_size].id; |
- LauncherUpdater* updater = GetUpdaterByID(id); |
- EXPECT_EQ(&(state1.updater), updater); |
- ASSERT_TRUE(updater); |
- EXPECT_TRUE(updater->GetTab(id) == NULL); |
- |
- // App item from first state. |
- id = launcher_model_->items()[initial_size + 1].id; |
- updater = GetUpdaterByID(id); |
- EXPECT_EQ(&(state1.updater), updater); |
- ASSERT_TRUE(updater); |
- EXPECT_TRUE(updater->GetTab(id) == &tab2); |
- |
- // Tabbed item from second state. |
- id = launcher_model_->items()[initial_size + 2].id; |
- updater = GetUpdaterByID(id); |
- EXPECT_EQ(&(state2.updater), updater); |
- ASSERT_TRUE(updater); |
- EXPECT_TRUE(updater->GetTab(id) == NULL); |
- |
- // App item. |
- id = launcher_model_->items()[initial_size + 3].id; |
- updater = GetUpdaterByID(id); |
- EXPECT_EQ(&(state3.updater), updater); |
- ASSERT_TRUE(updater); |
- EXPECT_TRUE(updater->GetTab(id) == NULL); |
-} |
- |
-// Various assertions around pinning. In particular verifies destroying a |
-// LauncherUpdater doesn't remove the entry for a pinned app. |
-TEST_F(LauncherUpdaterTest, Pin) { |
- size_t initial_size = launcher_model_->items().size(); |
- TabContentsWrapper tab1(CreateTestTabContents()); |
- TabContentsWrapper tab2(CreateTestTabContents()); |
- TabContentsWrapper tab3(CreateTestTabContents()); |
- |
- ash::LauncherID id; |
- { |
- State state1(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- app_icon_loader_->SetAppID(&tab1, "1"); |
- state1.tab_strip.InsertTabContentsAt(0, &tab1, TabStripModel::ADD_NONE); |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- id = launcher_model_->items()[initial_size].id; |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size].type); |
- // Shouldn't be pinned. |
- EXPECT_FALSE(launcher_delegate_->IsPinned(id)); |
- launcher_delegate_->Pin(id); |
- EXPECT_TRUE(launcher_delegate_->IsPinned(id)); |
- } |
- |
- // Should still have the item. |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- EXPECT_TRUE(launcher_delegate_->IsPinned(id)); |
- EXPECT_TRUE(GetUpdaterByID(id) == NULL); |
- |
- // Create another app tab, it shouldn't get the same id. |
- { |
- State state1(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- app_icon_loader_->SetAppID(&tab2, "2"); |
- state1.tab_strip.InsertTabContentsAt(0, &tab2, TabStripModel::ADD_NONE); |
- ASSERT_EQ(initial_size + 2, launcher_model_->items().size()); |
- ash::LauncherID new_id = launcher_model_->items()[initial_size + 1].id; |
- EXPECT_NE(id, new_id); |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size + 1].type); |
- // Shouldn't be pinned. |
- EXPECT_FALSE(launcher_delegate_->IsPinned(new_id)); |
- // But existing one should still be pinned. |
- EXPECT_TRUE(launcher_delegate_->IsPinned(id)); |
- } |
- |
- // Add it back and make sure we don't get another entry. |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- { |
- State state1(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- app_icon_loader_->SetAppID(&tab1, "1"); |
- state1.tab_strip.InsertTabContentsAt(0, &tab1, TabStripModel::ADD_NONE); |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- ash::LauncherID new_id = launcher_model_->items()[initial_size].id; |
- EXPECT_EQ(id, new_id); |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size].type); |
- EXPECT_TRUE(launcher_delegate_->IsPinned(id)); |
- EXPECT_EQ(&(state1.updater), GetUpdaterByID(id)); |
- |
- // Add another tab. |
- state1.tab_strip.InsertTabContentsAt(0, &tab3, TabStripModel::ADD_NONE); |
- ASSERT_EQ(initial_size + 2, launcher_model_->items().size()); |
- new_id = launcher_model_->items()[initial_size].id; |
- EXPECT_NE(id, new_id); |
- EXPECT_EQ(ash::TYPE_TABBED, launcher_model_->items()[initial_size].type); |
- EXPECT_EQ(&(state1.updater), GetUpdaterByID(new_id)); |
- } |
- |
- // Add it back and make sure we don't get another entry. |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- { |
- State state1(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- state1.tab_strip.InsertTabContentsAt(0, &tab3, TabStripModel::ADD_NONE); |
- ASSERT_EQ(initial_size + 2, launcher_model_->items().size()); |
- ash::LauncherID new_id = launcher_model_->items()[initial_size + 1].id; |
- EXPECT_NE(id, new_id); |
- EXPECT_EQ(ash::TYPE_TABBED, |
- launcher_model_->items()[initial_size + 1].type); |
- EXPECT_TRUE(GetUpdaterByID(id) == NULL); |
- EXPECT_EQ(&(state1.updater), GetUpdaterByID(new_id)); |
- |
- // Add the app tab. |
- state1.tab_strip.InsertTabContentsAt(0, &tab1, TabStripModel::ADD_NONE); |
- ASSERT_EQ(initial_size + 2, launcher_model_->items().size()); |
- new_id = launcher_model_->items()[initial_size].id; |
- EXPECT_EQ(id, new_id); |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size].type); |
- EXPECT_EQ(&(state1.updater), GetUpdaterByID(new_id)); |
- } |
-} |
- |
-// Verifies pinned apps are persisted and restored. |
-TEST_F(LauncherUpdaterTest, PersistPinned) { |
- size_t initial_size = launcher_model_->items().size(); |
- TabContentsWrapper tab1(CreateTestTabContents()); |
- |
- app_icon_loader_->SetAppID(&tab1, "1"); |
- app_icon_loader_->SetAppID(NULL, "2"); |
- { |
- State state1(profile(), launcher_delegate_.get(), std::string(), |
- LauncherUpdater::TYPE_TABBED); |
- state1.tab_strip.InsertTabContentsAt(0, &tab1, TabStripModel::ADD_NONE); |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- ash::LauncherID id = launcher_model_->items()[initial_size].id; |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size].type); |
- // Shouldn't be pinned. |
- EXPECT_FALSE(launcher_delegate_->IsPinned(id)); |
- launcher_delegate_->Pin(id); |
- EXPECT_TRUE(launcher_delegate_->IsPinned(id)); |
- |
- // Create an app window. |
- State state2(profile(), launcher_delegate_.get(), "2", |
- LauncherUpdater::TYPE_APP); |
- ASSERT_EQ(initial_size + 2, launcher_model_->items().size()); |
- ash::LauncherID id2 = launcher_model_->items()[initial_size + 1].id; |
- EXPECT_NE(id, id2); |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size + 1].type); |
- launcher_delegate_->Pin(id2); |
- EXPECT_TRUE(launcher_delegate_->IsPinned(id2)); |
- } |
- |
- launcher_delegate_.reset(NULL); |
- ASSERT_EQ(initial_size, launcher_model_->items().size()); |
- |
- launcher_delegate_.reset( |
- new ChromeLauncherDelegate(profile(), launcher_model_.get())); |
- app_icon_loader_ = new AppIconLoaderImpl; |
- app_icon_loader_->SetAppID(&tab1, "1"); |
- app_icon_loader_->SetAppID(NULL, "2"); |
- ResetAppIconLoader(); |
- launcher_delegate_->Init(); |
- ASSERT_EQ(initial_size + 2, launcher_model_->items().size()); |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size].type); |
- ash::LauncherID id = launcher_model_->items()[initial_size].id; |
- EXPECT_EQ("1", GetAppID(id)); |
- EXPECT_EQ(ChromeLauncherDelegate::APP_TYPE_TAB, |
- launcher_delegate_->GetAppType(id)); |
- EXPECT_TRUE(launcher_delegate_->IsPinned(id)); |
- EXPECT_EQ(ash::TYPE_APP, launcher_model_->items()[initial_size + 1].type); |
- ash::LauncherID id2 = launcher_model_->items()[initial_size + 1].id; |
- EXPECT_EQ("2", GetAppID(id2)); |
- EXPECT_EQ(ChromeLauncherDelegate::APP_TYPE_WINDOW, |
- launcher_delegate_->GetAppType(id2)); |
- EXPECT_TRUE(launcher_delegate_->IsPinned(id2)); |
- |
- UnpinAppsWithID("1"); |
- ASSERT_EQ(initial_size + 1, launcher_model_->items().size()); |
- ash::LauncherID id3 = launcher_model_->items()[initial_size].id; |
- EXPECT_EQ(id2, id3); |
-} |