Commit 05d51a4c authored by Allen Bauer's avatar Allen Bauer Committed by Commit Bot

Removed use of ButtonListener in favor of a set callback.

Bug: 772945
Change-Id: I3ef3c5d1dda8d9d37ce165323fdcd384cbe8c5d5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2468944
Commit-Queue: Allen Bauer <kylixrd@chromium.org>
Commit-Queue: Tao Wu <wutao@chromium.org>
Reviewed-by: default avatarTao Wu <wutao@chromium.org>
Auto-Submit: Allen Bauer <kylixrd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#816825}
parent 60b7e012
......@@ -24,6 +24,7 @@
#include "ash/test/ash_test_helper.h"
#include "base/run_loop.h"
#include "base/test/task_environment.h"
#include "ui/views/view_utils.h"
namespace ash {
......@@ -66,8 +67,7 @@ void PressHomeButton() {
// This includes direct and indirect children.
// For this class to work, _ChildView must:
// * Inherit from |views::View|.
// * Have a static variable called |kClassName|.
// * Return |_ChildView::kClassName| from its GetClassName() method.
// * Implement view metadata (see comments on views::View).
template <class _ChildView>
class ChildViewCollector {
public:
......@@ -84,7 +84,7 @@ class ChildViewCollector {
private:
void Get(views::View* view, Views* result) {
if (view->GetClassName() == _ChildView::kClassName)
if (views::IsViewClass<_ChildView>(view))
result->push_back(static_cast<_ChildView*>(view));
for (views::View* child : view->children())
Get(child, result);
......
......@@ -7,6 +7,7 @@
#include "ash/assistant/model/assistant_ui_model.h"
#include "ash/assistant/ui/base/assistant_button_listener.h"
#include "ash/assistant/util/histogram_util.h"
#include "base/bind.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/gfx/color_utils.h"
#include "ui/gfx/paint_vector_icon.h"
......@@ -34,7 +35,10 @@ AssistantButton::InitParams::~InitParams() = default;
AssistantButton::AssistantButton(AssistantButtonListener* listener,
AssistantButtonId button_id)
: views::ImageButton(this), listener_(listener), id_(button_id) {
: views::ImageButton(base::BindRepeating(&AssistantButton::OnButtonPressed,
base::Unretained(this))),
listener_(listener),
id_(button_id) {
constexpr SkColor kInkDropBaseColor = SK_ColorBLACK;
constexpr float kInkDropVisibleOpacity = 0.06f;
......@@ -121,8 +125,7 @@ std::unique_ptr<views::InkDropRipple> AssistantButton::CreateInkDropRipple()
GetInkDropBaseColor(), GetInkDropVisibleOpacity());
}
void AssistantButton::ButtonPressed(views::Button* sender,
const ui::Event& event) {
void AssistantButton::OnButtonPressed() {
assistant::util::IncrementAssistantButtonClickCount(id_);
listener_->OnButtonPressed(id_);
}
......
......@@ -28,8 +28,7 @@ class AssistantButtonListener;
enum class AssistantButtonId;
class COMPONENT_EXPORT(ASSISTANT_UI) AssistantButton
: public views::ImageButton,
public views::ButtonListener {
: public views::ImageButton {
public:
// Initialization parameters for customizing the Assistant button.
struct InitParams {
......@@ -56,6 +55,8 @@ class COMPONENT_EXPORT(ASSISTANT_UI) AssistantButton
AssistantButton(AssistantButtonListener* listener,
AssistantButtonId button_id);
AssistantButton(const AssistantButton&) = delete;
AssistantButton& operator=(const AssistantButton&) = delete;
~AssistantButton() override;
// Creates a button with the default Assistant styles.
......@@ -75,14 +76,11 @@ class COMPONENT_EXPORT(ASSISTANT_UI) AssistantButton
const override;
std::unique_ptr<views::InkDropRipple> CreateInkDropRipple() const override;
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
private:
void OnButtonPressed();
AssistantButtonListener* listener_;
const AssistantButtonId id_;
DISALLOW_COPY_AND_ASSIGN(AssistantButton);
};
} // namespace ash
......
......@@ -9,6 +9,7 @@
#include "base/optional.h"
#include "ui/views/controls/scrollbar/overlay_scroll_bar.h"
#include "ui/views/metadata/metadata_impl_macros.h"
namespace ash {
......@@ -93,10 +94,6 @@ AssistantScrollView::AssistantScrollView() {
AssistantScrollView::~AssistantScrollView() = default;
const char* AssistantScrollView::GetClassName() const {
return "AssistantScrollView";
}
void AssistantScrollView::OnViewPreferredSizeChanged(views::View* view) {
DCHECK_EQ(content_view_, view);
......@@ -131,4 +128,7 @@ void AssistantScrollView::InitLayout() {
std::make_unique<InvisibleScrollBar>(&observers_, /*horizontal=*/false));
}
BEGIN_METADATA(AssistantScrollView, views::ScrollView)
END_METADATA
} // namespace ash
......@@ -8,6 +8,7 @@
#include "base/component_export.h"
#include "base/observer_list.h"
#include "ui/views/controls/scroll_view.h"
#include "ui/views/metadata/metadata_header_macros.h"
#include "ui/views/view_observer.h"
namespace ash {
......@@ -36,14 +37,13 @@ class COMPONENT_EXPORT(ASSISTANT_UI) AssistantScrollView
~Observer() override = default;
};
METADATA_HEADER(AssistantScrollView);
AssistantScrollView();
AssistantScrollView(const AssistantScrollView&) = delete;
AssistantScrollView& operator=(const AssistantScrollView) = delete;
~AssistantScrollView() override;
// views::ScrollView:
const char* GetClassName() const override;
// views::ViewObserver:
void OnViewPreferredSizeChanged(views::View* view) override;
......
......@@ -14,6 +14,7 @@
#include "chromeos/services/assistant/public/cpp/features.h"
#include "ui/compositor/callback_layer_animation_observer.h"
#include "ui/compositor/layer_animator.h"
#include "ui/views/metadata/metadata_impl_macros.h"
namespace ash {
......@@ -378,4 +379,7 @@ bool AnimatedContainerView::FadeOutObserverCallback(
return true;
}
BEGIN_METADATA(AnimatedContainerView, AssistantScrollView)
END_METADATA
} // namespace ash
......@@ -15,6 +15,7 @@
#include "ash/public/cpp/assistant/controller/assistant_controller_observer.h"
#include "base/scoped_observer.h"
#include "chromeos/services/assistant/public/cpp/assistant_service.h"
#include "ui/views/metadata/metadata_header_macros.h"
namespace ui {
class CallbackLayerAnimationObserver;
......@@ -62,7 +63,11 @@ class COMPONENT_EXPORT(ASSISTANT_UI) AnimatedContainerView
public:
using AssistantSuggestion = chromeos::assistant::AssistantSuggestion;
METADATA_HEADER(AnimatedContainerView);
explicit AnimatedContainerView(AssistantViewDelegate* delegate);
AnimatedContainerView(const AnimatedContainerView&) = delete;
AnimatedContainerView& operator=(const AnimatedContainerView&) = delete;
~AnimatedContainerView() override;
// AssistantScrollView:
......@@ -168,8 +173,6 @@ class COMPONENT_EXPORT(ASSISTANT_UI) AnimatedContainerView
assistant_controller_observer_{this};
base::WeakPtrFactory<AnimatedContainerView> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(AnimatedContainerView);
};
} // namespace ash
......
......@@ -7,6 +7,7 @@
#include "ash/assistant/ui/assistant_ui_constants.h"
#include "ash/assistant/ui/assistant_view_delegate.h"
#include "ash/assistant/util/resource_util.h"
#include "base/bind.h"
#include "base/stl_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chromeos/services/assistant/public/cpp/assistant_service.h"
......@@ -17,6 +18,7 @@
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
#include "ui/views/layout/flex_layout.h"
#include "ui/views/metadata/metadata_impl_macros.h"
#include "ui/views/view_class_properties.h"
namespace ash {
......@@ -66,14 +68,13 @@ SkColor GetForegroundColor(int index) {
// AssistantOnboardingSuggestionView -------------------------------------------
// static
constexpr char AssistantOnboardingSuggestionView::kClassName[];
AssistantOnboardingSuggestionView::AssistantOnboardingSuggestionView(
AssistantViewDelegate* delegate,
const chromeos::assistant::AssistantSuggestion& suggestion,
int index)
: views::Button(this),
: views::Button(base::BindRepeating(
&AssistantOnboardingSuggestionView::OnButtonPressed,
base::Unretained(this))),
delegate_(delegate),
suggestion_id_(suggestion.id),
index_(index) {
......@@ -83,10 +84,6 @@ AssistantOnboardingSuggestionView::AssistantOnboardingSuggestionView(
AssistantOnboardingSuggestionView::~AssistantOnboardingSuggestionView() =
default;
const char* AssistantOnboardingSuggestionView::GetClassName() const {
return kClassName;
}
int AssistantOnboardingSuggestionView::GetHeightForWidth(int width) const {
return kPreferredHeightDip;
}
......@@ -116,11 +113,6 @@ void AssistantOnboardingSuggestionView::RemoveLayerBeneathView(
ink_drop_container_->RemoveLayerBeneathView(layer);
}
void AssistantOnboardingSuggestionView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
delegate_->OnSuggestionPressed(suggestion_id_);
}
const gfx::ImageSkia& AssistantOnboardingSuggestionView::GetIcon() const {
return icon_->GetImage();
}
......@@ -227,4 +219,11 @@ void AssistantOnboardingSuggestionView::UpdateIcon(const gfx::ImageSkia& icon) {
icon_->SetImage(icon);
}
void AssistantOnboardingSuggestionView::OnButtonPressed() {
delegate_->OnSuggestionPressed(suggestion_id_);
}
BEGIN_METADATA(AssistantOnboardingSuggestionView, views::Button)
END_METADATA
} // namespace ash
\ No newline at end of file
......@@ -8,6 +8,7 @@
#include "base/component_export.h"
#include "base/unguessable_token.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/metadata/metadata_header_macros.h"
namespace chromeos {
namespace assistant {
......@@ -26,10 +27,9 @@ namespace ash {
class AssistantViewDelegate;
class COMPONENT_EXPORT(ASSISTANT_UI) AssistantOnboardingSuggestionView
: public views::Button,
public views::ButtonListener {
: public views::Button {
public:
static constexpr char kClassName[] = "AssistantOnboardingSuggestionView";
METADATA_HEADER(AssistantOnboardingSuggestionView);
AssistantOnboardingSuggestionView(
AssistantViewDelegate* delegate,
......@@ -43,15 +43,11 @@ class COMPONENT_EXPORT(ASSISTANT_UI) AssistantOnboardingSuggestionView
~AssistantOnboardingSuggestionView() override;
// views::View:
const char* GetClassName() const override;
int GetHeightForWidth(int width) const override;
void ChildPreferredSizeChanged(views::View* child) override;
void AddLayerBeneathView(ui::Layer* layer) override;
void RemoveLayerBeneathView(ui::Layer* layer) override;
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
// Returns the icon for the suggestion.
const gfx::ImageSkia& GetIcon() const;
......@@ -62,6 +58,8 @@ class COMPONENT_EXPORT(ASSISTANT_UI) AssistantOnboardingSuggestionView
void InitLayout(const chromeos::assistant::AssistantSuggestion& suggestion);
void UpdateIcon(const gfx::ImageSkia& icon);
void OnButtonPressed();
AssistantViewDelegate* const delegate_; // Owned by AssistantController.
const base::UnguessableToken suggestion_id_;
const int index_;
......
......@@ -36,6 +36,7 @@
#include "ui/gfx/paint_vector_icon.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
#include "ui/views/view_utils.h"
namespace ash {
......@@ -64,7 +65,7 @@ void FindDescendentByClassName(views::View* parent, T** result) {
auto* candidate = children.front();
children.pop();
if (candidate->GetClassName() == T::kClassName) {
if (views::IsViewClass<T>(candidate)) {
*result = static_cast<T*>(candidate);
return;
}
......
......@@ -11,11 +11,14 @@
#include "ash/assistant/ui/assistant_view_delegate.h"
#include "ash/assistant/ui/assistant_view_ids.h"
#include "ash/strings/grit/ash_strings.h"
#include "base/bind.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/color_palette.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/controls/styled_label.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/metadata/metadata_impl_macros.h"
namespace ash {
......@@ -48,14 +51,20 @@ base::string16 GetAction(int consent_status) {
class AssistantOptInContainer : public views::Button {
public:
explicit AssistantOptInContainer(views::ButtonListener* listener)
: views::Button(listener) {
METADATA_HEADER(AssistantOptInContainer);
explicit AssistantOptInContainer(views::Button::PressedCallback callback)
: views::Button(callback) {
constexpr float kHighlightOpacity = 0.06f;
SetFocusPainter(views::Painter::CreateSolidRoundRectPainter(
SkColorSetA(SK_ColorBLACK, 0xff * kHighlightOpacity),
kPreferredHeightDip / 2));
}
AssistantOptInContainer(const AssistantOptInContainer&) = delete;
AssistantOptInContainer& operator=(const AssistantOptInContainer) = delete;
~AssistantOptInContainer() override = default;
// views::View:
......@@ -78,11 +87,11 @@ class AssistantOptInContainer : public views::Button {
flags.setColor(gfx::kGoogleBlue500);
canvas->DrawRoundRect(GetContentsBounds(), height() / 2, flags);
}
private:
DISALLOW_COPY_AND_ASSIGN(AssistantOptInContainer);
};
BEGIN_METADATA(AssistantOptInContainer, views::Button)
END_METADATA
} // namespace
// AssistantOptInView ----------------------------------------------------------
......@@ -98,10 +107,6 @@ AssistantOptInView::~AssistantOptInView() {
AssistantState::Get()->RemoveObserver(this);
}
const char* AssistantOptInView::GetClassName() const {
return "AssistantOptInView";
}
void AssistantOptInView::ChildPreferredSizeChanged(views::View* child) {
PreferredSizeChanged();
}
......@@ -110,11 +115,6 @@ void AssistantOptInView::OnBoundsChanged(const gfx::Rect& previous_bounds) {
label_->SizeToFit(width());
}
void AssistantOptInView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
delegate_->OnOptInButtonPressed();
}
void AssistantOptInView::OnAssistantConsentStatusChanged(int consent_status) {
UpdateLabel(consent_status);
}
......@@ -132,7 +132,8 @@ void AssistantOptInView::InitLayout() {
// Container.
container_ = AddChildView(
std::make_unique<AssistantOptInContainer>(/*listener=*/this));
std::make_unique<AssistantOptInContainer>(base::BindRepeating(
&AssistantOptInView::OnButtonPressed, base::Unretained(this))));
layout_manager =
container_->SetLayoutManager(std::make_unique<views::BoxLayout>(
......@@ -187,4 +188,11 @@ void AssistantOptInView::UpdateLabel(int consent_status) {
container_->SchedulePaint();
}
void AssistantOptInView::OnButtonPressed() {
delegate_->OnOptInButtonPressed();
}
BEGIN_METADATA(AssistantOptInView, views::View)
END_METADATA
} // namespace ash
......@@ -8,9 +8,11 @@
#include "ash/public/cpp/assistant/assistant_state.h"
#include "base/component_export.h"
#include "base/macros.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/metadata/metadata_header_macros.h"
#include "ui/views/view.h"
namespace views {
class Button;
class StyledLabel;
} // namespace views
......@@ -22,20 +24,19 @@ class AssistantViewDelegate;
class COMPONENT_EXPORT(ASSISTANT_UI) AssistantOptInView
: public views::View,
public views::ButtonListener,
public AssistantStateObserver {
public:
METADATA_HEADER(AssistantOptInView);
explicit AssistantOptInView(AssistantViewDelegate* delegate_);
AssistantOptInView(const AssistantOptInView&) = delete;
AssistantOptInView& operator=(const AssistantOptInView&) = delete;
~AssistantOptInView() override;
// views::View:
const char* GetClassName() const override;
void ChildPreferredSizeChanged(views::View* child) override;
void OnBoundsChanged(const gfx::Rect& previous_bounds) override;
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
// AssistantStateObserver:
void OnAssistantConsentStatusChanged(int consent_status) override;
......@@ -43,13 +44,13 @@ class COMPONENT_EXPORT(ASSISTANT_UI) AssistantOptInView
void InitLayout();
void UpdateLabel(int consent_status);
void OnButtonPressed();
views::StyledLabel* label_; // Owned by view hierarchy.
views::Button* container_;
AssistantViewDelegate* delegate_;
DISALLOW_COPY_AND_ASSIGN(AssistantOptInView);
};
} // namespace ash
......
......@@ -20,6 +20,7 @@
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/metadata/metadata_impl_macros.h"
namespace ash {
......@@ -42,22 +43,14 @@ constexpr int kPreferredHeightDip = 32;
// SuggestionChipView ----------------------------------------------------------
// static
constexpr char SuggestionChipView::kClassName[];
SuggestionChipView::SuggestionChipView(AssistantViewDelegate* delegate,
const AssistantSuggestion& suggestion,
views::ButtonListener* listener)
: Button(listener), delegate_(delegate), suggestion_id_(suggestion.id) {
const AssistantSuggestion& suggestion)
: delegate_(delegate), suggestion_id_(suggestion.id) {
InitLayout(suggestion);
}
SuggestionChipView::~SuggestionChipView() = default;
const char* SuggestionChipView::GetClassName() const {
return kClassName;
}
gfx::Size SuggestionChipView::CalculatePreferredSize() const {
const int preferred_width = views::View::CalculatePreferredSize().width();
return gfx::Size(preferred_width, GetHeightForWidth(preferred_width));
......@@ -189,4 +182,7 @@ const base::string16& SuggestionChipView::GetText() const {
return text_view_->GetText();
}
BEGIN_METADATA(SuggestionChipView, views::Button)
END_METADATA
} // namespace ash
......@@ -9,6 +9,7 @@
#include "base/macros.h"
#include "chromeos/services/assistant/public/cpp/assistant_service.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/metadata/metadata_header_macros.h"
namespace views {
class BoxLayout;
......@@ -25,15 +26,15 @@ class COMPONENT_EXPORT(ASSISTANT_UI) SuggestionChipView : public views::Button {
public:
using AssistantSuggestion = chromeos::assistant::AssistantSuggestion;
static constexpr char kClassName[] = "SuggestionChipView";
METADATA_HEADER(SuggestionChipView);
SuggestionChipView(AssistantViewDelegate* delegate,
const AssistantSuggestion& suggestion,
views::ButtonListener* listener);
const AssistantSuggestion& suggestion);
SuggestionChipView(const SuggestionChipView&) = delete;
SuggestionChipView& operator=(const SuggestionChipView&) = delete;
~SuggestionChipView() override;
// views::View:
const char* GetClassName() const override;
gfx::Size CalculatePreferredSize() const override;
int GetHeightForWidth(int width) const override;
void ChildVisibilityChanged(views::View* child) override;
......@@ -62,8 +63,6 @@ class COMPONENT_EXPORT(ASSISTANT_UI) SuggestionChipView : public views::Button {
views::Label* text_view_; // Owned by view hierarchy.
base::WeakPtrFactory<SuggestionChipView> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(SuggestionChipView);
};
} // namespace ash
......
......@@ -38,8 +38,7 @@ TEST_F(SuggestionChipViewTest, ShouldHandleLocalIcons) {
SuggestionChipView suggestion_chip_view(
/*delegate=*/nullptr,
CreateSuggestionWithIconUrl(
"googleassistant://resource?type=icon&name=assistant"),
/*listener=*/nullptr);
"googleassistant://resource?type=icon&name=assistant"));
const auto& actual = suggestion_chip_view.GetIcon();
gfx::ImageSkia expected = gfx::CreateVectorIcon(
......@@ -62,8 +61,7 @@ TEST_F(SuggestionChipViewTest, ShouldHandleRemoteIcons) {
SuggestionChipView suggestion_chip_view(
&delegate,
CreateSuggestionWithIconUrl("https://www.gstatic.com/images/branding/"
"product/2x/googleg_48dp.png"),
/*listener=*/nullptr);
"product/2x/googleg_48dp.png"));
const auto& actual = suggestion_chip_view.GetIcon();
EXPECT_TRUE(actual.BackedBySameObjectAs(expected));
......
......@@ -26,6 +26,7 @@
#include "ui/compositor/callback_layer_animation_observer.h"
#include "ui/compositor/layer_animation_element.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/metadata/metadata_impl_macros.h"
namespace ash {
......@@ -115,10 +116,6 @@ SuggestionContainerView::~SuggestionContainerView() {
AssistantSuggestionsController::Get()->GetModel()->RemoveObserver(this);
}
const char* SuggestionContainerView::GetClassName() const {
return "SuggestionContainerView";
}
gfx::Size SuggestionContainerView::CalculatePreferredSize() const {
return gfx::Size(INT_MAX, GetHeightForWidth(INT_MAX));
}
......@@ -201,8 +198,11 @@ void SuggestionContainerView::OnAllViewsRemoved() {
std::unique_ptr<ElementAnimator> SuggestionContainerView::AddSuggestionChip(
const AssistantSuggestion& suggestion) {
auto suggestion_chip_view = std::make_unique<SuggestionChipView>(
delegate(), suggestion, /*listener=*/this);
auto suggestion_chip_view =
std::make_unique<SuggestionChipView>(delegate(), suggestion);
suggestion_chip_view->set_callback(base::BindRepeating(
&SuggestionContainerView::OnButtonPressed, base::Unretained(this),
base::Unretained(suggestion_chip_view.get())));
// The chip will be animated on its own layer.
suggestion_chip_view->SetPaintToLayer();
......@@ -214,13 +214,6 @@ std::unique_ptr<ElementAnimator> SuggestionContainerView::AddSuggestionChip(
contents()->AddChildView(std::move(suggestion_chip_view)), this);
}
void SuggestionContainerView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
// Remember which chip was selected, so we can give it a special animation.
selected_chip_ = static_cast<SuggestionChipView*>(sender);
delegate()->OnSuggestionPressed(selected_chip_->suggestion_id());
}
void SuggestionContainerView::OnUiVisibilityChanged(
AssistantVisibility new_visibility,
AssistantVisibility old_visibility,
......@@ -248,4 +241,13 @@ void SuggestionContainerView::OnUiVisibilityChanged(
views::BoxLayout::MainAxisAlignment::kCenter);
}
void SuggestionContainerView::OnButtonPressed(SuggestionChipView* chip_view) {
// Remember which chip was selected, so we can give it a special animation.
selected_chip_ = chip_view;
delegate()->OnSuggestionPressed(selected_chip_->suggestion_id());
}
BEGIN_METADATA(SuggestionContainerView, AnimatedContainerView)
END_METADATA
} // namespace ash
......@@ -18,6 +18,7 @@
#include "base/scoped_observer.h"
#include "chromeos/services/assistant/public/cpp/assistant_service.h"
#include "ui/views/controls/scroll_view.h"
#include "ui/views/metadata/metadata_header_macros.h"
namespace views {
class BoxLayout;
......@@ -33,16 +34,18 @@ class AssistantViewDelegate;
class COMPONENT_EXPORT(ASSISTANT_UI) SuggestionContainerView
: public AnimatedContainerView,
public AssistantSuggestionsModelObserver,
public AssistantUiModelObserver,
public views::ButtonListener {
public AssistantUiModelObserver {
public:
using AssistantSuggestion = chromeos::assistant::AssistantSuggestion;
METADATA_HEADER(SuggestionContainerView);
explicit SuggestionContainerView(AssistantViewDelegate* delegate);
SuggestionContainerView(const SuggestionContainerView&) = delete;
SuggestionContainerView& operator=(const SuggestionContainerView&) = delete;
~SuggestionContainerView() override;
// AnimatedContainerView:
const char* GetClassName() const override;
gfx::Size CalculatePreferredSize() const override;
int GetHeightForWidth(int width) const override;
void OnContentsPreferredSizeChanged(views::View* content_view) override;
......@@ -60,9 +63,6 @@ class COMPONENT_EXPORT(ASSISTANT_UI) SuggestionContainerView
base::Optional<AssistantEntryPoint> entry_point,
base::Optional<AssistantExitPoint> exit_point) override;
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
// The suggestion chip that was pressed by the user. May be |nullptr|.
const SuggestionChipView* selected_chip() const { return selected_chip_; }
......@@ -77,6 +77,8 @@ class COMPONENT_EXPORT(ASSISTANT_UI) SuggestionContainerView
std::unique_ptr<ElementAnimator> AddSuggestionChip(
const AssistantSuggestion& suggestion);
void OnButtonPressed(SuggestionChipView* chip_view);
views::BoxLayout* layout_manager_; // Owned by view hierarchy.
// Whether or not we have committed a query during this Assistant session.
......@@ -84,8 +86,6 @@ class COMPONENT_EXPORT(ASSISTANT_UI) SuggestionContainerView
// The suggestion chip that was pressed by the user. May be |nullptr|.
const SuggestionChipView* selected_chip_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(SuggestionContainerView);
};
} // namespace ash
......
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