blob: 7cf4c5d361ad3b6af2eb5be9028ee72c59dc3e4d [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_SUGGESTION_BUTTON_ROW_VIEW_H_
#define CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_SUGGESTION_BUTTON_ROW_VIEW_H_
#include "base/macros.h"
#include "components/omnibox/browser/autocomplete_match.h"
#include "components/omnibox/browser/omnibox_popup_model.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/controls/button/md_text_button.h"
#include "ui/views/view.h"
class OmniboxPopupContentsView;
class OmniboxSuggestionRowButton;
// A view to contain the button row within a result view.
class OmniboxSuggestionButtonRowView : public views::View,
public views::ButtonListener {
public:
explicit OmniboxSuggestionButtonRowView(OmniboxPopupContentsView* view,
int model_index);
~OmniboxSuggestionButtonRowView() override;
// Called when themes, styles, and visibility is refreshed in result view.
void OnStyleRefresh();
// Updates the suggestion row buttons based on the model.
void UpdateFromModel();
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
// views::View:
void OnThemeChanged() override;
private:
// Get the popup model from the view.
const OmniboxPopupModel* model() const;
// Digs into the model with index to get the match for owning result view.
const AutocompleteMatch& match() const;
void SetPillButtonVisibility(views::MdTextButton* button,
OmniboxPopupModel::LineState state);
OmniboxPopupContentsView* const popup_contents_view_;
size_t const model_index_;
OmniboxSuggestionRowButton* keyword_button_ = nullptr;
OmniboxSuggestionRowButton* pedal_button_ = nullptr;
OmniboxSuggestionRowButton* tab_switch_button_ = nullptr;
views::FocusRing* keyword_button_focus_ring_ = nullptr;
views::FocusRing* pedal_button_focus_ring_ = nullptr;
views::FocusRing* tab_switch_button_focus_ring_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(OmniboxSuggestionButtonRowView);
};
#endif // CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_SUGGESTION_BUTTON_ROW_VIEW_H_