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

Unified Diff: ui/views/widget/widget_interactive_uitest.cc

Issue 444583002: MacViews: Get widget_interactive_uitest compiling on Mac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Try FocusListener Created 6 years, 4 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 | « ui/views/views.gyp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/widget/widget_interactive_uitest.cc
diff --git a/ui/views/widget/widget_interactive_uitest.cc b/ui/views/widget/widget_interactive_uitest.cc
index 3340462d064684c91d03eb40e8117f11085409b1..564ddd0f88401cb2e89ce978c53c608f1d9c45ad 100644
--- a/ui/views/widget/widget_interactive_uitest.cc
+++ b/ui/views/widget/widget_interactive_uitest.cc
@@ -9,10 +9,6 @@
#include "base/run_loop.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
-#include "ui/aura/client/focus_client.h"
-#include "ui/aura/env.h"
-#include "ui/aura/window.h"
-#include "ui/aura/window_tree_host.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/ui_base_paths.h"
#include "ui/base/ui_base_switches.h"
@@ -22,17 +18,18 @@
#include "ui/gl/gl_surface.h"
#include "ui/views/controls/textfield/textfield.h"
#include "ui/views/controls/textfield/textfield_test_api.h"
+#include "ui/views/focus/focus_manager.h"
+#include "ui/views/test/focus_manager_test.h"
#include "ui/views/test/widget_test.h"
#include "ui/views/touchui/touch_selection_controller_impl.h"
#include "ui/views/widget/widget.h"
#include "ui/views/window/dialog_delegate.h"
#include "ui/wm/public/activation_client.h"
-#if !defined(OS_CHROMEOS)
-#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
-#endif
-
#if defined(OS_WIN)
+#include "ui/aura/window.h"
+#include "ui/aura/window_tree_host.h"
+#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
#include "ui/views/win/hwnd_util.h"
#endif
@@ -175,7 +172,10 @@ class WidgetTestInteractive : public WidgetTest {
DCHECK(controller);
if (controller->context_menu_timer_.IsRunning()) {
controller->context_menu_timer_.Stop();
+// TODO(tapted): Enable this when porting ui/views/touchui to Mac.
+#if !defined(OS_MACOSX)
controller->ContextMenuTimerFired();
+#endif
}
}
@@ -249,7 +249,7 @@ TEST_F(WidgetTestInteractive, DesktopNativeWidgetAuraActivationAndFocusTest) {
reinterpret_cast<aura::Window*>(NULL));
EXPECT_EQ(activation_client1->GetActiveWindow(), widget1.GetNativeView());
}
-#endif
+#endif // defined(OS_WIN)
TEST_F(WidgetTestInteractive, CaptureAutoReset) {
Widget* toplevel = CreateTopLevelFramelessPlatformWidget();
@@ -632,7 +632,7 @@ TEST_F(WidgetTestInteractive, WidgetNotActivatedOnFakeActivationMessages) {
EXPECT_EQ(true, widget1.active());
EXPECT_EQ(false, widget2.active());
}
-#endif
+#endif // defined(OS_WIN)
#if !defined(OS_CHROMEOS)
// Provides functionality to create a window modal dialog.
@@ -655,6 +655,11 @@ class ModalDialogDelegate : public DialogDelegateView {
// Tests whether the focused window is set correctly when a modal window is
// created and destroyed. When it is destroyed it should focus the owner window.
TEST_F(WidgetTestInteractive, WindowModalWindowDestroyedActivationTest) {
+ TestWidgetFocusChangeListener focus_listener;
+ WidgetFocusManager::GetInstance()->AddFocusChangeListener(&focus_listener);
+ const std::vector<NativeViewPair>& focus_changes =
+ focus_listener.focus_changes();
+
// Create a top level widget.
Widget top_level_widget;
Widget::InitParams init_params =
@@ -663,13 +668,14 @@ TEST_F(WidgetTestInteractive, WindowModalWindowDestroyedActivationTest) {
gfx::Rect initial_bounds(0, 0, 500, 500);
init_params.bounds = initial_bounds;
init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- init_params.native_widget = new DesktopNativeWidgetAura(&top_level_widget);
+ init_params.native_widget =
+ new PlatformDesktopNativeWidget(&top_level_widget);
top_level_widget.Init(init_params);
top_level_widget.Show();
- aura::Window* top_level_window = top_level_widget.GetNativeWindow();
- EXPECT_EQ(top_level_window, aura::client::GetFocusClient(
- top_level_window)->GetFocusedWindow());
+ gfx::NativeView top_level_native_view = top_level_widget.GetNativeView();
+ EXPECT_EQ(1u, focus_changes.size());
+ EXPECT_EQ(NativeViewPair(NULL, top_level_native_view), focus_changes[0]);
// Create a modal dialog.
// This instance will be destroyed when the dialog is destroyed.
@@ -677,21 +683,34 @@ TEST_F(WidgetTestInteractive, WindowModalWindowDestroyedActivationTest) {
new ModalDialogDelegate(ui::MODAL_TYPE_WINDOW);
Widget* modal_dialog_widget = views::DialogDelegate::CreateDialogWidget(
- dialog_delegate, NULL, top_level_widget.GetNativeWindow());
+ dialog_delegate, NULL, top_level_widget.GetNativeView());
modal_dialog_widget->SetBounds(gfx::Rect(100, 100, 200, 200));
modal_dialog_widget->Show();
- aura::Window* dialog_window = modal_dialog_widget->GetNativeWindow();
- EXPECT_EQ(dialog_window, aura::client::GetFocusClient(
- top_level_window)->GetFocusedWindow());
+
+ gfx::NativeView modal_native_view = modal_dialog_widget->GetNativeView();
+ EXPECT_EQ(3u, focus_changes.size());
+ EXPECT_EQ(NativeViewPair(top_level_native_view, modal_native_view),
+ focus_changes[1]);
+ EXPECT_EQ(NativeViewPair(top_level_native_view, modal_native_view),
+ focus_changes[2]);
modal_dialog_widget->CloseNow();
- EXPECT_EQ(top_level_window, aura::client::GetFocusClient(
- top_level_window)->GetFocusedWindow());
+
+ EXPECT_EQ(5u, focus_changes.size());
+ EXPECT_EQ(NativeViewPair(modal_native_view, top_level_native_view),
+ focus_changes[3]);
+ EXPECT_EQ(NativeViewPair(modal_native_view, top_level_native_view),
+ focus_changes[4]);
+
top_level_widget.CloseNow();
+ WidgetFocusManager::GetInstance()->RemoveFocusChangeListener(&focus_listener);
}
// Test that when opening a system-modal window, capture is released.
TEST_F(WidgetTestInteractive, SystemModalWindowReleasesCapture) {
+ TestWidgetFocusChangeListener focus_listener;
+ WidgetFocusManager::GetInstance()->AddFocusChangeListener(&focus_listener);
+
// Create a top level widget.
Widget top_level_widget;
Widget::InitParams init_params =
@@ -700,34 +719,35 @@ TEST_F(WidgetTestInteractive, SystemModalWindowReleasesCapture) {
gfx::Rect initial_bounds(0, 0, 500, 500);
init_params.bounds = initial_bounds;
init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- init_params.native_widget = new DesktopNativeWidgetAura(&top_level_widget);
+ init_params.native_widget =
+ new PlatformDesktopNativeWidget(&top_level_widget);
top_level_widget.Init(init_params);
top_level_widget.Show();
- aura::Window* top_level_window = top_level_widget.GetNativeWindow();
- EXPECT_EQ(top_level_window, aura::client::GetFocusClient(
- top_level_window)->GetFocusedWindow());
+ EXPECT_EQ(top_level_widget.GetNativeView(),
+ focus_listener.focus_changes().back().second);;
- EXPECT_FALSE(top_level_window->HasCapture());
- top_level_window->SetCapture();
- EXPECT_TRUE(top_level_window->HasCapture());
+ EXPECT_FALSE(top_level_widget.HasCapture());
+ top_level_widget.SetCapture(NULL);
+ EXPECT_TRUE(top_level_widget.HasCapture());
// Create a modal dialog.
ModalDialogDelegate* dialog_delegate =
new ModalDialogDelegate(ui::MODAL_TYPE_SYSTEM);
Widget* modal_dialog_widget = views::DialogDelegate::CreateDialogWidget(
- dialog_delegate, NULL, top_level_widget.GetNativeWindow());
+ dialog_delegate, NULL, top_level_widget.GetNativeView());
modal_dialog_widget->SetBounds(gfx::Rect(100, 100, 200, 200));
modal_dialog_widget->Show();
- EXPECT_FALSE(top_level_window->HasCapture());
+ EXPECT_FALSE(top_level_widget.HasCapture());
modal_dialog_widget->CloseNow();
top_level_widget.CloseNow();
+ WidgetFocusManager::GetInstance()->RemoveFocusChangeListener(&focus_listener);
}
-#endif
+#endif // !defined(OS_CHROMEOS)
TEST_F(WidgetTestInteractive, CanActivateFlagIsHonored) {
Widget widget;
@@ -737,7 +757,7 @@ TEST_F(WidgetTestInteractive, CanActivateFlagIsHonored) {
init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
init_params.activatable = Widget::InitParams::ACTIVATABLE_NO;
#if !defined(OS_CHROMEOS)
- init_params.native_widget = new DesktopNativeWidgetAura(&widget);
+ init_params.native_widget = new PlatformDesktopNativeWidget(&widget);
#endif // !defined(OS_CHROMEOS)
widget.Init(init_params);
@@ -771,7 +791,7 @@ TEST_F(WidgetTestInteractive, TouchSelectionQuickMenuIsNotActivated) {
RunPendingMessages();
- ui::test::EventGenerator generator(widget.GetNativeView()->GetRootWindow());
+ ui::test::EventGenerator generator(widget.GetNativeWindow());
generator.GestureTapAt(gfx::Point(10, 10));
ShowQuickMenuImmediately(static_cast<TouchSelectionControllerImpl*>(
textfield_test_api.touch_selection_controller()));
@@ -874,7 +894,7 @@ class WidgetCaptureTest : public ViewsTestBase {
Widget* widget) {
#if !defined(OS_CHROMEOS)
if (create_desktop_native_widget)
- return new DesktopNativeWidgetAura(widget);
+ return new PlatformDesktopNativeWidget(widget);
#endif
return NULL;
}
@@ -919,11 +939,10 @@ TEST_F(WidgetCaptureTest, FailedCaptureRequestIsNoop) {
EXPECT_FALSE(widget.HasCapture());
widget.Show();
- ui::MouseEvent mouse_press_event(ui::ET_MOUSE_PRESSED, gfx::Point(300, 10),
- gfx::Point(300, 10), ui::EF_NONE, ui::EF_NONE);
- ui::EventDispatchDetails details = widget.GetNativeWindow()->GetHost()->
- event_processor()->OnEventFromSource(&mouse_press_event);
- ASSERT_FALSE(details.dispatcher_destroyed);
+ ui::test::EventGenerator generator(GetContext(), widget.GetNativeWindow());
+ generator.set_current_location(gfx::Point(300, 10));
+ generator.PressLeftButton();
+
EXPECT_FALSE(mouse_view1->pressed());
EXPECT_TRUE(mouse_view2->pressed());
}
@@ -953,11 +972,10 @@ TEST_F(WidgetCaptureTest, MouseExitOnCaptureGrab) {
widget2.Show();
widget2.SetBounds(gfx::Rect(400, 0, 300, 300));
- ui::MouseEvent mouse_move_event(ui::ET_MOUSE_MOVED, gfx::Point(100, 100),
- gfx::Point(100, 100), ui::EF_NONE, ui::EF_NONE);
- ui::EventDispatchDetails details = widget1.GetNativeWindow()->GetHost()->
- event_processor()->OnEventFromSource(&mouse_move_event);
- ASSERT_FALSE(details.dispatcher_destroyed);
+ ui::test::EventGenerator generator(widget1.GetNativeWindow());
+ generator.set_current_location(gfx::Point(100, 100));
+ generator.MoveMouseBy(0, 0);
+
EXPECT_EQ(1, mouse_view1->EnteredCalls());
EXPECT_EQ(0, mouse_view1->ExitedCalls());
@@ -967,7 +985,7 @@ TEST_F(WidgetCaptureTest, MouseExitOnCaptureGrab) {
// in addition to the one generated by Chrome.
EXPECT_LT(0, mouse_view1->ExitedCalls());
}
-#endif
+#endif // !defined(OS_CHROMEOS)
namespace {
@@ -1006,7 +1024,7 @@ TEST_F(WidgetCaptureTest, SetCaptureToNonToplevel) {
Widget::InitParams child_params =
CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
child_params.parent = toplevel.GetNativeView();
- child_params.context = toplevel.GetNativeView();
+ child_params.context = toplevel.GetNativeWindow();
child->Init(child_params);
CaptureOnActivationObserver observer;
@@ -1083,7 +1101,7 @@ TEST_F(WidgetCaptureTest, MouseEventDispatchedToRightWindow) {
EXPECT_TRUE(widget1.GetAndClearGotMouseEvent());
EXPECT_FALSE(widget2.GetAndClearGotMouseEvent());
}
-#endif
+#endif // defined(OS_WIN)
} // namespace test
} // namespace views
« no previous file with comments | « ui/views/views.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698