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

Unified Diff: ui/aura_shell/desktop_event_filter_unittest.cc

Issue 8565018: [Aura] Support additonal event filters in DesktopEventFilter. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix typo and remove no-longer-needed algorithm header Created 9 years, 1 month 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 | « ui/aura_shell/desktop_event_filter.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/aura_shell/desktop_event_filter_unittest.cc
diff --git a/ui/aura_shell/desktop_event_filter_unittest.cc b/ui/aura_shell/desktop_event_filter_unittest.cc
index 498dbda61fa4375eb07cbe9722c49114b5b3847b..504f1ec02d54c9031f9b272fbc2f07f37e9c7da9 100644
--- a/ui/aura_shell/desktop_event_filter_unittest.cc
+++ b/ui/aura_shell/desktop_event_filter_unittest.cc
@@ -10,6 +10,7 @@
#include "ui/aura/test/aura_test_base.h"
#include "ui/aura/test/event_generator.h"
#include "ui/aura/test/test_windows.h"
+#include "ui/aura/test/test_event_filter.h"
#include "ui/aura/test/test_window_delegate.h"
#include "ui/aura/test/test_stacking_client.h"
#include "ui/aura_shell/shell_window_ids.h"
@@ -19,9 +20,9 @@
namespace aura_shell {
namespace test {
-class DefaultEventFilterTest : public aura::test::AuraTestBase {
+class DesktopEventFilterTest : public aura::test::AuraTestBase {
public:
- DefaultEventFilterTest() {
+ DesktopEventFilterTest() {
aura::Desktop::GetInstance()->SetEventFilter(
new internal::DesktopEventFilter);
@@ -31,12 +32,12 @@ class DefaultEventFilterTest : public aura::test::AuraTestBase {
stacking_client->default_container()->set_id(
internal::kShellWindowId_DefaultContainer);
}
- virtual ~DefaultEventFilterTest() {
+ virtual ~DesktopEventFilterTest() {
aura::Desktop::GetInstance()->SetEventFilter(NULL);
}
private:
- DISALLOW_COPY_AND_ASSIGN(DefaultEventFilterTest);
+ DISALLOW_COPY_AND_ASSIGN(DesktopEventFilterTest);
};
class HitTestWindowDelegate : public aura::test::TestWindowDelegate {
@@ -58,7 +59,7 @@ class HitTestWindowDelegate : public aura::test::TestWindowDelegate {
DISALLOW_COPY_AND_ASSIGN(HitTestWindowDelegate);
};
-TEST_F(DefaultEventFilterTest, Focus) {
+TEST_F(DesktopEventFilterTest, Focus) {
aura::Desktop* desktop = aura::Desktop::GetInstance();
desktop->SetBounds(gfx::Rect(0, 0, 510, 510));
@@ -120,7 +121,7 @@ TEST_F(DefaultEventFilterTest, Focus) {
}
// Various assertion testing for activating windows.
-TEST_F(DefaultEventFilterTest, ActivateOnMouse) {
+TEST_F(DesktopEventFilterTest, ActivateOnMouse) {
aura::Desktop* desktop = aura::Desktop::GetInstance();
aura::test::ActivateWindowDelegate d1;
@@ -186,7 +187,7 @@ TEST_F(DefaultEventFilterTest, ActivateOnMouse) {
}
// Essentially the same as ActivateOnMouse, but for touch events.
-TEST_F(DefaultEventFilterTest, ActivateOnTouch) {
+TEST_F(DesktopEventFilterTest, ActivateOnTouch) {
aura::Desktop* desktop = aura::Desktop::GetInstance();
aura::test::ActivateWindowDelegate d1;
@@ -252,7 +253,7 @@ TEST_F(DefaultEventFilterTest, ActivateOnTouch) {
EXPECT_EQ(0, d1.lost_active_count());
}
-TEST_F(DefaultEventFilterTest, MouseEventCursors) {
+TEST_F(DesktopEventFilterTest, MouseEventCursors) {
aura::Desktop* desktop = aura::Desktop::GetInstance();
// Create a window.
@@ -316,7 +317,7 @@ TEST_F(DefaultEventFilterTest, MouseEventCursors) {
EXPECT_EQ(aura::kCursorNull, desktop->last_cursor());
}
-TEST_F(DefaultEventFilterTest, TransformActivate) {
+TEST_F(DesktopEventFilterTest, TransformActivate) {
aura::Desktop* desktop = aura::Desktop::GetInstance();
gfx::Size size = desktop->GetHostSize();
EXPECT_EQ(gfx::Rect(size),
@@ -355,5 +356,74 @@ TEST_F(DefaultEventFilterTest, TransformActivate) {
EXPECT_EQ(w1.get(), w1->GetFocusManager()->GetFocusedWindow());
}
+TEST_F(DesktopEventFilterTest, AdditionalFilters) {
+ aura::Desktop* desktop = aura::Desktop::GetInstance();
+
+ // Creates a window and make it active
+ scoped_ptr<aura::Window> w1(aura::test::CreateTestWindow(
+ SK_ColorWHITE, -1, gfx::Rect(0, 0, 100, 100), NULL));
+ desktop->SetActiveWindow(w1.get(), NULL);
+
+ // Creates two addition filters
+ scoped_ptr<aura::test::TestEventFilter> f1(
+ new aura::test::TestEventFilter(NULL));
+ scoped_ptr<aura::test::TestEventFilter> f2(
+ new aura::test::TestEventFilter(NULL));
+
+ // Adds them to desktop event filter.
+ internal::DesktopEventFilter* desktop_filter =
+ static_cast<internal::DesktopEventFilter*>(desktop->event_filter());
+ desktop_filter->AddFilter(f1.get());
+ desktop_filter->AddFilter(f2.get());
+
+ // Dispatches mouse and keyboard events.
+ aura::KeyEvent key_event(ui::ET_KEY_PRESSED, ui::VKEY_A, 0);
+ desktop->DispatchKeyEvent(&key_event);
+ aura::MouseEvent mouse_pressed(ui::ET_MOUSE_PRESSED, gfx::Point(0, 0), 0x0);
+ desktop->DispatchMouseEvent(&mouse_pressed);
+
+ // Both filters should get the events.
+ EXPECT_EQ(1, f1->key_event_count());
+ EXPECT_EQ(1, f1->mouse_event_count());
+ EXPECT_EQ(1, f2->key_event_count());
+ EXPECT_EQ(1, f2->mouse_event_count());
+
+ f1->ResetCounts();
+ f2->ResetCounts();
+
+ // Makes f1 consume events.
+ f1->set_consumes_key_events(true);
+ f1->set_consumes_mouse_events(true);
+
+ // Dispatches events.
+ desktop->DispatchKeyEvent(&key_event);
+ aura::MouseEvent mouse_released(ui::ET_MOUSE_RELEASED, gfx::Point(0, 0), 0x0);
+ desktop->DispatchMouseEvent(&mouse_released);
+
+ // f1 should still get the events but f2 no longer gets them.
+ EXPECT_EQ(1, f1->key_event_count());
+ EXPECT_EQ(1, f1->mouse_event_count());
+ EXPECT_EQ(0, f2->key_event_count());
+ EXPECT_EQ(0, f2->mouse_event_count());
+
+ f1->ResetCounts();
+ f2->ResetCounts();
+
+ // Remove f1 from additonal filters list.
+ desktop_filter->RemoveFilter(f1.get());
+
+ // Dispatches events.
+ desktop->DispatchKeyEvent(&key_event);
+ desktop->DispatchMouseEvent(&mouse_pressed);
+
+ // f1 should get no events since it's out and f2 should get them.
+ EXPECT_EQ(0, f1->key_event_count());
+ EXPECT_EQ(0, f1->mouse_event_count());
+ EXPECT_EQ(1, f2->key_event_count());
+ EXPECT_EQ(1, f2->mouse_event_count());
+
+ desktop_filter->RemoveFilter(f2.get());
+}
+
} // namespace test
} // namespace aura_shell
« no previous file with comments | « ui/aura_shell/desktop_event_filter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698