Commit f1c4e150 authored by Joel Riley's avatar Joel Riley Committed by Chromium LUCI CQ

Fixes for RTL issues on Select-to-speak panel.

Navigation icons should be mirrored (resume, prev/next sentence/paragraph). Also left/right keyboard shortcuts should be reversed for sentence navigation.

Bug: 1168802
Change-Id: I03e54c5e98fb086cc86c2a8bd06455f35631a6e3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2640927
Commit-Queue: Joel Riley <joelriley@google.com>
Reviewed-by: default avatarKatie Dektar <katie@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845812}
parent a0733e97
......@@ -174,6 +174,17 @@ TEST_F(SelectToSpeakMenuBubbleControllerTest, PrevSentenceKeyPressed) {
SelectToSpeakPanelAction::kPreviousSentence);
}
TEST_F(SelectToSpeakMenuBubbleControllerTest, PrevSentenceKeyPressedRtl) {
base::i18n::SetICUDefaultLocale("he");
TestAccessibilityControllerClient client;
ShowSelectToSpeakPanel(/*is_paused=*/false);
GetEventGenerator()->PressKey(ui::VKEY_RIGHT, ui::EF_NONE);
EXPECT_EQ(client.last_select_to_speak_panel_action(),
SelectToSpeakPanelAction::kPreviousSentence);
}
TEST_F(SelectToSpeakMenuBubbleControllerTest, NextParagraphButtonPressed) {
TestAccessibilityControllerClient client;
ShowSelectToSpeakPanel(/*is_paused=*/false);
......@@ -216,6 +227,17 @@ TEST_F(SelectToSpeakMenuBubbleControllerTest, NextSentenceKeyPressed) {
SelectToSpeakPanelAction::kNextSentence);
}
TEST_F(SelectToSpeakMenuBubbleControllerTest, NextSentenceKeyPressedRtl) {
base::i18n::SetICUDefaultLocale("he");
TestAccessibilityControllerClient client;
ShowSelectToSpeakPanel(/*is_paused=*/false);
GetEventGenerator()->PressKey(ui::VKEY_LEFT, ui::EF_NONE);
EXPECT_EQ(client.last_select_to_speak_panel_action(),
SelectToSpeakPanelAction::kNextSentence);
}
TEST_F(SelectToSpeakMenuBubbleControllerTest, StopButtonPressed) {
TestAccessibilityControllerClient client;
ShowSelectToSpeakPanel(/*is_paused=*/false);
......
......@@ -87,6 +87,7 @@ SelectToSpeakMenuView::SelectToSpeakMenuView(Delegate* delegate)
.CopyAddressTo(&prev_paragraph_button_)
.SetID(static_cast<int>(ButtonId::kPrevParagraph))
.SetVectorIcon(kSelectToSpeakPrevParagraphIcon)
.SetFlipCanvasOnPaintForRTLUI(true)
.SetTooltipText(l10n_util::GetStringUTF16(
IDS_ASH_SELECT_TO_SPEAK_PREV_PARAGRAPH))
.SetCallback(base::BindRepeating(
......@@ -97,6 +98,7 @@ SelectToSpeakMenuView::SelectToSpeakMenuView(Delegate* delegate)
.CopyAddressTo(&prev_sentence_button_)
.SetID(static_cast<int>(ButtonId::kPrevSentence))
.SetVectorIcon(kSelectToSpeakPrevSentenceIcon)
.SetFlipCanvasOnPaintForRTLUI(true)
.SetTooltipText(l10n_util::GetStringUTF16(
IDS_ASH_SELECT_TO_SPEAK_PREV_SENTENCE))
.SetCallback(base::BindRepeating(
......@@ -117,6 +119,7 @@ SelectToSpeakMenuView::SelectToSpeakMenuView(Delegate* delegate)
.CopyAddressTo(&next_sentence_button_)
.SetID(static_cast<int>(ButtonId::kNextSentence))
.SetVectorIcon(kSelectToSpeakNextSentenceIcon)
.SetFlipCanvasOnPaintForRTLUI(true)
.SetTooltipText(l10n_util::GetStringUTF16(
IDS_ASH_SELECT_TO_SPEAK_NEXT_SENTENCE))
.SetCallback(base::BindRepeating(
......@@ -127,6 +130,7 @@ SelectToSpeakMenuView::SelectToSpeakMenuView(Delegate* delegate)
.CopyAddressTo(&next_paragraph_button_)
.SetID(static_cast<int>(ButtonId::kNextParagraph))
.SetVectorIcon(kSelectToSpeakNextParagraphIcon)
.SetFlipCanvasOnPaintForRTLUI(true)
.SetTooltipText(l10n_util::GetStringUTF16(
IDS_ASH_SELECT_TO_SPEAK_NEXT_PARAGRAPH))
.SetCallback(base::BindRepeating(
......@@ -194,13 +198,21 @@ void SelectToSpeakMenuView::OnKeyEvent(ui::KeyEvent* key_event) {
auto action = SelectToSpeakPanelAction::kNone;
switch (key_event->key_code()) {
case ui::KeyboardCode::VKEY_LEFT:
action = SelectToSpeakPanelAction::kPreviousSentence;
if (base::i18n::IsRTL()) {
action = SelectToSpeakPanelAction::kNextSentence;
} else {
action = SelectToSpeakPanelAction::kPreviousSentence;
}
base::UmaHistogramEnumeration(
kSentenceNavigationMethodHistogramName,
CrosSelectToSpeakActivationMethod::kKeyboardShortcut);
break;
case ui::KeyboardCode::VKEY_RIGHT:
action = SelectToSpeakPanelAction::kNextSentence;
if (base::i18n::IsRTL()) {
action = SelectToSpeakPanelAction::kPreviousSentence;
} else {
action = SelectToSpeakPanelAction::kNextSentence;
}
base::UmaHistogramEnumeration(
kSentenceNavigationMethodHistogramName,
CrosSelectToSpeakActivationMethod::kKeyboardShortcut);
......
......@@ -56,7 +56,6 @@ void SelectToSpeakSpeedBubbleController::Show(views::View* anchor_view,
init_params.close_on_deactivate = false;
init_params.preferred_width = kPreferredWidth;
bubble_view_ = new TrayBubbleView(init_params);
// TODO(crbug.com/1143814): Ensure this works correctly for RTL languages.
bubble_view_->SetArrow(views::BubbleBorder::BOTTOM_RIGHT);
bubble_view_->SetCanActivate(true);
bubble_view_->SetFocusBehavior(ActionableView::FocusBehavior::ALWAYS);
......
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