Commit 13ca4169 authored by Tatsuhisa Yamaguchi's avatar Tatsuhisa Yamaguchi Committed by Commit Bot

Disable unnecessary tab focus on unclickable info label.

Test: ash_unittests --gtest_filter=TrayInfoLabelTest*
Bug: 862116
Change-Id: Ifbedc4d656b1e5421f8a2b546d528378e56c6fc6
Reviewed-on: https://chromium-review.googlesource.com/1140019Reviewed-by: default avatarTetsui Ohkubo <tetsui@chromium.org>
Reviewed-by: default avatarYoshiki Iguchi <yoshiki@chromium.org>
Commit-Queue: Tatsuhisa Yamaguchi <yamaguchi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576377}
parent 99aa7a80
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include "ui/accessibility/ax_node_data.h" #include "ui/accessibility/ax_node_data.h"
#include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util.h"
#include "ui/views/layout/fill_layout.h" #include "ui/views/layout/fill_layout.h"
namespace ash { namespace ash {
TrayInfoLabel::TrayInfoLabel(TrayInfoLabel::Delegate* delegate, int message_id) TrayInfoLabel::TrayInfoLabel(TrayInfoLabel::Delegate* delegate, int message_id)
...@@ -30,6 +29,8 @@ TrayInfoLabel::TrayInfoLabel(TrayInfoLabel::Delegate* delegate, int message_id) ...@@ -30,6 +29,8 @@ TrayInfoLabel::TrayInfoLabel(TrayInfoLabel::Delegate* delegate, int message_id)
tri_view->AddView(TriView::Container::CENTER, label_); tri_view->AddView(TriView::Container::CENTER, label_);
AddChildView(tri_view); AddChildView(tri_view);
SetFocusBehavior(IsClickable() ? FocusBehavior::ALWAYS
: FocusBehavior::NEVER);
Update(message_id); Update(message_id);
} }
...@@ -55,6 +56,8 @@ void TrayInfoLabel::Update(int message_id) { ...@@ -55,6 +56,8 @@ void TrayInfoLabel::Update(int message_id) {
base::string16 text = l10n_util::GetStringUTF16(message_id); base::string16 text = l10n_util::GetStringUTF16(message_id);
label_->SetText(text); label_->SetText(text);
SetAccessibleName(text); SetAccessibleName(text);
SetFocusBehavior(IsClickable() ? FocusBehavior::ALWAYS
: FocusBehavior::NEVER);
} }
bool TrayInfoLabel::PerformAction(const ui::Event& event) { bool TrayInfoLabel::PerformAction(const ui::Event& event) {
......
...@@ -50,6 +50,11 @@ class TestDelegate : public TrayInfoLabel::Delegate { ...@@ -50,6 +50,11 @@ class TestDelegate : public TrayInfoLabel::Delegate {
class TrayInfoLabelTest : public AshTestBase { class TrayInfoLabelTest : public AshTestBase {
public: public:
void SetUp() override {
AshTestBase::SetUp();
delegate_ = std::make_unique<TestDelegate>();
}
void TearDown() override { void TearDown() override {
AshTestBase::TearDown(); AshTestBase::TearDown();
label_.reset(); label_.reset();
...@@ -57,10 +62,9 @@ class TrayInfoLabelTest : public AshTestBase { ...@@ -57,10 +62,9 @@ class TrayInfoLabelTest : public AshTestBase {
} }
void CreateLabel(bool use_delegate, int message_id) { void CreateLabel(bool use_delegate, int message_id) {
if (use_delegate) label_ = std::make_unique<TrayInfoLabel>(
delegate_ = std::make_unique<TestDelegate>(); use_delegate ? delegate_.get() : nullptr, message_id);
use_delegate_ = use_delegate;
label_ = std::make_unique<TrayInfoLabel>(delegate_.get(), message_id);
} }
void ClickOnLabel(bool expect_click_was_handled) { void ClickOnLabel(bool expect_click_was_handled) {
...@@ -70,6 +74,9 @@ class TrayInfoLabelTest : public AshTestBase { ...@@ -70,6 +74,9 @@ class TrayInfoLabelTest : public AshTestBase {
void VerifyClickability(bool expected_clickable) { void VerifyClickability(bool expected_clickable) {
EXPECT_EQ(expected_clickable, label_->IsClickable()); EXPECT_EQ(expected_clickable, label_->IsClickable());
EXPECT_EQ(expected_clickable ? views::View::FocusBehavior::ALWAYS
: views::View::FocusBehavior::NEVER,
label_->focus_behavior());
ui::AXNodeData node_data; ui::AXNodeData node_data;
label_->GetAccessibleNodeData(&node_data); label_->GetAccessibleNodeData(&node_data);
...@@ -81,7 +88,7 @@ class TrayInfoLabelTest : public AshTestBase { ...@@ -81,7 +88,7 @@ class TrayInfoLabelTest : public AshTestBase {
} }
void VerifyClicks(const std::vector<int>& expected_clicked_message_ids) { void VerifyClicks(const std::vector<int>& expected_clicked_message_ids) {
if (!delegate_) { if (!use_delegate_) {
EXPECT_TRUE(expected_clicked_message_ids.empty()); EXPECT_TRUE(expected_clicked_message_ids.empty());
return; return;
} }
...@@ -94,6 +101,7 @@ class TrayInfoLabelTest : public AshTestBase { ...@@ -94,6 +101,7 @@ class TrayInfoLabelTest : public AshTestBase {
protected: protected:
std::unique_ptr<TrayInfoLabel> label_; std::unique_ptr<TrayInfoLabel> label_;
std::unique_ptr<TestDelegate> delegate_; std::unique_ptr<TestDelegate> delegate_;
bool use_delegate_;
}; };
TEST_F(TrayInfoLabelTest, NoDelegate) { TEST_F(TrayInfoLabelTest, NoDelegate) {
...@@ -119,9 +127,10 @@ TEST_F(TrayInfoLabelTest, PerformAction) { ...@@ -119,9 +127,10 @@ TEST_F(TrayInfoLabelTest, PerformAction) {
const int kClickableMessageId2 = IDS_ASH_STATUS_TRAY_BLUETOOTH_DISABLED; const int kClickableMessageId2 = IDS_ASH_STATUS_TRAY_BLUETOOTH_DISABLED;
const int kNonClickableMessageId = IDS_ASH_STATUS_TRAY_BLUETOOTH_DISCOVERING; const int kNonClickableMessageId = IDS_ASH_STATUS_TRAY_BLUETOOTH_DISCOVERING;
CreateLabel(true /* use_delegate */, kClickableMessageId1);
delegate_->AddClickableMessageId(kClickableMessageId1); delegate_->AddClickableMessageId(kClickableMessageId1);
delegate_->AddClickableMessageId(kClickableMessageId2); delegate_->AddClickableMessageId(kClickableMessageId2);
CreateLabel(true /* use_delegate */, kClickableMessageId1);
VerifyNoClicks(); VerifyNoClicks();
EXPECT_EQ(l10n_util::GetStringUTF16(kClickableMessageId1), EXPECT_EQ(l10n_util::GetStringUTF16(kClickableMessageId1),
......
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