diff options
author | bruthig <bruthig@chromium.org> | 2015-04-20 15:43:01 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-20 22:43:11 +0000 |
commit | cf15880687530d89b61628b389a85f52300db483 (patch) | |
tree | ce5532d6b579f3f96f8fffc0245d393ba882aac8 /ash | |
parent | b435e7af416508c9e7e75a8f6a9a11f5bc539cda (diff) | |
download | chromium_src-cf15880687530d89b61628b389a85f52300db483.zip chromium_src-cf15880687530d89b61628b389a85f52300db483.tar.gz chromium_src-cf15880687530d89b61628b389a85f52300db483.tar.bz2 |
Refactored ShelfItemDelegate::ItemSelected(ui::Event) to return the action
performed by the selection.
Previously ShelfItemDelegate::ItemSelected(ui::Event) returned a bool value
which was insufficient for the many different actions that could be taken.
This work is making it possible to add an UMA stat to track when a window
is minimized by the shelf.
BUG=471354
Review URL: https://codereview.chromium.org/1070343002
Cr-Commit-Position: refs/heads/master@{#325928}
Diffstat (limited to 'ash')
-rw-r--r-- | ash/shelf/app_list_shelf_item_delegate.cc | 5 | ||||
-rw-r--r-- | ash/shelf/app_list_shelf_item_delegate.h | 3 | ||||
-rw-r--r-- | ash/shelf/shelf_item_delegate.h | 18 | ||||
-rw-r--r-- | ash/shelf/shelf_view.cc | 19 | ||||
-rw-r--r-- | ash/shelf/shelf_view_unittest.cc | 6 | ||||
-rw-r--r-- | ash/shelf/shelf_window_watcher_item_delegate.cc | 8 | ||||
-rw-r--r-- | ash/shelf/shelf_window_watcher_item_delegate.h | 3 | ||||
-rw-r--r-- | ash/shell/window_watcher_shelf_item_delegate.cc | 5 | ||||
-rw-r--r-- | ash/shell/window_watcher_shelf_item_delegate.h | 3 | ||||
-rw-r--r-- | ash/test/test_shelf_item_delegate.cc | 6 | ||||
-rw-r--r-- | ash/test/test_shelf_item_delegate.h | 3 |
11 files changed, 55 insertions, 24 deletions
diff --git a/ash/shelf/app_list_shelf_item_delegate.cc b/ash/shelf/app_list_shelf_item_delegate.cc index 99c58e1e..a0c1873 100644 --- a/ash/shelf/app_list_shelf_item_delegate.cc +++ b/ash/shelf/app_list_shelf_item_delegate.cc @@ -23,10 +23,11 @@ AppListShelfItemDelegate::~AppListShelfItemDelegate() { // ShelfItemDelegateManager owns and destroys this class. } -bool AppListShelfItemDelegate::ItemSelected(const ui::Event& event) { +ShelfItemDelegate::PerformedAction AppListShelfItemDelegate::ItemSelected( + const ui::Event& event) { // Pass NULL here to show the app list in the currently active RootWindow. Shell::GetInstance()->ToggleAppList(NULL); - return false; + return ShelfItemDelegate::kAppListMenuShown; } base::string16 AppListShelfItemDelegate::GetTitle() { diff --git a/ash/shelf/app_list_shelf_item_delegate.h b/ash/shelf/app_list_shelf_item_delegate.h index 5d04fac..67b617b 100644 --- a/ash/shelf/app_list_shelf_item_delegate.h +++ b/ash/shelf/app_list_shelf_item_delegate.h @@ -19,7 +19,8 @@ class AppListShelfItemDelegate : public ShelfItemDelegate { ~AppListShelfItemDelegate() override; // ShelfItemDelegate: - bool ItemSelected(const ui::Event& event) override; + ShelfItemDelegate::PerformedAction ItemSelected( + const ui::Event& event) override; base::string16 GetTitle() override; ui::MenuModel* CreateContextMenu(aura::Window* root_window) override; ShelfMenuModel* CreateApplicationMenu(int event_flags) override; diff --git a/ash/shelf/shelf_item_delegate.h b/ash/shelf/shelf_item_delegate.h index 46f282a..41bc0b6 100644 --- a/ash/shelf/shelf_item_delegate.h +++ b/ash/shelf/shelf_item_delegate.h @@ -24,6 +24,20 @@ class ShelfMenuModel; // Delegate for the ShelfItem. class ASH_EXPORT ShelfItemDelegate { public: + // The return type for the ShelfItemDelegate::ItemSelected method. + enum PerformedAction { + // No action was taken. + kNoAction, + // A new window was created. + kNewWindowCreated, + // An existing window which was not currently active was activated. + kExistingWindowActivated, + // The currently active window was minimized. + kExistingWindowMinimized, + // The app list launcher menu was shown. + kAppListMenuShown, + }; + virtual ~ShelfItemDelegate() {} // Invoked when the user clicks on a window entry in the launcher. @@ -32,8 +46,8 @@ class ASH_EXPORT ShelfItemDelegate { // but not |aura::Window|. If the |event| is of type KeyEvent, it is assumed // that this was triggered by keyboard action (Alt+<number>) and special // handling might happen. - // Returns true if a new item was created. - virtual bool ItemSelected(const ui::Event& event) = 0; + // Returns the action performed by selecting the item. + virtual PerformedAction ItemSelected(const ui::Event& event) = 0; // Returns the title to display. virtual base::string16 GetTitle() = 0; diff --git a/ash/shelf/shelf_view.cc b/ash/shelf/shelf_view.cc index b4a3b72..21651b4 100644 --- a/ash/shelf/shelf_view.cc +++ b/ash/shelf/shelf_view.cc @@ -1754,13 +1754,18 @@ void ShelfView::ButtonPressed(views::Button* sender, const ui::Event& event) { RecordIconActivatedAction(event); - ShelfItemDelegate* item_delegate = - item_manager_->GetShelfItemDelegate(model_->items()[view_index].id); - if (!item_delegate->ItemSelected(event)) { - ShowListMenuForView(model_->items()[view_index], sender, event); - } else { - Shell::GetInstance()->metrics()->RecordUserMetricsAction( - UMA_LAUNCHER_LAUNCH_TASK); + switch (item_manager_->GetShelfItemDelegate(model_->items()[view_index].id) + ->ItemSelected(event)) { + case ShelfItemDelegate::kNoAction: + case ShelfItemDelegate::kExistingWindowActivated: + case ShelfItemDelegate::kExistingWindowMinimized: + case ShelfItemDelegate::kAppListMenuShown: + ShowListMenuForView(model_->items()[view_index], sender, event); + break; + case ShelfItemDelegate::kNewWindowCreated: + Shell::GetInstance()->metrics()->RecordUserMetricsAction( + UMA_LAUNCHER_LAUNCH_TASK); + break; } } } diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc index 177dc00..39afb9a 100644 --- a/ash/shelf/shelf_view_unittest.cc +++ b/ash/shelf/shelf_view_unittest.cc @@ -5,6 +5,7 @@ #include "ash/shelf/shelf_view.h" #include <algorithm> +#include <utility> #include <vector> #include "ash/root_window_controller.h" @@ -134,9 +135,10 @@ class ShelfItemSelectionTracker : public TestShelfItemDelegate { } // TestShelfItemDelegate: - bool ItemSelected(const ui::Event& event) override { + ShelfItemDelegate::PerformedAction ItemSelected( + const ui::Event& event) override { selected_ = true; - return false; + return kNoAction; } private: diff --git a/ash/shelf/shelf_window_watcher_item_delegate.cc b/ash/shelf/shelf_window_watcher_item_delegate.cc index 005d2d4..172b6d1 100644 --- a/ash/shelf/shelf_window_watcher_item_delegate.cc +++ b/ash/shelf/shelf_window_watcher_item_delegate.cc @@ -28,19 +28,21 @@ void ShelfWindowWatcherItemDelegate::Close() { views::Widget::GetWidgetForNativeWindow(window_)->Close(); } -bool ShelfWindowWatcherItemDelegate::ItemSelected(const ui::Event& event) { +ShelfItemDelegate::PerformedAction ShelfWindowWatcherItemDelegate::ItemSelected( + const ui::Event& event) { wm::WindowState* window_state = wm::GetWindowState(window_); if (window_state->IsActive()) { if (event.type() & ui::ET_KEY_RELEASED) { ::wm::AnimateWindow(window_, ::wm::WINDOW_ANIMATION_TYPE_BOUNCE); + return kNoAction; } else { window_state->Minimize(); + return kExistingWindowMinimized; } } else { window_state->Activate(); + return kExistingWindowActivated; } - - return false; } base::string16 ShelfWindowWatcherItemDelegate::GetTitle() { diff --git a/ash/shelf/shelf_window_watcher_item_delegate.h b/ash/shelf/shelf_window_watcher_item_delegate.h index d2733d3..0cca9da 100644 --- a/ash/shelf/shelf_window_watcher_item_delegate.h +++ b/ash/shelf/shelf_window_watcher_item_delegate.h @@ -25,7 +25,8 @@ class ShelfWindowWatcherItemDelegate : public ShelfItemDelegate { private: // ShelfItemDelegate overrides: - bool ItemSelected(const ui::Event& event) override; + ShelfItemDelegate::PerformedAction ItemSelected( + const ui::Event& event) override; base::string16 GetTitle() override; ui::MenuModel* CreateContextMenu(aura::Window* root_window) override; ShelfMenuModel* CreateApplicationMenu(int event_flags) override; diff --git a/ash/shell/window_watcher_shelf_item_delegate.cc b/ash/shell/window_watcher_shelf_item_delegate.cc index 4a8f364..6e3f2a1 100644 --- a/ash/shell/window_watcher_shelf_item_delegate.cc +++ b/ash/shell/window_watcher_shelf_item_delegate.cc @@ -22,13 +22,14 @@ WindowWatcherShelfItemDelegate::WindowWatcherShelfItemDelegate( WindowWatcherShelfItemDelegate::~WindowWatcherShelfItemDelegate() { } -bool WindowWatcherShelfItemDelegate::ItemSelected(const ui::Event& event) { +ShelfItemDelegate::PerformedAction WindowWatcherShelfItemDelegate::ItemSelected( + const ui::Event& event) { aura::Window* window = watcher_->GetWindowByID(id_); if (window->type() == ui::wm::WINDOW_TYPE_PANEL) wm::MoveWindowToEventRoot(window, event); window->Show(); wm::ActivateWindow(window); - return false; + return kExistingWindowActivated; } base::string16 WindowWatcherShelfItemDelegate::GetTitle() { diff --git a/ash/shell/window_watcher_shelf_item_delegate.h b/ash/shell/window_watcher_shelf_item_delegate.h index 117156b..e3c493b 100644 --- a/ash/shell/window_watcher_shelf_item_delegate.h +++ b/ash/shell/window_watcher_shelf_item_delegate.h @@ -22,7 +22,8 @@ class WindowWatcherShelfItemDelegate : public ShelfItemDelegate { ~WindowWatcherShelfItemDelegate() override; // ShelfItemDelegate: - bool ItemSelected(const ui::Event& event) override; + ShelfItemDelegate::PerformedAction ItemSelected( + const ui::Event& event) override; base::string16 GetTitle() override; ui::MenuModel* CreateContextMenu(aura::Window* root_window) override; ShelfMenuModel* CreateApplicationMenu(int event_flags) override; diff --git a/ash/test/test_shelf_item_delegate.cc b/ash/test/test_shelf_item_delegate.cc index e8f4780..a70b451 100644 --- a/ash/test/test_shelf_item_delegate.cc +++ b/ash/test/test_shelf_item_delegate.cc @@ -17,14 +17,16 @@ TestShelfItemDelegate::TestShelfItemDelegate(aura::Window* window) TestShelfItemDelegate::~TestShelfItemDelegate() { } -bool TestShelfItemDelegate::ItemSelected(const ui::Event& event) { +ShelfItemDelegate::PerformedAction TestShelfItemDelegate::ItemSelected( + const ui::Event& event) { if (window_) { if (window_->type() == ui::wm::WINDOW_TYPE_PANEL) wm::MoveWindowToEventRoot(window_, event); window_->Show(); wm::ActivateWindow(window_); + return kExistingWindowActivated; } - return false; + return kNoAction; } base::string16 TestShelfItemDelegate::GetTitle() { diff --git a/ash/test/test_shelf_item_delegate.h b/ash/test/test_shelf_item_delegate.h index 836f5f1..e69ef69 100644 --- a/ash/test/test_shelf_item_delegate.h +++ b/ash/test/test_shelf_item_delegate.h @@ -23,7 +23,8 @@ class TestShelfItemDelegate : public ShelfItemDelegate { ~TestShelfItemDelegate() override; // ShelfItemDelegate: - bool ItemSelected(const ui::Event& event) override; + ShelfItemDelegate::PerformedAction ItemSelected( + const ui::Event& event) override; base::string16 GetTitle() override; ui::MenuModel* CreateContextMenu(aura::Window* root_window) override; ShelfMenuModel* CreateApplicationMenu(int event_flags) override; |