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

Unified Diff: ash/wm/overview/window_selector_unittest.cc

Issue 1138253002: Add user action for changing the active window in Ash overview mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tests added Created 5 years, 7 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
« no previous file with comments | « ash/wm/overview/window_selector_item.cc ('k') | tools/metrics/actions/actions.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/wm/overview/window_selector_unittest.cc
diff --git a/ash/wm/overview/window_selector_unittest.cc b/ash/wm/overview/window_selector_unittest.cc
index 3ae60cc9458fe43d0e98bf248766d50a35c5a3ed..9612104d82c22b6c7a7a36e0104bb43346ae569f 100644
--- a/ash/wm/overview/window_selector_unittest.cc
+++ b/ash/wm/overview/window_selector_unittest.cc
@@ -35,6 +35,7 @@
#include "base/run_loop.h"
#include "base/strings/string_piece.h"
#include "base/strings/utf_string_conversions.h"
+#include "base/test/user_action_tester.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/client/cursor_client.h"
#include "ui/aura/client/focus_client.h"
@@ -58,6 +59,9 @@
namespace ash {
namespace {
+const char kActiveWindowChangedFromOverview[] =
+ "WindowSelector_ActiveWindowChanged";
+
class NonActivatableActivationDelegate
: public aura::client::ActivationDelegate {
public:
@@ -374,6 +378,111 @@ TEST_F(WindowSelectorTest, BasicGesture) {
EXPECT_EQ(window2.get(), GetFocusedWindow());
}
+// Tests that the user action WindowSelector_ActiveWindowChanged is
+// recorded when the mouse/touchscreen/keyboard are used to select a window
+// in overview mode which is different from the previously-active window.
+TEST_F(WindowSelectorTest, ActiveWindowChangedUserActionRecorded) {
+ base::UserActionTester user_action_tester;
+ gfx::Rect bounds(0, 0, 400, 400);
+ scoped_ptr<aura::Window> window1(CreateWindow(bounds));
+ scoped_ptr<aura::Window> window2(CreateWindow(bounds));
+
+ // Tap on |window2| to activate it and exit overview.
+ wm::ActivateWindow(window1.get());
+ ToggleOverview();
+ ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
+ window2.get());
+ generator.GestureTapAt(
+ gfx::ToEnclosingRect(GetTransformedTargetBounds(window2.get()))
+ .CenterPoint());
+ EXPECT_EQ(
+ 1, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview));
+
+ // Click on |window2| to activate it and exit overview.
+ wm::ActivateWindow(window1.get());
+ ToggleOverview();
+ ClickWindow(window2.get());
+ EXPECT_EQ(
+ 2, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview));
+
+ // Select |window2| using the arrow keys. Activate it (and exit overview) by
+ // pressing the return key.
+ wm::ActivateWindow(window1.get());
+ ToggleOverview();
+ SendKey(ui::VKEY_RIGHT);
+ SendKey(ui::VKEY_RIGHT);
+ SendKey(ui::VKEY_RETURN);
+ EXPECT_EQ(
+ 3, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview));
+}
+
+// Tests that the user action WindowSelector_ActiveWindowChanged is not
+// recorded when the mouse/touchscreen/keyboard are used to select the
+// already-active window from overview mode. Also verifies that entering and
+// exiting overview without selecting a window does not record the action.
+TEST_F(WindowSelectorTest, ActiveWindowChangedUserActionNotRecorded) {
+ base::UserActionTester user_action_tester;
+ gfx::Rect bounds(0, 0, 400, 400);
+ scoped_ptr<aura::Window> window1(CreateWindow(bounds));
+ scoped_ptr<aura::Window> window2(CreateWindow(bounds));
+
+ // Set |window1| to be initially active.
+ wm::ActivateWindow(window1.get());
+ ToggleOverview();
+
+ // Tap on |window1| to exit overview.
+ ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
+ window1.get());
+ generator.GestureTapAt(
+ gfx::ToEnclosingRect(GetTransformedTargetBounds(window1.get()))
+ .CenterPoint());
+ EXPECT_EQ(
+ 0, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview));
+
+ // |window1| remains active. Click on it to exit overview.
+ ASSERT_EQ(window1.get(), GetFocusedWindow());
+ ToggleOverview();
+ ClickWindow(window1.get());
+ EXPECT_EQ(
+ 0, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview));
+
+ // |window1| remains active. Select using the keyboard.
+ ASSERT_EQ(window1.get(), GetFocusedWindow());
+ ToggleOverview();
+ SendKey(ui::VKEY_RIGHT);
+ SendKey(ui::VKEY_RETURN);
+ EXPECT_EQ(
+ 0, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview));
+
+ // Entering and exiting overview without user input should not record
+ // the action.
+ ToggleOverview();
+ ToggleOverview();
+ EXPECT_EQ(
+ 0, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview));
+}
+
+// Tests that the user action WindowSelector_ActiveWindowChanged is not
+// recorded when overview mode exits as a result of closing its only window.
+TEST_F(WindowSelectorTest, ActiveWindowChangedUserActionWindowClose) {
+ base::UserActionTester user_action_tester;
+ scoped_ptr<views::Widget> widget =
+ CreateWindowWidget(gfx::Rect(0, 0, 400, 400));
+
+ ToggleOverview();
+
+ aura::Window* window = widget->GetNativeWindow();
+ gfx::RectF bounds = GetTransformedBoundsInRootWindow(window);
+ gfx::Point point(bounds.top_right().x() - 1, bounds.top_right().y() - 1);
+ ui::test::EventGenerator event_generator(window->GetRootWindow(), point);
+
+ ASSERT_FALSE(widget->IsClosed());
+ event_generator.ClickLeftButton();
+ ASSERT_TRUE(widget->IsClosed());
+ EXPECT_EQ(
+ 0, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview));
+}
+
// Tests that we do not crash and overview mode remains engaged if the desktop
// is tapped while a finger is already down over a window.
TEST_F(WindowSelectorTest, NoCrashWithDesktopTap) {
« no previous file with comments | « ash/wm/overview/window_selector_item.cc ('k') | tools/metrics/actions/actions.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698