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

Unified Diff: ui/views/corewm/focus_controller_unittest.cc

Issue 14222019: Trying to activate a window in a workspace other than the current is ignored while a system modal d… (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: focus controller unittest Created 7 years, 8 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
« ui/views/corewm/focus_controller.h ('K') | « ui/views/corewm/focus_controller.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/corewm/focus_controller_unittest.cc
diff --git a/ui/views/corewm/focus_controller_unittest.cc b/ui/views/corewm/focus_controller_unittest.cc
index 335bb6c4b6c684054c42d772039d037eb3bd2409..1275041e51df83ff27ec288f5c67ed10eb6eac82 100644
--- a/ui/views/corewm/focus_controller_unittest.cc
+++ b/ui/views/corewm/focus_controller_unittest.cc
@@ -8,6 +8,7 @@
#include "ui/aura/client/activation_change_observer.h"
#include "ui/aura/client/activation_client.h"
+#include "ui/aura/client/aura_constants.h"
#include "ui/aura/client/default_capture_client.h"
#include "ui/aura/client/focus_change_observer.h"
#include "ui/aura/root_window.h"
@@ -28,14 +29,25 @@ class FocusNotificationObserver : public aura::client::ActivationChangeObserver,
public:
FocusNotificationObserver()
: activation_changed_count_(0),
- focus_changed_count_(0) {}
+ focus_changed_count_(0),
+ reactivation_count_(0),
+ reactivation_requested_window_(NULL),
+ reactivation_actual_window_(NULL) {}
virtual ~FocusNotificationObserver() {}
void ExpectCounts(int activation_changed_count, int focus_changed_count) {
EXPECT_EQ(activation_changed_count, activation_changed_count_);
EXPECT_EQ(focus_changed_count, focus_changed_count_);
}
-
+ int GetReactivationCount() {
sky 2013/04/24 14:14:53 methods like this are typically named in unix_hack
sschmitz 2013/04/24 15:42:04 Done.
+ return reactivation_count_;
+ }
+ aura::Window* GetReactivationRequestedWindow() {
+ return reactivation_requested_window_;
+ }
+ aura::Window* GetReactivationActualWindow() {
+ return reactivation_actual_window_;
+ }
private:
// Overridden from aura::client::ActivationChangeObserver:
@@ -43,6 +55,13 @@ class FocusNotificationObserver : public aura::client::ActivationChangeObserver,
aura::Window* lost_active) OVERRIDE {
++activation_changed_count_;
}
+ virtual void OnAttemptToReactivateWindow(
+ aura::Window* request_active,
+ aura::Window* actual_active) OVERRIDE {
+ ++reactivation_count_;
+ reactivation_requested_window_ = request_active;
+ reactivation_actual_window_ = actual_active;
+ }
// Overridden from aura::client::FocusChangeObserver:
virtual void OnWindowFocused(aura::Window* gained_focus,
@@ -52,6 +71,9 @@ class FocusNotificationObserver : public aura::client::ActivationChangeObserver,
int activation_changed_count_;
int focus_changed_count_;
+ int reactivation_count_;
+ aura::Window* reactivation_requested_window_;
+ aura::Window* reactivation_actual_window_;
DISALLOW_COPY_AND_ASSIGN(FocusNotificationObserver);
};
@@ -270,6 +292,7 @@ class FocusControllerTestBase : public aura::test::AuraTestBase {
virtual void FocusEvents() = 0;
virtual void DuplicateFocusEvents() {}
virtual void ActivationEvents() = 0;
+ virtual void ReactivationEvents() {}
virtual void DuplicateActivationEvents() {}
virtual void ShiftFocusWithinActiveWindow() {}
virtual void ShiftFocusToChildOfInactiveWindow() {}
@@ -384,6 +407,20 @@ class FocusControllerDirectTestBase : public FocusControllerTestBase {
observer1.ExpectCounts(1, 1);
observer2.ExpectCounts(1, 1);
}
+ virtual void ReactivationEvents() OVERRIDE {
+ ActivateWindowById(1);
+ ScopedFocusNotificationObserver root_observer(root_window());
+ EXPECT_EQ(0, root_observer.GetReactivationCount());
+ root_window()->GetChildById(2)->Hide();
+ // When we attempt to activate "2", which cannot be activated because it
+ // is not visible, "1" will be reactivated.
+ ActivateWindowById(2);
+ EXPECT_EQ(1, root_observer.GetReactivationCount());
+ EXPECT_EQ(root_window()->GetChildById(2),
+ root_observer.GetReactivationRequestedWindow());
+ EXPECT_EQ(root_window()->GetChildById(1),
+ root_observer.GetReactivationActualWindow());
+ }
virtual void DuplicateActivationEvents() OVERRIDE {
// Activating an existing active window should not resend activation events.
ActivateWindowById(1);
@@ -928,6 +965,10 @@ DIRECT_FOCUS_CHANGE_TESTS(DuplicateActivationEvents);
// - Activates a window, verifies that activation events were dispatched.
TARGET_FOCUS_TESTS(ActivationEvents);
+// - Attempts to active a hidden window, verifies that current window is
+// attempted to be reactivated and the appropriate event dispatched.
+FOCUS_CONTROLLER_TEST(FocusControllerApiTest, ReactivationEvents);
+
// - Input events/API calls shift focus between focusable windows within the
// active window.
DIRECT_FOCUS_CHANGE_TESTS(ShiftFocusWithinActiveWindow);
« ui/views/corewm/focus_controller.h ('K') | « ui/views/corewm/focus_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698