| 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..b1dda58b15b158356b814f5787ab748b7aa5e0e1 100644
|
| --- a/ui/views/widget/widget_interactive_uitest.cc
|
| +++ b/ui/views/widget/widget_interactive_uitest.cc
|
| @@ -782,6 +782,58 @@ TEST_F(WidgetTestInteractive, TouchSelectionQuickMenuIsNotActivated) {
|
| textfield_test_api.touch_selection_controller())));
|
| }
|
|
|
| +TEST_F(WidgetTestInteractive, DisableViewDoesNotActivateWidget) {
|
| +#if defined(OS_WIN)
|
| + views_delegate().set_use_desktop_native_widgets(true);
|
| +#endif // !defined(OS_WIN)
|
| +
|
| + // Create first widget and view, activate the widget, and focus the view.
|
| + Widget widget1;
|
| + Widget::InitParams params1 = CreateParams(Widget::InitParams::TYPE_POPUP);
|
| + params1.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
|
| + params1.activatable = Widget::InitParams::ACTIVATABLE_YES;
|
| + widget1.Init(params1);
|
| +
|
| + View* view1 = new View();
|
| + view1->SetFocusable(true);
|
| + widget1.GetRootView()->AddChildView(view1);
|
| +
|
| + widget1.Activate();
|
| + EXPECT_TRUE(widget1.IsActive());
|
| +
|
| + FocusManager* focus_manager1 = widget1.GetFocusManager();
|
| + ASSERT_TRUE(focus_manager1);
|
| + focus_manager1->SetFocusedView(view1);
|
| + EXPECT_EQ(view1, focus_manager1->GetFocusedView());
|
| +
|
| + // Create second widget and view, activate the widget, and focus the view.
|
| + Widget widget2;
|
| + Widget::InitParams params2 = CreateParams(Widget::InitParams::TYPE_POPUP);
|
| + params2.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
|
| + params2.activatable = Widget::InitParams::ACTIVATABLE_YES;
|
| + widget2.Init(params2);
|
| +
|
| + View* view2 = new View();
|
| + view2->SetFocusable(true);
|
| + widget2.GetRootView()->AddChildView(view2);
|
| +
|
| + widget2.Activate();
|
| + EXPECT_TRUE(widget2.IsActive());
|
| + EXPECT_FALSE(widget1.IsActive());
|
| +
|
| + FocusManager* focus_manager2 = widget2.GetFocusManager();
|
| + ASSERT_TRUE(focus_manager2);
|
| + focus_manager2->SetFocusedView(view2);
|
| + EXPECT_EQ(view2, focus_manager2->GetFocusedView());
|
| +
|
| + // Disable the first view and make sure it loses focus, but its widget is not
|
| + // activated.
|
| + view1->SetEnabled(false);
|
| + EXPECT_NE(view1, focus_manager1->GetFocusedView());
|
| + EXPECT_FALSE(widget1.IsActive());
|
| + EXPECT_TRUE(widget2.IsActive());
|
| +}
|
| +
|
| namespace {
|
|
|
| // Used to veirfy OnMouseCaptureLost() has been invoked.
|
|
|