Commit fbd658a9 authored by Peter Kasting's avatar Peter Kasting Committed by Commit Bot

Change ButtonPressed overrides to callbacks: ash/search_box/

Bug: 772945
Change-Id: If7c1862ff6b88af98be69d09722e3a086bd030e9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2516251
Auto-Submit: Peter Kasting <pkasting@chromium.org>
Reviewed-by: default avatarYury Khmel <khmel@chromium.org>
Reviewed-by: default avatarTao Wu <wutao@chromium.org>
Commit-Queue: Tao Wu <wutao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#824119}
parent c3c34ea3
...@@ -227,6 +227,13 @@ int SearchBoxView::GetFocusRingSpacing() { ...@@ -227,6 +227,13 @@ int SearchBoxView::GetFocusRingSpacing() {
void SearchBoxView::SetupCloseButton() { void SearchBoxView::SetupCloseButton() {
views::ImageButton* close = close_button(); views::ImageButton* close = close_button();
close->SetCallback(base::BindRepeating(
[](SearchBoxView* view) {
view->view_delegate_->LogSearchAbandonHistogram();
view->SetSearchBoxActive(false, ui::ET_UNKNOWN);
view->ClearSearch();
},
this));
close->SetImage( close->SetImage(
views::ImageButton::STATE_NORMAL, views::ImageButton::STATE_NORMAL,
gfx::CreateVectorIcon(views::kIcCloseIcon, kSearchBoxIconSize, gfx::CreateVectorIcon(views::kIcCloseIcon, kSearchBoxIconSize,
...@@ -748,15 +755,6 @@ bool SearchBoxView::HandleGestureEvent(views::Textfield* sender, ...@@ -748,15 +755,6 @@ bool SearchBoxView::HandleGestureEvent(views::Textfield* sender,
return SearchBoxViewBase::HandleGestureEvent(sender, gesture_event); return SearchBoxViewBase::HandleGestureEvent(sender, gesture_event);
} }
void SearchBoxView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
if (close_button() && sender == close_button()) {
view_delegate_->LogSearchAbandonHistogram();
SetSearchBoxActive(false, ui::ET_UNKNOWN);
}
SearchBoxViewBase::ButtonPressed(sender, event);
}
void SearchBoxView::UpdateSearchBoxTextForSelectedResult( void SearchBoxView::UpdateSearchBoxTextForSelectedResult(
SearchResult* selected_result) { SearchResult* selected_result) {
if (selected_result->result_type() == if (selected_result->result_type() ==
......
...@@ -69,9 +69,6 @@ class APP_LIST_EXPORT SearchBoxView : public SearchBoxViewBase, ...@@ -69,9 +69,6 @@ class APP_LIST_EXPORT SearchBoxView : public SearchBoxViewBase,
void OnPaintBackground(gfx::Canvas* canvas) override; void OnPaintBackground(gfx::Canvas* canvas) override;
const char* GetClassName() const override; const char* GetClassName() const override;
// Overridden from views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
// Updates the search box's background corner radius and color based on the // Updates the search box's background corner radius and color based on the
// state of AppListModel. // state of AppListModel.
void UpdateBackground(double progress, void UpdateBackground(double progress,
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/paint_vector_icon.h"
#include "ui/views/controls/image_view.h" #include "ui/views/controls/image_view.h"
#include "ui/views/controls/textfield/textfield.h" #include "ui/views/controls/textfield/textfield.h"
#include "ui/views/test/button_test_api.h"
#include "ui/views/test/widget_test.h" #include "ui/views/test/widget_test.h"
namespace ash { namespace ash {
...@@ -211,33 +212,30 @@ TEST_F(SearchBoxViewTest, CloseButtonIVisibleInZeroStateSearchBox) { ...@@ -211,33 +212,30 @@ TEST_F(SearchBoxViewTest, CloseButtonIVisibleInZeroStateSearchBox) {
// Tests that the close button becomes invisible after close button is clicked. // Tests that the close button becomes invisible after close button is clicked.
TEST_F(SearchBoxViewTest, CloseButtonInvisibleAfterCloseButtonClicked) { TEST_F(SearchBoxViewTest, CloseButtonInvisibleAfterCloseButtonClicked) {
KeyPress(ui::VKEY_A); KeyPress(ui::VKEY_A);
view()->ButtonPressed( views::test::ButtonTestApi(view()->close_button())
view()->close_button(), .NotifyClick(ui::MouseEvent(
ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), base::TimeTicks(),
base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
ui::EF_LEFT_MOUSE_BUTTON));
EXPECT_FALSE(view()->close_button()->GetVisible()); EXPECT_FALSE(view()->close_button()->GetVisible());
} }
// Tests that the search box becomes empty after close button is clicked. // Tests that the search box becomes empty after close button is clicked.
TEST_F(SearchBoxViewTest, SearchBoxEmptyAfterCloseButtonClicked) { TEST_F(SearchBoxViewTest, SearchBoxEmptyAfterCloseButtonClicked) {
KeyPress(ui::VKEY_A); KeyPress(ui::VKEY_A);
view()->ButtonPressed( views::test::ButtonTestApi(view()->close_button())
view()->close_button(), .NotifyClick(ui::MouseEvent(
ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), base::TimeTicks(),
base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
ui::EF_LEFT_MOUSE_BUTTON));
EXPECT_TRUE(view()->search_box()->GetText().empty()); EXPECT_TRUE(view()->search_box()->GetText().empty());
} }
// Tests that the search box is no longer active after close button is clicked. // Tests that the search box is no longer active after close button is clicked.
TEST_F(SearchBoxViewTest, SearchBoxActiveAfterCloseButtonClicked) { TEST_F(SearchBoxViewTest, SearchBoxActiveAfterCloseButtonClicked) {
KeyPress(ui::VKEY_A); KeyPress(ui::VKEY_A);
view()->ButtonPressed( views::test::ButtonTestApi(view()->close_button())
view()->close_button(), .NotifyClick(ui::MouseEvent(
ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), base::TimeTicks(),
base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
ui::EF_LEFT_MOUSE_BUTTON));
EXPECT_FALSE(view()->is_search_box_active()); EXPECT_FALSE(view()->is_search_box_active());
} }
......
...@@ -81,8 +81,8 @@ class SearchBoxBackground : public views::Background { ...@@ -81,8 +81,8 @@ class SearchBoxBackground : public views::Background {
// fullscreen launcher. // fullscreen launcher.
class SearchBoxImageButton : public views::ImageButton { class SearchBoxImageButton : public views::ImageButton {
public: public:
explicit SearchBoxImageButton(views::ButtonListener* listener) explicit SearchBoxImageButton(PressedCallback callback)
: ImageButton(listener) { : ImageButton(std::move(callback)) {
SetFocusBehavior(FocusBehavior::ALWAYS); SetFocusBehavior(FocusBehavior::ALWAYS);
// Avoid drawing default dashed focus and draw customized focus in // Avoid drawing default dashed focus and draw customized focus in
...@@ -253,7 +253,8 @@ SearchBoxViewBase::SearchBoxViewBase(SearchBoxViewDelegate* delegate) ...@@ -253,7 +253,8 @@ SearchBoxViewBase::SearchBoxViewBase(SearchBoxViewDelegate* delegate)
search_box_->SetTextInputType(ui::TEXT_INPUT_TYPE_SEARCH); search_box_->SetTextInputType(ui::TEXT_INPUT_TYPE_SEARCH);
search_box_->SetTextInputFlags(ui::TEXT_INPUT_FLAG_AUTOCORRECT_OFF); search_box_->SetTextInputFlags(ui::TEXT_INPUT_FLAG_AUTOCORRECT_OFF);
back_button_ = new SearchBoxImageButton(this); back_button_ = new SearchBoxImageButton(base::BindRepeating(
&SearchBoxViewDelegate::BackButtonPressed, base::Unretained(delegate_)));
content_container_->AddChildView(back_button_); content_container_->AddChildView(back_button_);
search_icon_ = new views::ImageView(); search_icon_ = new views::ImageView();
...@@ -272,13 +273,16 @@ SearchBoxViewBase::SearchBoxViewBase(SearchBoxViewDelegate* delegate) ...@@ -272,13 +273,16 @@ SearchBoxViewBase::SearchBoxViewBase(SearchBoxViewDelegate* delegate)
search_box_right_space_->SetPreferredSize(gfx::Size(kSearchBoxIconSize, 0)); search_box_right_space_->SetPreferredSize(gfx::Size(kSearchBoxIconSize, 0));
content_container_->AddChildView(search_box_right_space_); content_container_->AddChildView(search_box_right_space_);
assistant_button_ = new SearchBoxImageButton(this); assistant_button_ = new SearchBoxImageButton(
base::BindRepeating(&SearchBoxViewDelegate::AssistantButtonPressed,
base::Unretained(delegate_)));
assistant_button_->SetFlipCanvasOnPaintForRTLUI(false); assistant_button_->SetFlipCanvasOnPaintForRTLUI(false);
// Default hidden, child class should decide if it should shown. // Default hidden, child class should decide if it should shown.
assistant_button_->SetVisible(false); assistant_button_->SetVisible(false);
content_container_->AddChildView(assistant_button_); content_container_->AddChildView(assistant_button_);
close_button_ = new SearchBoxImageButton(this); close_button_ = new SearchBoxImageButton(base::BindRepeating(
&SearchBoxViewBase::ClearSearch, base::Unretained(this)));
content_container_->AddChildView(close_button_); content_container_->AddChildView(close_button_);
} }
...@@ -402,19 +406,6 @@ ax::mojom::Role SearchBoxViewBase::GetAccessibleWindowRole() { ...@@ -402,19 +406,6 @@ ax::mojom::Role SearchBoxViewBase::GetAccessibleWindowRole() {
return ax::mojom::Role::kGroup; return ax::mojom::Role::kGroup;
} }
void SearchBoxViewBase::ButtonPressed(views::Button* sender,
const ui::Event& event) {
if (assistant_button_ && sender == assistant_button_) {
delegate_->AssistantButtonPressed();
} else if (back_button_ && sender == back_button_) {
delegate_->BackButtonPressed();
} else if (close_button_ && sender == close_button_) {
ClearSearch();
} else {
NOTREACHED();
}
}
void SearchBoxViewBase::OnSearchBoxFocusedChanged() { void SearchBoxViewBase::OnSearchBoxFocusedChanged() {
UpdateSearchBoxBorder(); UpdateSearchBoxBorder();
Layout(); Layout();
......
...@@ -51,8 +51,7 @@ enum class ActivationSource { ...@@ -51,8 +51,7 @@ enum class ActivationSource {
// a close icon and a back icon for different functionalities. This class // a close icon and a back icon for different functionalities. This class
// provides common functions for the search box view across Chrome OS. // provides common functions for the search box view across Chrome OS.
class SearchBoxViewBase : public views::WidgetDelegateView, class SearchBoxViewBase : public views::WidgetDelegateView,
public views::TextfieldController, public views::TextfieldController {
public views::ButtonListener {
public: public:
explicit SearchBoxViewBase(SearchBoxViewDelegate* delegate); explicit SearchBoxViewBase(SearchBoxViewDelegate* delegate);
~SearchBoxViewBase() override; ~SearchBoxViewBase() override;
...@@ -96,9 +95,6 @@ class SearchBoxViewBase : public views::WidgetDelegateView, ...@@ -96,9 +95,6 @@ class SearchBoxViewBase : public views::WidgetDelegateView,
// Overridden from views::WidgetDelegate: // Overridden from views::WidgetDelegate:
ax::mojom::Role GetAccessibleWindowRole() override; ax::mojom::Role GetAccessibleWindowRole() override;
// Overridden from views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
// Used only in the tests to get the current search icon. // Used only in the tests to get the current search icon.
views::ImageView* get_search_icon_for_test() { return search_icon_; } views::ImageView* get_search_icon_for_test() { return search_icon_; }
......
...@@ -54,5 +54,6 @@ source_set("unit_tests") { ...@@ -54,5 +54,6 @@ source_set("unit_tests") {
"//ui/events:test_support", "//ui/events:test_support",
"//ui/events/devices:test_support", "//ui/events/devices:test_support",
"//ui/views", "//ui/views",
"//ui/views:test_support",
] ]
} }
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "ui/events/devices/device_data_manager_test_api.h" #include "ui/events/devices/device_data_manager_test_api.h"
#include "ui/events/test/event_generator.h" #include "ui/events/test/event_generator.h"
#include "ui/views/controls/textfield/textfield.h" #include "ui/views/controls/textfield/textfield.h"
#include "ui/views/test/button_test_api.h"
#include "ui/views/widget/widget.h" #include "ui/views/widget/widget.h"
namespace keyboard_shortcut_viewer { namespace keyboard_shortcut_viewer {
...@@ -189,11 +190,10 @@ TEST_F(KeyboardShortcutViewTest, FocusOnSearchBox) { ...@@ -189,11 +190,10 @@ TEST_F(KeyboardShortcutViewTest, FocusOnSearchBox) {
// Case 2: Exit search mode by clicking |close_button|. The focus should be on // Case 2: Exit search mode by clicking |close_button|. The focus should be on
// search box. // search box.
GetSearchBoxView()->ButtonPressed( views::test::ButtonTestApi(GetSearchBoxView()->close_button())
GetSearchBoxView()->close_button(), .NotifyClick(ui::MouseEvent(
ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), base::TimeTicks(),
base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
ui::EF_LEFT_MOUSE_BUTTON));
EXPECT_TRUE(GetSearchBoxView()->search_box()->GetText().empty()); EXPECT_TRUE(GetSearchBoxView()->search_box()->GetText().empty());
EXPECT_TRUE(GetSearchBoxView()->search_box()->HasFocus()); EXPECT_TRUE(GetSearchBoxView()->search_box()->HasFocus());
......
...@@ -69,14 +69,6 @@ void KSVSearchBoxView::OnKeyEvent(ui::KeyEvent* event) { ...@@ -69,14 +69,6 @@ void KSVSearchBoxView::OnKeyEvent(ui::KeyEvent* event) {
SetSearchBoxActive(false, event->type()); SetSearchBoxActive(false, event->type());
} }
void KSVSearchBoxView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
// Focus on the search box text field after clicking close button.
if (close_button() && sender == close_button())
search_box()->RequestFocus();
SearchBoxViewBase::ButtonPressed(sender, event);
}
void KSVSearchBoxView::SetAccessibleValue(const base::string16& value) { void KSVSearchBoxView::SetAccessibleValue(const base::string16& value) {
accessible_value_ = value; accessible_value_ = value;
NotifyAccessibilityEvent(ax::mojom::Event::kValueChanged, true); NotifyAccessibilityEvent(ax::mojom::Event::kValueChanged, true);
...@@ -108,6 +100,13 @@ void KSVSearchBoxView::UpdateSearchBoxBorder() { ...@@ -108,6 +100,13 @@ void KSVSearchBoxView::UpdateSearchBoxBorder() {
void KSVSearchBoxView::SetupCloseButton() { void KSVSearchBoxView::SetupCloseButton() {
views::ImageButton* close = close_button(); views::ImageButton* close = close_button();
close->SetCallback(base::BindRepeating(
[](ash::SearchBoxViewBase* view) {
// Focus on the search box text field after clicking close button.
view->search_box()->RequestFocus();
view->ClearSearch();
},
this));
close->SetHasInkDropActionOnClick(true); close->SetHasInkDropActionOnClick(true);
close->SetImage( close->SetImage(
views::ImageButton::STATE_NORMAL, views::ImageButton::STATE_NORMAL,
......
...@@ -26,9 +26,6 @@ class KSVSearchBoxView : public ash::SearchBoxViewBase { ...@@ -26,9 +26,6 @@ class KSVSearchBoxView : public ash::SearchBoxViewBase {
void GetAccessibleNodeData(ui::AXNodeData* node_data) override; void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
void OnKeyEvent(ui::KeyEvent* event) override; void OnKeyEvent(ui::KeyEvent* event) override;
// Overridden from views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
void SetAccessibleValue(const base::string16& value); void SetAccessibleValue(const base::string16& value);
// SearchBoxViewBase: // SearchBoxViewBase:
......
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