Commit 6aa60fe2 authored by Aaron Leventhal's avatar Aaron Leventhal Committed by Commit Bot

Expose a11y default state on default buttons in views

Bug: 904433
Change-Id: Ida5f3e93ede1f26cbf98a8e0b786a7f9ef2334f1
Reviewed-on: https://chromium-review.googlesource.com/c/1331727
Commit-Queue: Aaron Leventhal <aleventhal@chromium.org>
Reviewed-by: default avatarSadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: default avatarNektarios Paisios <nektar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607615}
parent e99023e1
......@@ -11,6 +11,7 @@
#include "base/lazy_instance.h"
#include "base/logging.h"
#include "build/build_config.h"
#include "ui/accessibility/ax_node_data.h"
#include "ui/gfx/animation/throb_animation.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/color_utils.h"
......@@ -417,6 +418,12 @@ std::unique_ptr<views::InkDropHighlight> LabelButton::CreateInkDropHighlight()
gfx::RectF(image()->GetMirroredBounds()).CenterPoint());
}
void LabelButton::GetAccessibleNodeData(ui::AXNodeData* node_data) {
if (is_default())
node_data->AddState(ax::mojom::State::kDefault);
Button::GetAccessibleNodeData(node_data);
}
void LabelButton::StateChanged(ButtonState old_state) {
const gfx::Size previous_image_size(image_->GetPreferredSize());
UpdateImage();
......
......@@ -98,6 +98,7 @@ class VIEWS_EXPORT LabelButton : public Button, public NativeThemeDelegate {
std::unique_ptr<InkDrop> CreateInkDrop() override;
std::unique_ptr<InkDropRipple> CreateInkDropRipple() const override;
std::unique_ptr<InkDropHighlight> CreateInkDropHighlight() const override;
void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
protected:
ImageView* image() const { return image_; }
......
......@@ -22,6 +22,7 @@
#include "ui/gfx/geometry/vector2d.h"
#include "ui/gfx/text_utils.h"
#include "ui/native_theme/native_theme.h"
#include "ui/views/accessibility/view_accessibility.h"
#include "ui/views/animation/test/ink_drop_host_view_test_api.h"
#include "ui/views/animation/test/test_ink_drop.h"
#include "ui/views/layout/layout_provider.h"
......@@ -212,6 +213,30 @@ TEST_F(LabelButtonTest, AccessibleState) {
EXPECT_EQ(tooltip_text, tooltip);
}
// Test View::GetAccessibleNodeData() for default buttons.
TEST_F(LabelButtonTest, AccessibleDefaultState) {
{
// If SetIsDefault() is not called, the ax default state should not be set.
ui::AXNodeData ax_data;
button_->GetViewAccessibility().GetAccessibleNodeData(&ax_data);
EXPECT_FALSE(ax_data.HasState(ax::mojom::State::kDefault));
}
{
button_->SetIsDefault(true);
ui::AXNodeData ax_data;
button_->GetViewAccessibility().GetAccessibleNodeData(&ax_data);
EXPECT_TRUE(ax_data.HasState(ax::mojom::State::kDefault));
}
{
button_->SetIsDefault(false);
ui::AXNodeData ax_data;
button_->GetViewAccessibility().GetAccessibleNodeData(&ax_data);
EXPECT_FALSE(ax_data.HasState(ax::mojom::State::kDefault));
}
}
TEST_F(LabelButtonTest, Image) {
const int small_size = 50, large_size = 100;
const gfx::ImageSkia small_image = CreateTestImage(small_size, small_size);
......
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