Commit 5787efcc authored by Jeroen Dhollander's avatar Jeroen Dhollander Committed by Commit Bot

Disable suggestion chips after submitting query

When an Assistant query has been submitted, you should not be able to
interact with the suggestion chips anymore.
Mouse clicks had always been disabled, but a bug still allowed the
user to submit queries using |TAB| and |ENTER|.

This CL also introduces some extra unittests that were missing.

Bug: b/151800188
Change-Id: Iaa132b836716c119656d39243895571af760f291
Tests: new ash_unittests with filter "AssistantPageViewTest.*"
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2129047Reviewed-by: default avatarXiaohui Chen <xiaohuic@chromium.org>
Commit-Queue: Jeroen Dhollander <jeroendh@google.com>
Cr-Commit-Position: refs/heads/master@{#754993}
parent 2553a024
...@@ -245,6 +245,9 @@ void AssistantDialogPlate::OnInputModalityChanged( ...@@ -245,6 +245,9 @@ void AssistantDialogPlate::OnInputModalityChanged(
void AssistantDialogPlate::OnCommittedQueryChanged( void AssistantDialogPlate::OnCommittedQueryChanged(
const AssistantQuery& committed_query) { const AssistantQuery& committed_query) {
// Whenever a query is submitted we return the focus to the dialog plate.
RequestFocus();
DCHECK(query_history_iterator_); DCHECK(query_history_iterator_);
query_history_iterator_->ResetToLast(); query_history_iterator_->ResetToLast();
} }
......
...@@ -359,7 +359,7 @@ TEST_F(AssistantPageViewTest, FocusShouldRemainInAssistantViewWhenPressingTab) { ...@@ -359,7 +359,7 @@ TEST_F(AssistantPageViewTest, FocusShouldRemainInAssistantViewWhenPressingTab) {
int num_views = 0; int num_views = 0;
do { do {
PressKeyAndWait(ui::KeyboardCode::VKEY_TAB); PressKeyAndWait(ui::VKEY_TAB);
focused_view = GetFocusedView(); focused_view = GetFocusedView();
EXPECT_TRUE(page_view()->Contains(focused_view)) EXPECT_TRUE(page_view()->Contains(focused_view))
<< "Focus advanced to view '" << focused_view->GetClassName() << "Focus advanced to view '" << focused_view->GetClassName()
...@@ -479,7 +479,7 @@ TEST_F(AssistantPageViewTest, ...@@ -479,7 +479,7 @@ TEST_F(AssistantPageViewTest,
CreateAndGetSuggestionChip("<suggestion chip query>"); CreateAndGetSuggestionChip("<suggestion chip query>");
suggestion_chip->RequestFocus(); suggestion_chip->RequestFocus();
PressKeyAndWait(ui::KeyboardCode::VKEY_RETURN); PressKeyAndWait(ui::VKEY_RETURN);
EXPECT_INTERACTION_OF_TYPE(AssistantInteractionType::kText); EXPECT_INTERACTION_OF_TYPE(AssistantInteractionType::kText);
EXPECT_EQ("<suggestion chip query>", current_interaction()->query); EXPECT_EQ("<suggestion chip query>", current_interaction()->query);
...@@ -492,7 +492,7 @@ TEST_F(AssistantPageViewTest, ...@@ -492,7 +492,7 @@ TEST_F(AssistantPageViewTest,
CreateAndGetSuggestionChip("<suggestion chip query>"); CreateAndGetSuggestionChip("<suggestion chip query>");
suggestion_chip->RequestFocus(); suggestion_chip->RequestFocus();
PressKeyAndWait(ui::KeyboardCode::VKEY_SPACE); PressKeyAndWait(ui::VKEY_SPACE);
EXPECT_NO_INTERACTION(); EXPECT_NO_INTERACTION();
} }
...@@ -545,7 +545,7 @@ TEST_F(AssistantPageViewTest, ...@@ -545,7 +545,7 @@ TEST_F(AssistantPageViewTest,
auto suggestion_chips = GetSuggestionChips(); auto suggestion_chips = GetSuggestionChips();
suggestion_chips[0]->RequestFocus(); suggestion_chips[0]->RequestFocus();
PressKeyAndWait(ui::KeyboardCode::VKEY_RETURN); PressKeyAndWait(ui::VKEY_RETURN);
for (auto* suggestion_chip : suggestion_chips) { for (auto* suggestion_chip : suggestion_chips) {
EXPECT_FALSE(suggestion_chip->IsFocusable()) EXPECT_FALSE(suggestion_chip->IsFocusable())
...@@ -561,7 +561,7 @@ TEST_F(AssistantPageViewTest, ...@@ -561,7 +561,7 @@ TEST_F(AssistantPageViewTest,
CreateAndGetSuggestionChip("<suggestion chip query>"); CreateAndGetSuggestionChip("<suggestion chip query>");
suggestion_chip->RequestFocus(); suggestion_chip->RequestFocus();
PressKeyAndWait(ui::KeyboardCode::VKEY_RETURN); PressKeyAndWait(ui::VKEY_RETURN);
EXPECT_HAS_FOCUS(input_text_field()); EXPECT_HAS_FOCUS(input_text_field());
} }
...@@ -574,7 +574,7 @@ TEST_F(AssistantPageViewTest, ...@@ -574,7 +574,7 @@ TEST_F(AssistantPageViewTest,
ClickOnAndWait(voice_input_toggle()); ClickOnAndWait(voice_input_toggle());
suggestion_chip->RequestFocus(); suggestion_chip->RequestFocus();
PressKeyAndWait(ui::KeyboardCode::VKEY_RETURN); PressKeyAndWait(ui::VKEY_RETURN);
EXPECT_HAS_FOCUS(mic_view()); EXPECT_HAS_FOCUS(mic_view());
} }
...@@ -588,6 +588,28 @@ TEST_F(AssistantPageViewTest, ...@@ -588,6 +588,28 @@ TEST_F(AssistantPageViewTest,
EXPECT_HAS_FOCUS(input_text_field()); EXPECT_HAS_FOCUS(input_text_field());
} }
TEST_F(AssistantPageViewTest,
ShouldNotScrollSuggestionChipsWhenSubmittingQuery) {
ShowAssistantUiInTextMode();
MockTextInteraction()
.WithSuggestionChip("there are x")
.WithSuggestionChip("enough queries x")
.WithSuggestionChip("to ensure x")
.WithSuggestionChip("the x")
.WithSuggestionChip("suggestion chips container x")
.WithSuggestionChip("can scroll. x");
views::View* chip = GetSuggestionChips()[3];
chip->RequestFocus();
chip->ScrollViewToVisible();
gfx::Rect initial_bounds = chip->GetBoundsInScreen();
PressKeyAndWait(ui::VKEY_RETURN);
gfx::Rect final_bounds = chip->GetBoundsInScreen();
EXPECT_EQ(initial_bounds, final_bounds);
}
TEST_F(AssistantPageViewTest, RememberAndShowHistory) { TEST_F(AssistantPageViewTest, RememberAndShowHistory) {
ShowAssistantUiInTextMode(); ShowAssistantUiInTextMode();
EXPECT_HAS_FOCUS(input_text_field()); EXPECT_HAS_FOCUS(input_text_field());
...@@ -599,19 +621,19 @@ TEST_F(AssistantPageViewTest, RememberAndShowHistory) { ...@@ -599,19 +621,19 @@ TEST_F(AssistantPageViewTest, RememberAndShowHistory) {
EXPECT_TRUE(input_text_field()->GetText().empty()); EXPECT_TRUE(input_text_field()->GetText().empty());
PressKey(ui::KeyboardCode::VKEY_UP); PressKey(ui::VKEY_UP);
EXPECT_EQ(input_text_field()->GetText(), base::UTF8ToUTF16("query 2")); EXPECT_EQ(input_text_field()->GetText(), base::UTF8ToUTF16("query 2"));
PressKey(ui::KeyboardCode::VKEY_UP); PressKey(ui::VKEY_UP);
EXPECT_EQ(input_text_field()->GetText(), base::UTF8ToUTF16("query 1")); EXPECT_EQ(input_text_field()->GetText(), base::UTF8ToUTF16("query 1"));
PressKey(ui::KeyboardCode::VKEY_UP); PressKey(ui::VKEY_UP);
EXPECT_EQ(input_text_field()->GetText(), base::UTF8ToUTF16("query 1")); EXPECT_EQ(input_text_field()->GetText(), base::UTF8ToUTF16("query 1"));
PressKey(ui::KeyboardCode::VKEY_DOWN); PressKey(ui::VKEY_DOWN);
EXPECT_EQ(input_text_field()->GetText(), base::UTF8ToUTF16("query 2")); EXPECT_EQ(input_text_field()->GetText(), base::UTF8ToUTF16("query 2"));
PressKey(ui::KeyboardCode::VKEY_DOWN); PressKey(ui::VKEY_DOWN);
EXPECT_TRUE(input_text_field()->GetText().empty()); EXPECT_TRUE(input_text_field()->GetText().empty());
} }
......
...@@ -277,6 +277,9 @@ void AnimatedContainerView::FadeOutViews() { ...@@ -277,6 +277,9 @@ void AnimatedContainerView::FadeOutViews() {
} }
void AnimatedContainerView::SetInteractionsEnabled(bool enabled) { void AnimatedContainerView::SetInteractionsEnabled(bool enabled) {
set_can_process_events_within_subtree(enabled);
// We also need to enable/disable the individual views, to enable/disable
// processing of key events.
for (const auto& animator : animators_) for (const auto& animator : animators_)
animator->view()->SetEnabled(enabled); animator->view()->SetEnabled(enabled);
} }
......
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