Commit 107fa944 authored by Peter Kasting's avatar Peter Kasting Committed by Chromium LUCI CQ

Add metadata for classes in c/b/ui/views/toolbar/.

Bug: 1159562
Change-Id: Ie663d63641be29ac489d9cad30c7eb7b008d3745
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2623153
Auto-Submit: Peter Kasting <pkasting@chromium.org>
Commit-Queue: Allen Bauer <kylixrd@chromium.org>
Reviewed-by: default avatarAllen Bauer <kylixrd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#842256}
parent 5732192b
......@@ -43,6 +43,7 @@
#include "ui/gfx/geometry/point.h"
#include "ui/views/controls/button/image_button.h"
#include "ui/views/layout/animating_layout_manager_test_util.h"
#include "ui/views/view_utils.h"
#include "ui/views/widget/widget.h"
namespace {
......@@ -196,7 +197,7 @@ ExtensionsMenuViewUnitTest::GetPinnedExtensionViews() {
std::vector<ToolbarActionView*> result;
for (views::View* child : extensions_container()->children()) {
// Ensure we don't downcast the ExtensionsToolbarButton.
if (child->GetClassName() == ToolbarActionView::kClassName) {
if (views::IsViewClass<ToolbarActionView>(child)) {
ToolbarActionView* const action = static_cast<ToolbarActionView*>(child);
#if defined(OS_MAC)
// TODO(crbug.com/1045212): Use IsActionVisibleOnToolbar() because it
......@@ -533,7 +534,7 @@ TEST_F(ExtensionsMenuViewUnitTest, ReloadExtensionFailed) {
// Since the extension is removed it's no longer visible on the toolbar or in
// the menu.
for (views::View* child : extensions_container()->children())
EXPECT_NE(ToolbarActionView::kClassName, child->GetClassName());
EXPECT_FALSE(views::IsViewClass<ToolbarActionView>(child));
EXPECT_EQ(0u, extensions_menu()->extensions_menu_items_for_testing().size());
}
......
......@@ -16,6 +16,7 @@
#include "chrome/common/chrome_paths.h"
#include "net/dns/mock_host_resolver.h"
#include "ui/views/layout/animating_layout_manager_test_util.h"
#include "ui/views/view_utils.h"
ExtensionsToolbarBrowserTest::ExtensionsToolbarBrowserTest(bool enable_flag) {
if (enable_flag) {
......@@ -80,7 +81,7 @@ std::vector<ToolbarActionView*>
ExtensionsToolbarBrowserTest::GetToolbarActionViews() const {
std::vector<ToolbarActionView*> views;
for (auto* view : GetExtensionsToolbarContainer()->children()) {
if (view->GetClassName() == ToolbarActionView::kClassName)
if (views::IsViewClass<ToolbarActionView>(view))
views.push_back(static_cast<ToolbarActionView*>(view));
}
return views;
......
......@@ -1549,7 +1549,7 @@ void BrowserView::FocusAppMenu() {
// location.
//
// Not used on the Mac, which has a normal menu bar.
if (toolbar_->IsAppMenuFocused()) {
if (toolbar_->GetAppMenuFocused()) {
RestoreFocus();
} else {
DCHECK(!immersive_mode_controller_->IsEnabled());
......
......@@ -193,7 +193,7 @@ void AvatarToolbarButton::ShowAvatarHighlightAnimation() {
}
bool AvatarToolbarButton::IsParentHighlighted() const {
return parent_ && parent_->IsHighlighted();
return parent_ && parent_->GetHighlighted();
}
void AvatarToolbarButton::AddObserver(Observer* observer) {
......
......@@ -98,7 +98,10 @@ class SadTabViewInteractiveUITest : public InProcessBrowserTest {
}
bool IsFocusedViewInsideBrowserToolbar() {
return IsFocusedViewInsideViewClass(ToolbarView::kViewClassName);
return IsFocusedViewInsideViewClass(
BrowserView::GetBrowserViewForBrowser(browser())
->toolbar()
->GetClassName());
}
bool IsFocusedViewOnActionButtonInSadTab() {
......
......@@ -41,6 +41,7 @@
#include "ui/views/animation/ink_drop_highlight.h"
#include "ui/views/animation/ink_drop_state.h"
#include "ui/views/controls/button/label_button_border.h"
#include "ui/views/metadata/metadata_impl_macros.h"
#include "ui/views/metrics.h"
#include "ui/views/view.h"
#include "ui/views/view_class_properties.h"
......@@ -172,10 +173,6 @@ void BrowserAppMenuButton::UpdateTextAndHighlightColor() {
SetHighlight(text, color);
}
const char* BrowserAppMenuButton::GetClassName() const {
return "BrowserAppMenuButton";
}
bool BrowserAppMenuButton::GetDropFormats(
int* formats,
std::set<ui::ClipboardFormatType>* format_types) {
......@@ -231,3 +228,6 @@ void BrowserAppMenuButton::OnTouchUiChanged() {
UpdateColorsAndInsets();
PreferredSizeChanged();
}
BEGIN_METADATA(BrowserAppMenuButton, AppMenuButton)
END_METADATA
......@@ -14,6 +14,7 @@
#include "chrome/browser/ui/toolbar/app_menu_icon_controller.h"
#include "chrome/browser/ui/user_education/feature_promo_controller.h"
#include "chrome/browser/ui/views/frame/app_menu_button.h"
#include "ui/views/metadata/metadata_header_macros.h"
#include "ui/views/view.h"
class ToolbarView;
......@@ -23,6 +24,7 @@ enum class InProductHelpFeature;
// windows, which is implemented in WebAppMenuButton).
class BrowserAppMenuButton : public AppMenuButton {
public:
METADATA_HEADER(BrowserAppMenuButton);
BrowserAppMenuButton(PressedCallback callback, ToolbarView* toolbar_view);
BrowserAppMenuButton(const BrowserAppMenuButton&) = delete;
BrowserAppMenuButton& operator=(const BrowserAppMenuButton&) = delete;
......@@ -31,10 +33,6 @@ class BrowserAppMenuButton : public AppMenuButton {
void SetTypeAndSeverity(
AppMenuIconController::TypeAndSeverity type_and_severity);
AppMenuIconController::Severity severity() {
return type_and_severity_.severity;
}
// Shows the app menu. |run_types| denotes the MenuRunner::RunTypes associated
// with the menu.
void ShowMenu(int run_types);
......@@ -44,7 +42,6 @@ class BrowserAppMenuButton : public AppMenuButton {
static bool g_open_app_immediately_for_testing;
// AppMenuButton:
const char* GetClassName() const override;
bool GetDropFormats(int* formats,
std::set<ui::ClipboardFormatType>* format_types) override;
bool AreDropTypesRequired() override;
......
......@@ -21,14 +21,10 @@
#include "ui/gfx/color_palette.h"
#include "ui/views/bubble/bubble_dialog_delegate_view.h"
#include "ui/views/layout/flex_layout_types.h"
#include "ui/views/metadata/metadata_impl_macros.h"
#include "ui/views/view_class_properties.h"
#include "ui/views/widget/widget.h"
// static
const char ToolbarAccountIconContainerView::
kToolbarAccountIconContainerViewClassName[] =
"ToolbarAccountIconContainerView";
ToolbarAccountIconContainerView::ToolbarAccountIconContainerView(
Browser* browser)
: ToolbarIconContainerView(
......@@ -107,12 +103,11 @@ void ToolbarAccountIconContainerView::OnThemeChanged() {
UpdateAllIcons();
}
const char* ToolbarAccountIconContainerView::GetClassName() const {
return kToolbarAccountIconContainerViewClassName;
}
void ToolbarAccountIconContainerView::AddPageActionIcon(views::View* icon) {
// Add the page action icons to the end of the container, just before the
// avatar icon.
AddChildViewAt(icon, GetIndexOf(avatar_));
}
BEGIN_METADATA(ToolbarAccountIconContainerView, ToolbarIconContainerView)
END_METADATA
......@@ -9,6 +9,7 @@
#include "chrome/browser/ui/views/page_action/page_action_icon_container.h"
#include "chrome/browser/ui/views/page_action/page_action_icon_view.h"
#include "chrome/browser/ui/views/toolbar/toolbar_icon_container_view.h"
#include "ui/views/metadata/metadata_header_macros.h"
class AvatarToolbarButton;
class Browser;
......@@ -21,6 +22,7 @@ class ToolbarAccountIconContainerView : public ToolbarIconContainerView,
public PageActionIconContainer,
public PageActionIconView::Delegate {
public:
METADATA_HEADER(ToolbarAccountIconContainerView);
explicit ToolbarAccountIconContainerView(Browser* browser);
ToolbarAccountIconContainerView(const ToolbarAccountIconContainerView&) =
delete;
......@@ -44,15 +46,12 @@ class ToolbarAccountIconContainerView : public ToolbarIconContainerView,
// views::View:
void OnThemeChanged() override;
const char* GetClassName() const override;
PageActionIconController* page_action_icon_controller() {
return page_action_icon_controller_.get();
}
AvatarToolbarButton* avatar_button() { return avatar_; }
static const char kToolbarAccountIconContainerViewClassName[];
private:
// PageActionIconContainer:
void AddPageActionIcon(views::View* icon) override;
......
......@@ -37,6 +37,7 @@
#include "ui/views/controls/menu/menu_controller.h"
#include "ui/views/controls/menu/menu_model_adapter.h"
#include "ui/views/controls/menu/menu_runner.h"
#include "ui/views/metadata/metadata_impl_macros.h"
#include "ui/views/mouse_constants.h"
using views::LabelButtonBorder;
......@@ -51,8 +52,6 @@ bool ToolbarActionView::Delegate::CanShowIconInToolbar() const {
////////////////////////////////////////////////////////////////////////////////
// ToolbarActionView
const char ToolbarActionView::kClassName[] = "ToolbarActionView";
ToolbarActionView::ToolbarActionView(
ToolbarActionViewController* view_controller,
ToolbarActionView::Delegate* delegate)
......@@ -89,10 +88,6 @@ ToolbarActionView::~ToolbarActionView() {
view_controller_->SetDelegate(nullptr);
}
const char* ToolbarActionView::GetClassName() const {
return kClassName;
}
gfx::Rect ToolbarActionView::GetAnchorBoundsInScreen() const {
gfx::Rect bounds = GetBoundsInScreen();
bounds.Inset(GetToolbarInkDropInsets(this));
......@@ -320,3 +315,6 @@ void ToolbarActionView::ButtonPressed() {
ui::MENU_SOURCE_NONE);
}
}
BEGIN_METADATA(ToolbarActionView, views::MenuButton)
END_METADATA
......@@ -12,6 +12,7 @@
#include "ui/views/controls/button/menu_button_controller.h"
#include "ui/views/controls/menu/menu_model_adapter.h"
#include "ui/views/drag_controller.h"
#include "ui/views/metadata/metadata_header_macros.h"
#include "ui/views/view.h"
class ExtensionContextMenuController;
......@@ -23,6 +24,8 @@ class ExtensionContextMenuController;
class ToolbarActionView : public views::MenuButton,
public ToolbarActionViewDelegateViews {
public:
METADATA_HEADER(ToolbarActionView);
// Need DragController here because ToolbarActionView could be
// dragged/dropped.
class Delegate : public views::DragController {
......@@ -83,11 +86,9 @@ class ToolbarActionView : public views::MenuButton,
ExtensionContextMenuController* context_menu_controller_for_testing() const {
return context_menu_controller_.get();
}
static const char kClassName[];
private:
// views::MenuButton:
const char* GetClassName() const override;
gfx::Size CalculatePreferredSize() const override;
bool OnMousePressed(const ui::MouseEvent& event) override;
void OnMouseReleased(const ui::MouseEvent& event) override;
......
......@@ -20,13 +20,10 @@
#include "ui/views/background.h"
#include "ui/views/layout/animating_layout_manager.h"
#include "ui/views/layout/flex_layout.h"
#include "ui/views/metadata/metadata_impl_macros.h"
#include "ui/views/view_class_properties.h"
#include "ui/views/view_observer.h"
// static
const char ToolbarIconContainerView::kToolbarIconContainerViewClassName[] =
"ToolbarIconContainerView";
ToolbarIconContainerView::RoundRectBorder::RoundRectBorder(views::View* parent)
: parent_(parent) {
layer_.set_delegate(this);
......@@ -159,20 +156,45 @@ void ToolbarIconContainerView::RemoveObserver(const Observer* obs) {
observers_.RemoveObserver(obs);
}
void ToolbarIconContainerView::OverrideIconColor(SkColor color) {
void ToolbarIconContainerView::SetIconColor(SkColor color) {
if (icon_color_ == color)
return;
icon_color_ = color;
UpdateAllIcons();
OnPropertyChanged(&icon_color_, views::kPropertyEffectsNone);
}
SkColor ToolbarIconContainerView::GetIconColor() const {
if (icon_color_)
return icon_color_.value();
return GetThemeProvider()->GetColor(
ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
return icon_color_.value_or(
GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON));
}
bool ToolbarIconContainerView::IsHighlighted() {
return ShouldDisplayHighlight();
bool ToolbarIconContainerView::GetHighlighted() const {
if (!uses_highlight_)
return false;
if (IsMouseHovered() && (!main_button_ || !main_button_->IsMouseHovered()))
return true;
// Focused, pressed or hovered children should trigger the highlight.
for (const views::View* child : children()) {
if (child == main_button_)
continue;
if (child->HasFocus())
return true;
const views::Button* button = views::Button::AsButton(child);
if (!button)
continue;
if (button->GetState() == views::Button::ButtonState::STATE_PRESSED ||
button->GetState() == views::Button::ButtonState::STATE_HOVERED) {
return true;
}
// The container should also be highlighted if a dialog is anchored to.
if (base::Contains(highlighted_buttons_, button))
return true;
}
return false;
}
void ToolbarIconContainerView::OnViewFocused(views::View* observed_view) {
......@@ -198,50 +220,18 @@ void ToolbarIconContainerView::OnMouseExited(const ui::MouseEvent& event) {
UpdateHighlight();
}
const char* ToolbarIconContainerView::GetClassName() const {
return kToolbarIconContainerViewClassName;
}
void ToolbarIconContainerView::AddedToWidget() {
// Add an observer to reset the animation if the browser window is restored,
// preventing spurious animation. (See crbug.com/1106506)
restore_observer_ = std::make_unique<WidgetRestoreObserver>(this);
}
bool ToolbarIconContainerView::ShouldDisplayHighlight() {
if (!uses_highlight_)
return false;
if (IsMouseHovered() && (!main_button_ || !main_button_->IsMouseHovered()))
return true;
// Focused, pressed or hovered children should trigger the highlight.
for (views::View* child : children()) {
if (child == main_button_)
continue;
if (child->HasFocus())
return true;
views::Button* button = views::Button::AsButton(child);
if (!button)
continue;
if (button->GetState() == views::Button::ButtonState::STATE_PRESSED ||
button->GetState() == views::Button::ButtonState::STATE_HOVERED) {
return true;
}
// The container should also be highlighted if a dialog is anchored to.
if (base::Contains(highlighted_buttons_, button))
return true;
}
return false;
}
void ToolbarIconContainerView::UpdateHighlight() {
bool showing_before = border_.layer()->GetTargetOpacity() == 1;
{
ui::ScopedLayerAnimationSettings settings(border_.layer()->GetAnimator());
border_.layer()->SetOpacity(ShouldDisplayHighlight() ? 1 : 0);
border_.layer()->SetOpacity(GetHighlighted() ? 1 : 0);
}
if (showing_before == (border_.layer()->GetTargetOpacity() == 1))
......@@ -259,3 +249,8 @@ void ToolbarIconContainerView::OnButtonHighlightedChanged(
UpdateHighlight();
}
BEGIN_METADATA(ToolbarIconContainerView, views::View)
ADD_PROPERTY_METADATA(SkColor, IconColor)
ADD_READONLY_PROPERTY_METADATA(bool, Highlighted)
END_METADATA
......@@ -12,12 +12,15 @@
#include "ui/views/controls/button/button.h"
#include "ui/views/layout/animating_layout_manager.h"
#include "ui/views/layout/flex_layout.h"
#include "ui/views/metadata/metadata_header_macros.h"
#include "ui/views/view.h"
// A general view container for any type of toolbar icons.
class ToolbarIconContainerView : public views::View,
public views::ViewObserver {
public:
METADATA_HEADER(ToolbarIconContainerView);
class Observer : public base::CheckedObserver {
public:
virtual void OnHighlightChanged() = 0;
......@@ -41,16 +44,16 @@ class ToolbarIconContainerView : public views::View,
void AddObserver(Observer* obs);
void RemoveObserver(const Observer* obs);
void OverrideIconColor(SkColor icon_color);
void SetIconColor(SkColor icon_color);
SkColor GetIconColor() const;
bool IsHighlighted();
bool GetHighlighted() const;
// views::ViewObserver:
void OnViewFocused(views::View* observed_view) override;
void OnViewBlurred(views::View* observed_view) override;
bool uses_highlight() { return uses_highlight_; }
bool uses_highlight() const { return uses_highlight_; }
// Provides access to the animating layout manager for subclasses.
views::AnimatingLayoutManager* animating_layout_manager() {
......@@ -68,8 +71,6 @@ class ToolbarIconContainerView : public views::View,
animating_layout_manager()->target_layout_manager());
}
static const char kToolbarIconContainerViewClassName[];
protected:
void OnBoundsChanged(const gfx::Rect& previous_bounds) override;
......@@ -100,10 +101,8 @@ class ToolbarIconContainerView : public views::View,
// views::View:
void OnMouseEntered(const ui::MouseEvent& event) override;
void OnMouseExited(const ui::MouseEvent& event) override;
const char* GetClassName() const override;
void AddedToWidget() override;
bool ShouldDisplayHighlight();
void UpdateHighlight();
// Called by |button| when its ink drop highlighted state changes.
......@@ -123,7 +122,7 @@ class ToolbarIconContainerView : public views::View,
// Points to the child buttons that we know are currently highlighted.
// TODO(pbos): Consider observing buttons leaving our hierarchy and removing
// them from this set.
std::set<views::Button*> highlighted_buttons_;
std::set<const views::Button*> highlighted_buttons_;
RoundRectBorder border_{this};
......
......@@ -83,6 +83,7 @@
#include "ui/native_theme/native_theme_aura.h"
#include "ui/views/layout/fill_layout.h"
#include "ui/views/layout/flex_layout.h"
#include "ui/views/metadata/metadata_impl_macros.h"
#include "ui/views/view_class_properties.h"
#include "ui/views/widget/tooltip_manager.h"
#include "ui/views/widget/widget.h"
......@@ -143,9 +144,6 @@ const base::flat_map<int, int>& GetViewCommandMap() {
} // namespace
// static
const char ToolbarView::kViewClassName[] = "ToolbarView";
////////////////////////////////////////////////////////////////////////////////
// ToolbarView, public:
......@@ -413,7 +411,7 @@ void ToolbarView::SetPaneFocusAndFocusAppMenu() {
SetPaneFocus(app_menu_button_);
}
bool ToolbarView::IsAppMenuFocused() {
bool ToolbarView::GetAppMenuFocused() const {
return app_menu_button_ && app_menu_button_->HasFocus();
}
......@@ -635,10 +633,6 @@ void ToolbarView::OnThemeChanged() {
SchedulePaint();
}
const char* ToolbarView::GetClassName() const {
return kViewClassName;
}
bool ToolbarView::AcceleratorPressed(const ui::Accelerator& accelerator) {
const views::View* focused_view = focus_manager()->GetFocusedView();
if (focused_view && (focused_view->GetID() == VIEW_ID_OMNIBOX))
......@@ -950,3 +944,7 @@ void ToolbarView::AppMenuButtonPressed(const ui::Event& event) {
? views::MenuRunner::SHOULD_SHOW_MNEMONICS
: views::MenuRunner::NO_FLAGS);
}
BEGIN_METADATA(ToolbarView, views::AccessiblePaneView)
ADD_READONLY_PROPERTY_METADATA(bool, AppMenuFocused)
END_METADATA
......@@ -8,7 +8,6 @@
#include <memory>
#include <vector>
#include "base/macros.h"
#include "base/observer_list.h"
#include "base/optional.h"
#include "base/scoped_observation.h"
......@@ -31,6 +30,7 @@
#include "ui/views/accessible_pane_view.h"
#include "ui/views/animation/animation_delegate_views.h"
#include "ui/views/controls/button/menu_button.h"
#include "ui/views/metadata/metadata_header_macros.h"
#include "ui/views/view.h"
#include "url/origin.h"
......@@ -77,6 +77,8 @@ class ToolbarView : public views::AccessiblePaneView,
public ToolbarButtonProvider,
public BrowserRootView::DropTarget {
public:
METADATA_HEADER(ToolbarView);
// Types of display mode this toolbar can have.
enum class DisplayMode {
NORMAL, // Normal toolbar with buttons, etc.
......@@ -86,10 +88,9 @@ class ToolbarView : public views::AccessiblePaneView,
// needs to be displayed.
};
// The view class name.
static const char kViewClassName[];
explicit ToolbarView(Browser* browser, BrowserView* browser_view);
ToolbarView(Browser* browser, BrowserView* browser_view);
ToolbarView(const ToolbarView&) = delete;
ToolbarView& operator=(const ToolbarView&) = delete;
~ToolbarView() override;
// Create the contents of the Browser Toolbar.
......@@ -118,7 +119,7 @@ class ToolbarView : public views::AccessiblePaneView,
void SetPaneFocusAndFocusAppMenu();
// Returns true if the app menu is focused.
bool IsAppMenuFocused();
bool GetAppMenuFocused() const;
void ShowIntentPickerBubble(
std::vector<IntentPickerBubbleView::AppInfo> app_info,
......@@ -188,7 +189,6 @@ class ToolbarView : public views::AccessiblePaneView,
gfx::Size GetMinimumSize() const override;
void Layout() override;
void OnThemeChanged() override;
const char* GetClassName() const override;
bool AcceleratorPressed(const ui::Accelerator& acc) override;
void ChildPreferredSizeChanged(views::View* child) override;
......@@ -297,8 +297,6 @@ class ToolbarView : public views::AccessiblePaneView,
// Whether this toolbar has been initialized.
bool initialized_ = false;
DISALLOW_IMPLICIT_CONSTRUCTORS(ToolbarView);
};
#endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_VIEW_H_
......@@ -178,7 +178,7 @@ void WebAppToolbarButtonContainer::SetColors(SkColor foreground_color,
if (content_settings_container_)
content_settings_container_->SetIconColor(foreground_color_);
if (extensions_container_)
extensions_container_->OverrideIconColor(foreground_color_);
extensions_container_->SetIconColor(foreground_color_);
page_action_icon_controller_->SetIconColor(foreground_color_);
if (web_app_menu_button_)
web_app_menu_button_->SetColor(foreground_color_);
......
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