Commit 47edba64 authored by Thomas Lukaszewicz's avatar Thomas Lukaszewicz Committed by Commit Bot

Moved disabled Widget focus unittest to interactive ui tests

Bug: None
Change-Id: I8102ce6b9c449e657603fd5173b457c4f669f105
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2140778
Commit-Queue: Thomas Lukaszewicz <tluk@chromium.org>
Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#757857}
parent 88b2fc0f
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "ui/events/event_utils.h" #include "ui/events/event_utils.h"
#include "ui/events/test/event_generator.h" #include "ui/events/test/event_generator.h"
#include "ui/gfx/native_widget_types.h" #include "ui/gfx/native_widget_types.h"
#include "ui/views/bubble/bubble_dialog_delegate_view.h"
#include "ui/views/controls/textfield/textfield.h" #include "ui/views/controls/textfield/textfield.h"
#include "ui/views/controls/textfield/textfield_test_api.h" #include "ui/views/controls/textfield/textfield_test_api.h"
#include "ui/views/focus/focus_manager.h" #include "ui/views/focus/focus_manager.h"
...@@ -380,6 +381,39 @@ TEST_F(DesktopWidgetTestInteractive, ...@@ -380,6 +381,39 @@ TEST_F(DesktopWidgetTestInteractive,
widget1->CloseNow(); widget1->CloseNow();
} }
// Verifies bubbles result in a focus lost when shown.
TEST_F(DesktopWidgetTestInteractive, FocusChangesOnBubble) {
Widget* widget = CreateWidget();
View* focusable_view =
widget->GetContentsView()->AddChildView(std::make_unique<View>());
focusable_view->SetFocusBehavior(View::FocusBehavior::ALWAYS);
widget->Show();
focusable_view->RequestFocus();
EXPECT_TRUE(focusable_view->HasFocus());
// Show a bubble.
auto owned_bubble_delegate_view =
std::make_unique<views::BubbleDialogDelegateView>(focusable_view,
BubbleBorder::NONE);
owned_bubble_delegate_view->SetFocusBehavior(View::FocusBehavior::ALWAYS);
BubbleDialogDelegateView* bubble_delegate_view =
owned_bubble_delegate_view.get();
BubbleDialogDelegateView::CreateBubble(owned_bubble_delegate_view.release())
->Show();
bubble_delegate_view->RequestFocus();
// |focusable_view| should no longer have focus.
EXPECT_FALSE(focusable_view->HasFocus());
EXPECT_TRUE(bubble_delegate_view->HasFocus());
bubble_delegate_view->GetWidget()->CloseNow();
// Closing the bubble should result in focus going back to the contents view.
EXPECT_TRUE(focusable_view->HasFocus());
widget->CloseNow();
}
class TouchEventHandler : public ui::EventHandler { class TouchEventHandler : public ui::EventHandler {
public: public:
explicit TouchEventHandler(Widget* widget) : widget_(widget) { explicit TouchEventHandler(Widget* widget) : widget_(widget) {
......
...@@ -1259,37 +1259,6 @@ TEST_F(WidgetTest, KeyboardInputEvent) { ...@@ -1259,37 +1259,6 @@ TEST_F(WidgetTest, KeyboardInputEvent) {
EXPECT_FALSE(backspace_r.handled()); EXPECT_FALSE(backspace_r.handled());
} }
// Verifies bubbles result in a focus lost when shown.
// TODO(msw): this tests relies on focus, it needs to be in
// interactive_ui_tests.
TEST_F(DesktopWidgetTest, DISABLED_FocusChangesOnBubble) {
// Create a widget, show and activate it and focus the contents view.
View* contents_view = new View;
contents_view->SetFocusBehavior(View::FocusBehavior::ALWAYS);
std::unique_ptr<Widget> widget = CreateTestWidget();
widget->SetContentsView(contents_view);
widget->Show();
widget->Activate();
contents_view->RequestFocus();
EXPECT_TRUE(contents_view->HasFocus());
// Show a bubble.
BubbleDialogDelegateView* bubble_delegate_view =
new TestBubbleDialogDelegateView(contents_view);
bubble_delegate_view->SetFocusBehavior(View::FocusBehavior::ALWAYS);
BubbleDialogDelegateView::CreateBubble(bubble_delegate_view)->Show();
bubble_delegate_view->RequestFocus();
// |contents_view_| should no longer have focus.
EXPECT_FALSE(contents_view->HasFocus());
EXPECT_TRUE(bubble_delegate_view->HasFocus());
bubble_delegate_view->GetWidget()->CloseNow();
// Closing the bubble should result in focus going back to the contents view.
EXPECT_TRUE(contents_view->HasFocus());
}
TEST_F(WidgetTest, BubbleControlsResetOnInit) { TEST_F(WidgetTest, BubbleControlsResetOnInit) {
WidgetAutoclosePtr anchor(CreateTopLevelPlatformWidget()); WidgetAutoclosePtr anchor(CreateTopLevelPlatformWidget());
anchor->Show(); anchor->Show();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment