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

Unified Diff: chrome/browser/ui/views/aura/launcher/launcher_updater_unittest.cc

Issue 9570044: Rename chrome/browser/ui/views/{aura => ash}/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
-}

Powered by Google App Engine
This is Rietveld 408576698