Commit 3f90bc7e authored by Elaine Chien's avatar Elaine Chien Committed by Commit Bot

Add View Builder support and metadata to reload button

Bug: 1130078
Change-Id: Ic4a7e8812d14e68c2221d49e4cb23937c1e64d1e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2451293
Commit-Queue: Elaine Chien <elainec@chromium.org>
Auto-Submit: Elaine Chien <elainec@chromium.org>
Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#814020}
parent 4c3160e0
......@@ -23,6 +23,7 @@
#include "ui/base/window_open_disposition.h"
#include "ui/gfx/color_palette.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/views/metadata/metadata_impl_macros.h"
#include "ui/views/metrics.h"
#include "ui/views/widget/widget.h"
......@@ -39,9 +40,6 @@ const gfx::VectorIcon& GetIconForMode(bool is_reload) {
// ReloadButton ---------------------------------------------------------------
// static
const char ReloadButton::kViewClassName[] = "ReloadButton";
ReloadButton::ReloadButton(CommandUpdater* command_updater)
: ToolbarButton(base::BindRepeating(&ReloadButton::ButtonPressed,
base::Unretained(this)),
......@@ -91,6 +89,14 @@ void ReloadButton::ChangeMode(Mode mode, bool force) {
}
}
bool ReloadButton::GetMenuEnabled() const {
return menu_enabled_;
}
void ReloadButton::SetMenuEnabled(bool enable) {
menu_enabled_ = enable;
}
void ReloadButton::OnThemeChanged() {
ToolbarButton::OnThemeChanged();
UpdateIcon();
......@@ -118,10 +124,6 @@ base::string16 ReloadButton::GetTooltipText(const gfx::Point& p) const {
visible_mode_ == Mode::kReload ? reload_tooltip : IDS_TOOLTIP_STOP);
}
const char* ReloadButton::GetClassName() const {
return kViewClassName;
}
void ReloadButton::GetAccessibleNodeData(ui::AXNodeData* node_data) {
if (menu_enabled_)
ToolbarButton::GetAccessibleNodeData(node_data);
......@@ -227,3 +229,7 @@ void ReloadButton::OnStopToReloadTimer() {
DCHECK(!IsMenuShowing());
ChangeMode(intended_mode_, true);
}
BEGIN_METADATA(ReloadButton, ToolbarButton)
ADD_PROPERTY_METADATA(bool, MenuEnabled)
END_METADATA
......@@ -6,8 +6,11 @@
#define CHROME_BROWSER_UI_VIEWS_TOOLBAR_RELOAD_BUTTON_H_
#include "base/timer/timer.h"
#include "chrome/browser/ui/views/chrome_views_export.h"
#include "chrome/browser/ui/views/toolbar/toolbar_button.h"
#include "ui/base/models/simple_menu_model.h"
#include "ui/views/metadata/metadata_header_macros.h"
#include "ui/views/metadata/view_factory.h"
class CommandUpdater;
......@@ -24,10 +27,9 @@ class CommandUpdater;
class ReloadButton : public ToolbarButton,
public ui::SimpleMenuModel::Delegate {
public:
enum class Mode { kReload = 0, kStop };
METADATA_HEADER(ReloadButton);
// The button's class name.
static const char kViewClassName[];
enum class Mode { kReload = 0, kStop };
explicit ReloadButton(CommandUpdater* command_updater);
ReloadButton(const ReloadButton&) = delete;
......@@ -39,8 +41,9 @@ class ReloadButton : public ToolbarButton,
void ChangeMode(Mode mode, bool force);
Mode visible_mode() const { return visible_mode_; }
// Enable reload drop-down menu.
void set_menu_enabled(bool enable) { menu_enabled_ = enable; }
// Gets/Sets whether reload drop-down menu is enabled.
bool GetMenuEnabled() const;
void SetMenuEnabled(bool enable);
// views::View:
void OnThemeChanged() override;
......@@ -48,7 +51,6 @@ class ReloadButton : public ToolbarButton,
// ToolbarButton:
void OnMouseExited(const ui::MouseEvent& event) override;
base::string16 GetTooltipText(const gfx::Point& p) const override;
const char* GetClassName() const override;
void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
bool ShouldShowMenu() override;
void ShowDropDownMenu(ui::MenuSourceType source_type) override;
......@@ -105,4 +107,8 @@ class ReloadButton : public ToolbarButton,
int testing_reload_count_ = 0;
};
BEGIN_VIEW_BUILDER(CHROME_VIEWS_EXPORT, ReloadButton, ToolbarButton)
VIEW_BUILDER_PROPERTY(bool, MenuEnabled)
END_VIEW_BUILDER(VIEWS_EXPORT, ReloadButton)
#endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_RELOAD_BUTTON_H_
......@@ -353,7 +353,7 @@ void ToolbarView::Update(WebContents* tab) {
extensions_container_->UpdateAllIcons();
if (reload_)
reload_->set_menu_enabled(chrome::IsDebuggerAttachedToCurrentTab(browser_));
reload_->SetMenuEnabled(chrome::IsDebuggerAttachedToCurrentTab(browser_));
if (toolbar_account_icon_container_)
toolbar_account_icon_container_->UpdateAllIcons();
......
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