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

Unified Diff: chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc

Issue 23606016: Refactor LauncherItemController and LauncherItemDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix for unittest.. Created 7 years, 2 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/ash/launcher/chrome_launcher_controller_unittest.cc
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc
index 77b9d5e1902f411b0f1a861aa08dd7347c305a52..855fb1d67991acb5a10b99ede308c15e2926dca2 100644
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc
@@ -9,9 +9,11 @@
#include <vector>
#include "ash/ash_switches.h"
+#include "ash/launcher/launcher_item_delegate_manager.h"
#include "ash/launcher/launcher_model.h"
#include "ash/launcher/launcher_model_observer.h"
#include "ash/shell.h"
+#include "ash/test/launcher_item_delegate_manager_test_api.h"
#include "base/command_line.h"
#include "base/compiler_specific.h"
#include "base/files/file_path.h"
@@ -22,6 +24,7 @@
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/test_extension_system.h"
#include "chrome/browser/ui/ash/chrome_launcher_prefs.h"
+#include "chrome/browser/ui/ash/launcher/launcher_application_menu_item_model.h"
#include "chrome/browser/ui/ash/launcher/launcher_item_controller.h"
#include "chrome/browser/ui/ash/launcher/shell_window_launcher_item_controller.h"
#include "chrome/browser/ui/browser.h"
@@ -194,7 +197,6 @@ class TestV2AppLauncherItemController : public LauncherItemController {
virtual ~TestV2AppLauncherItemController() {}
// Override for LauncherItemController:
- virtual string16 GetTitle() OVERRIDE { return string16(); }
virtual bool IsCurrentlyShownInWindow(aura::Window* window) const OVERRIDE {
return true;
}
@@ -203,8 +205,8 @@ class TestV2AppLauncherItemController : public LauncherItemController {
virtual void Launch(ash::LaunchSource source, int event_flags) OVERRIDE {}
virtual void Activate(ash::LaunchSource source) OVERRIDE {}
virtual void Close() OVERRIDE {}
- virtual void Clicked(const ui::Event& event) OVERRIDE {}
- virtual void OnRemoved() OVERRIDE {}
+ virtual void ItemSelected(const ui::Event& event) OVERRIDE {}
+ virtual string16 GetTitle() OVERRIDE { return string16(); }
virtual ChromeLauncherAppMenuItems GetApplicationList(
int event_flags) OVERRIDE {
ChromeLauncherAppMenuItems items;
@@ -212,6 +214,12 @@ class TestV2AppLauncherItemController : public LauncherItemController {
items.push_back(new ChromeLauncherAppMenuItem(string16(), NULL, false));
return items.Pass();
}
+ virtual ui::MenuModel* CreateContextMenu(
+ aura::RootWindow* root_window) OVERRIDE { return NULL; }
+ virtual ash::LauncherMenuModel* CreateApplicationMenu(
+ int event_flags) OVERRIDE { return NULL; }
+ virtual bool IsDraggable() OVERRIDE { return false; }
+ virtual bool ShouldShowTooltip() OVERRIDE { return false; }
private:
@@ -222,7 +230,8 @@ class TestV2AppLauncherItemController : public LauncherItemController {
class ChromeLauncherControllerTest : public BrowserWithTestWindowTest {
protected:
- ChromeLauncherControllerTest() : extension_service_(NULL) {
+ ChromeLauncherControllerTest() : test_controller_(NULL),
+ extension_service_(NULL) {
SetHostDesktopType(chrome::HOST_DESKTOP_TYPE_ASH);
}
@@ -236,6 +245,14 @@ class ChromeLauncherControllerTest : public BrowserWithTestWindowTest {
model_observer_.reset(new TestLauncherModelObserver);
model_->AddObserver(model_observer_.get());
+ if (ash::Shell::HasInstance()) {
+ item_delegate_manager_ =
+ ash::Shell::GetInstance()->launcher_item_delegate_manager();
+ } else {
+ item_delegate_manager_ =
+ new ash::LauncherItemDelegateManager(model_.get());
+ }
+
DictionaryValue manifest;
manifest.SetString(extensions::manifest_keys::kName,
"launcher controller test extension");
@@ -309,7 +326,7 @@ class ChromeLauncherControllerTest : public BrowserWithTestWindowTest {
// Creates a running V2 app (not pinned) of type |app_id|.
virtual void CreateRunningV2App(const std::string& app_id) {
- DCHECK(!test_controller_.get());
+ DCHECK(!test_controller_);
ash::LauncherID id =
launcher_controller_->CreateAppShortcutLauncherItemWithType(
app_id,
@@ -317,9 +334,9 @@ class ChromeLauncherControllerTest : public BrowserWithTestWindowTest {
ash::TYPE_PLATFORM_APP);
DCHECK(id);
// Change the created launcher controller into a V2 app controller.
- test_controller_.reset(new TestV2AppLauncherItemController(app_id,
- launcher_controller_.get()));
- launcher_controller_->SetItemController(id, test_controller_.get());
+ test_controller_ = new TestV2AppLauncherItemController(app_id,
+ launcher_controller_.get());
+ launcher_controller_->SetItemController(id, test_controller_);
}
// Sets the stage for a multi user test.
@@ -361,13 +378,14 @@ class ChromeLauncherControllerTest : public BrowserWithTestWindowTest {
}
virtual void TearDown() OVERRIDE {
+ if (!ash::Shell::HasInstance())
+ delete item_delegate_manager_;
model_->RemoveObserver(model_observer_.get());
model_observer_.reset();
launcher_controller_.reset();
model_.reset();
BrowserWithTestWindowTest::TearDown();
- test_controller_.reset();
}
void AddAppListLauncherItem() {
@@ -380,6 +398,8 @@ class ChromeLauncherControllerTest : public BrowserWithTestWindowTest {
AddAppListLauncherItem();
launcher_controller_.reset(
new ChromeLauncherController(profile(), model_.get()));
+ if (!ash::Shell::HasInstance())
+ SetLauncherItemDelegateManager(item_delegate_manager_);
launcher_controller_->Init();
}
@@ -397,6 +417,11 @@ class ChromeLauncherControllerTest : public BrowserWithTestWindowTest {
launcher_controller_->SetAppTabHelperForTest(helper);
}
+ void SetLauncherItemDelegateManager(
+ ash::LauncherItemDelegateManager* manager) {
+ launcher_controller_->SetLauncherItemDelegateManagerForTest(manager);
+ }
+
void InsertPrefValue(base::ListValue* pref_value,
int index,
const std::string& extension_id) {
@@ -537,10 +562,14 @@ class ChromeLauncherControllerTest : public BrowserWithTestWindowTest {
scoped_ptr<ChromeLauncherController> launcher_controller_;
scoped_ptr<TestLauncherModelObserver> model_observer_;
scoped_ptr<ash::LauncherModel> model_;
- scoped_ptr<TestV2AppLauncherItemController> test_controller_;
+
+ // |item_delegate_manager_| owns |test_controller_|.
+ LauncherItemController* test_controller_;
ExtensionService* extension_service_;
+ ash::LauncherItemDelegateManager* item_delegate_manager_;
+
DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerTest);
};
@@ -1503,7 +1532,8 @@ bool CheckMenuCreation(ChromeLauncherController* controller,
}
scoped_ptr<ash::LauncherMenuModel> menu(
- controller->CreateApplicationMenu(item, 0));
+ new LauncherApplicationMenuItemModel(
+ controller->GetApplicationList(item, 0)));
// The first element in the menu is a spacing separator. On some systems
// (e.g. Windows) such things do not exist. As such we check the existence
// and adjust dynamically.
@@ -1667,7 +1697,8 @@ TEST_F(ChromeLauncherControllerTest, V1AppMenuExecution) {
// item is per definition already the active tab).
{
scoped_ptr<ash::LauncherMenuModel> menu(
- launcher_controller_->CreateApplicationMenu(item_gmail, 0));
+ new LauncherApplicationMenuItemModel(
+ launcher_controller_->GetApplicationList(item_gmail, 0)));
// The first element in the menu is a spacing separator. On some systems
// (e.g. Windows) such things do not exist. As such we check the existence
// and adjust dynamically.
@@ -1680,7 +1711,8 @@ TEST_F(ChromeLauncherControllerTest, V1AppMenuExecution) {
// Execute the first item.
{
scoped_ptr<ash::LauncherMenuModel> menu(
- launcher_controller_->CreateApplicationMenu(item_gmail, 0));
+ new LauncherApplicationMenuItemModel(
+ launcher_controller_->GetApplicationList(item_gmail, 0)));
int first_item =
(menu->GetTypeAt(0) == ui::MenuModel::TYPE_SEPARATOR) ? 1 : 0;
menu->ActivatedAt(first_item + 2);
@@ -1741,11 +1773,14 @@ TEST_F(ChromeLauncherControllerTest, AppPanels) {
// Test adding an app panel
std::string app_id = extension1_->id();
- ShellWindowLauncherItemController app_panel_controller(
- LauncherItemController::TYPE_APP_PANEL, "id", app_id,
- launcher_controller_.get());
+ ShellWindowLauncherItemController* app_panel_controller =
+ new ShellWindowLauncherItemController(
+ LauncherItemController::TYPE_APP_PANEL,
+ "id",
+ app_id,
+ launcher_controller_.get());
ash::LauncherID launcher_id1 = launcher_controller_->CreateAppLauncherItem(
- &app_panel_controller, app_id, ash::STATUS_RUNNING);
+ app_panel_controller, app_id, ash::STATUS_RUNNING);
int panel_index = model_observer_->last_index();
EXPECT_EQ(3, model_observer_->added());
EXPECT_EQ(0, model_observer_->changed());
@@ -1756,7 +1791,7 @@ TEST_F(ChromeLauncherControllerTest, AppPanels) {
EXPECT_EQ(0, launcher_controller_->GetLauncherIDForAppID(app_id));
// Setting the app image image should not change the panel if it set its icon
- app_panel_controller.set_image_set_by_controller(true);
+ app_panel_controller->set_image_set_by_controller(true);
gfx::ImageSkia image;
launcher_controller_->SetAppImage(app_id, image);
EXPECT_EQ(0, model_observer_->changed());
@@ -1764,8 +1799,15 @@ TEST_F(ChromeLauncherControllerTest, AppPanels) {
// Add a second app panel and verify that it get the same index as the first
// one had, being added to the left of the existing panel.
+ ShellWindowLauncherItemController* app_panel_controller2 =
+ new ShellWindowLauncherItemController(
+ LauncherItemController::TYPE_APP_PANEL,
+ "id",
+ app_id,
+ launcher_controller_.get());
+
ash::LauncherID launcher_id2 = launcher_controller_->CreateAppLauncherItem(
- &app_panel_controller, app_id, ash::STATUS_RUNNING);
+ app_panel_controller2, app_id, ash::STATUS_RUNNING);
EXPECT_EQ(panel_index, model_observer_->last_index());
EXPECT_EQ(1, model_observer_->added());
model_observer_->clear_counts();
@@ -1870,13 +1912,20 @@ TEST_F(ChromeLauncherControllerTest, PersistLauncherItemPositions) {
launcher_controller_.reset();
model_.reset(new ash::LauncherModel);
+
+ // Clear already registered LauncherItemDelegate.
+ ash::test::LauncherItemDelegateManagerTestAPI test(item_delegate_manager_);
+ test.RemoveAllLauncherItemDelegateForTest();
+
+ AddAppListLauncherItem();
launcher_controller_.reset(
ChromeLauncherController::CreateInstance(profile(), model_.get()));
app_tab_helper = new TestAppTabHelperImpl;
app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(0), "1");
app_tab_helper->SetAppID(tab_strip_model->GetWebContentsAt(1), "2");
SetAppTabHelper(app_tab_helper);
- AddAppListLauncherItem();
+ if (!ash::Shell::HasInstance())
+ SetLauncherItemDelegateManager(item_delegate_manager_);
launcher_controller_->Init();
// Check LauncherItems are restored after resetting ChromeLauncherController.
@@ -1913,6 +1962,11 @@ TEST_F(ChromeLauncherControllerTest, PersistPinned) {
launcher_controller_.reset();
model_.reset(new ash::LauncherModel);
+
+ // Clear already registered LauncherItemDelegate.
+ ash::test::LauncherItemDelegateManagerTestAPI test(item_delegate_manager_);
+ test.RemoveAllLauncherItemDelegateForTest();
+
AddAppListLauncherItem();
launcher_controller_.reset(
ChromeLauncherController::CreateInstance(profile(), model_.get()));
@@ -1921,6 +1975,8 @@ TEST_F(ChromeLauncherControllerTest, PersistPinned) {
SetAppTabHelper(app_tab_helper);
app_icon_loader = new TestAppIconLoaderImpl;
SetAppIconLoader(app_icon_loader);
+ if (!ash::Shell::HasInstance())
+ SetLauncherItemDelegateManager(item_delegate_manager_);
launcher_controller_->Init();
EXPECT_EQ(1, app_icon_loader->fetch_count());

Powered by Google App Engine
This is Rietveld 408576698