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 6ac9451c124230c589fd5f0c8006babf0cf74f5a..f55c37569a0e8902025d4705bf6a8facbf9235fb 100644 |
--- a/ui/views/widget/widget_interactive_uitest.cc |
+++ b/ui/views/widget/widget_interactive_uitest.cc |
@@ -741,7 +741,7 @@ TEST_F(WidgetTestInteractive, WindowModalWindowDestroyedActivationTest) { |
init_params.native_widget = |
new PlatformDesktopNativeWidget(&top_level_widget); |
top_level_widget.Init(init_params); |
- top_level_widget.Show(); |
+ ShowSync(&top_level_widget); |
gfx::NativeView top_level_native_view = top_level_widget.GetNativeView(); |
ASSERT_FALSE(focus_listener.focus_changes().empty()); |
@@ -756,6 +756,9 @@ TEST_F(WidgetTestInteractive, WindowModalWindowDestroyedActivationTest) { |
Widget* modal_dialog_widget = views::DialogDelegate::CreateDialogWidget( |
dialog_delegate, NULL, top_level_widget.GetNativeView()); |
modal_dialog_widget->SetBounds(gfx::Rect(100, 100, 200, 200)); |
+ |
+ // Note the dialog widget doesn't need a ShowSync. Since it is modal, it gains |
+ // active status synchronously, even on Mac. |
modal_dialog_widget->Show(); |
gfx::NativeView modal_native_view = modal_dialog_widget->GetNativeView(); |
@@ -763,7 +766,15 @@ TEST_F(WidgetTestInteractive, WindowModalWindowDestroyedActivationTest) { |
EXPECT_EQ(nullptr, focus_changes[1]); |
EXPECT_EQ(modal_native_view, focus_changes[2]); |
+#if defined(OS_MACOSX) |
+ // Window modal dialogs on Mac are "sheets", which animate to close before |
+ // activating their parent widget. |
+ WidgetActivationWaiter waiter(&top_level_widget, true); |
+ modal_dialog_widget->Close(); |
+ waiter.Wait(); |
+#else |
modal_dialog_widget->CloseNow(); |
+#endif |
EXPECT_EQ(5u, focus_changes.size()); |
EXPECT_EQ(nullptr, focus_changes[3]); |
@@ -773,8 +784,18 @@ TEST_F(WidgetTestInteractive, WindowModalWindowDestroyedActivationTest) { |
WidgetFocusManager::GetInstance()->RemoveFocusChangeListener(&focus_listener); |
} |
+// Disabled on Mac. Desktop Mac doesn't have system modal windows since Carbon |
+// was deprecated. It does have application modal windows, but only Ash requests |
+// those. |
+#if defined(OS_MACOSX) && !defined(USE_AURA) |
+#define MAYBE_SystemModalWindowReleasesCapture \ |
+ DISABLED_SystemModalWindowReleasesCapture |
+#else |
+#define MAYBE_SystemModalWindowReleasesCapture SystemModalWindowReleasesCapture |
+#endif |
+ |
// Test that when opening a system-modal window, capture is released. |
-TEST_F(WidgetTestInteractive, SystemModalWindowReleasesCapture) { |
+TEST_F(WidgetTestInteractive, MAYBE_SystemModalWindowReleasesCapture) { |
TestWidgetFocusChangeListener focus_listener; |
WidgetFocusManager::GetInstance()->AddFocusChangeListener(&focus_listener); |