summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authorbruthig <bruthig@chromium.org>2015-04-20 15:43:01 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-20 22:43:11 +0000
commitcf15880687530d89b61628b389a85f52300db483 (patch)
treece5532d6b579f3f96f8fffc0245d393ba882aac8 /ash
parentb435e7af416508c9e7e75a8f6a9a11f5bc539cda (diff)
downloadchromium_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.cc5
-rw-r--r--ash/shelf/app_list_shelf_item_delegate.h3
-rw-r--r--ash/shelf/shelf_item_delegate.h18
-rw-r--r--ash/shelf/shelf_view.cc19
-rw-r--r--ash/shelf/shelf_view_unittest.cc6
-rw-r--r--ash/shelf/shelf_window_watcher_item_delegate.cc8
-rw-r--r--ash/shelf/shelf_window_watcher_item_delegate.h3
-rw-r--r--ash/shell/window_watcher_shelf_item_delegate.cc5
-rw-r--r--ash/shell/window_watcher_shelf_item_delegate.h3
-rw-r--r--ash/test/test_shelf_item_delegate.cc6
-rw-r--r--ash/test/test_shelf_item_delegate.h3
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;