Index: ash/shelf/shelf_view_unittest.cc |
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc |
index 39afb9afc5c94bce30621cc7ce2a3d01e5064855..beb6620da87457b23a3196b492d27eca5b4da5ab 100644 |
--- a/ash/shelf/shelf_view_unittest.cc |
+++ b/ash/shelf/shelf_view_unittest.cc |
@@ -34,6 +34,8 @@ |
#include "base/compiler_specific.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/strings/string_number_conversions.h" |
+#include "base/test/user_action_tester.h" |
+#include "base/time/time.h" |
#include "ui/aura/test/aura_test_base.h" |
#include "ui/aura/window.h" |
#include "ui/aura/window_event_dispatcher.h" |
@@ -43,6 +45,7 @@ |
#include "ui/events/event_constants.h" |
#include "ui/events/event_utils.h" |
#include "ui/events/test/event_generator.h" |
+#include "ui/gfx/geometry/point.h" |
#include "ui/views/view_model.h" |
#include "ui/views/widget/widget.h" |
#include "ui/views/widget/widget_delegate.h" |
@@ -121,14 +124,21 @@ class ShelfViewIconObserverTest : public AshTestBase { |
// TestShelfItemDelegate which tracks whether it gets selected. |
class ShelfItemSelectionTracker : public TestShelfItemDelegate { |
public: |
- ShelfItemSelectionTracker() : TestShelfItemDelegate(NULL), selected_(false) { |
- } |
+ ShelfItemSelectionTracker() |
+ : TestShelfItemDelegate(NULL), |
+ selected_(false), |
+ item_selected_action_(kNoAction) {} |
~ShelfItemSelectionTracker() override {} |
// Resets to the initial state. |
void Reset() { selected_ = false; } |
+ void set_item_selected_action( |
+ ShelfItemDelegate::PerformedAction item_selected_action) { |
+ item_selected_action_ = item_selected_action; |
+ } |
+ |
// Returns true if the delegate was selected. |
bool WasSelected() { |
return selected_; |
@@ -138,12 +148,15 @@ class ShelfItemSelectionTracker : public TestShelfItemDelegate { |
ShelfItemDelegate::PerformedAction ItemSelected( |
const ui::Event& event) override { |
selected_ = true; |
- return kNoAction; |
+ return item_selected_action_; |
} |
private: |
bool selected_; |
+ // The action returned from ItemSelected(const ui::Event&). |
+ ShelfItemDelegate::PerformedAction item_selected_action_; |
+ |
DISALLOW_COPY_AND_ASSIGN(ShelfItemSelectionTracker); |
}; |
@@ -1762,6 +1775,82 @@ TEST_F(ShelfViewTest, AppListButtonTouchFeedbackCancellation) { |
EXPECT_FALSE(Shell::GetInstance()->GetAppListTargetVisibility()); |
} |
+// Verifies that Launcher_ButtonPressed_* UMA user actions are recorded when an |
+// item is selected. |
+TEST_F(ShelfViewTest, |
+ Launcher_ButtonPressedUserActionsRecordedWhenItemSelected) { |
+ base::UserActionTester user_action_tester; |
+ |
+ ShelfID browser_shelf_id = model_->items()[browser_index_].id; |
+ ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; |
+ item_manager_->SetShelfItemDelegate( |
+ browser_shelf_id, |
+ scoped_ptr<ShelfItemDelegate>(selection_tracker).Pass()); |
+ |
+ SimulateClick(browser_index_); |
+ EXPECT_EQ(1, |
+ user_action_tester.GetActionCount("Launcher_ButtonPressed_Mouse")); |
+} |
+ |
+// Verifies that Launcher_*Task UMA user actions are recorded when an item is |
+// selected. |
+TEST_F(ShelfViewTest, Launcher_TaskUserActionsRecordedWhenItemSelected) { |
+ base::UserActionTester user_action_tester; |
+ |
+ ShelfID browser_shelf_id = model_->items()[browser_index_].id; |
+ ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; |
+ selection_tracker->set_item_selected_action( |
+ ShelfItemDelegate::kNewWindowCreated); |
+ item_manager_->SetShelfItemDelegate( |
+ browser_shelf_id, |
+ scoped_ptr<ShelfItemDelegate>(selection_tracker).Pass()); |
+ |
+ SimulateClick(browser_index_); |
+ EXPECT_EQ(1, user_action_tester.GetActionCount("Launcher_LaunchTask")); |
+} |
+ |
+// Verifies that a Launcher_ButtonPressed_Mouse UMA user action is recorded when |
+// an icon is activated by a mouse event. |
+TEST_F(ShelfViewTest, |
+ Launcher_ButtonPressed_MouseIsRecordedWhenIconActivatedByMouse) { |
+ base::UserActionTester user_action_tester; |
+ ui::MouseEvent mouse_event(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), |
+ base::TimeDelta(), 0, 0); |
+ test_api_->RecordIconActivatedSource(mouse_event); |
+ EXPECT_EQ(1, |
+ user_action_tester.GetActionCount("Launcher_ButtonPressed_Mouse")); |
+} |
+ |
+// Verifies that a Launcher_ButtonPressed_Touch UMA user action is recorded when |
+// an icon is activated by a touch event. |
+TEST_F(ShelfViewTest, |
+ Launcher_ButtonPressed_MouseIsRecordedWhenIconActivatedByTouch) { |
+ base::UserActionTester user_action_tester; |
+ ui::TouchEvent touch_event(ui::ET_GESTURE_TAP, gfx::Point(), 0, |
+ base::TimeDelta()); |
+ test_api_->RecordIconActivatedSource(touch_event); |
+ EXPECT_EQ(1, |
+ user_action_tester.GetActionCount("Launcher_ButtonPressed_Touch")); |
+} |
+ |
+// Verifies that a Launcher_LaunchTask UMA user action is recorded when |
+// selecting an icon causes a new window to be created. |
+TEST_F(ShelfViewTest, Launcher_LaunchTaskIsRecordedWhenNewWindowIsCreated) { |
+ base::UserActionTester user_action_tester; |
+ test_api_->RecordIconActivatedAction(ShelfItemDelegate::kNewWindowCreated); |
+ EXPECT_EQ(1, user_action_tester.GetActionCount("Launcher_LaunchTask")); |
+} |
+ |
+// Verifies that a Launcher_SwitchTask UMA user action is recorded when |
+// selecting an icon causes an existing window to be activated. |
+TEST_F(ShelfViewTest, |
+ Launcher_SwitchTaskIsRecordedWhenExistingWindowIsActivated) { |
+ base::UserActionTester user_action_tester; |
+ test_api_->RecordIconActivatedAction( |
+ ShelfItemDelegate::kExistingWindowActivated); |
+ EXPECT_EQ(1, user_action_tester.GetActionCount("Launcher_SwitchTask")); |
+} |
+ |
class ShelfViewVisibleBoundsTest : public ShelfViewTest, |
public testing::WithParamInterface<bool> { |
public: |