desk_profiles: Update chromevox strings for UIs within the desk bar
This updates chromevox strings for UIs within the desk bar. Bug: b/324001545 Test: Manual Change-Id: I00270f21cc1fe36edddae07c7c096b09d1ca4b68 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5278924 Reviewed-by: Daniel Andersson <dandersson@chromium.org> Cr-Commit-Position: refs/heads/main@{#1258178}
This commit is contained in:
ash
ash_strings.grd
ash_strings_grd
IDS_ASH_DESKS_ACTIVE_DESK_MINIVIEW_A11Y_EXTRA_TIP.png.sha1IDS_ASH_DESKS_CLOSE_ALL_DESCRIPTION.png.sha1IDS_ASH_DESKS_DESK_PREVIEW.png.sha1IDS_ASH_DESKS_DESK_PREVIEW_A11Y_NAME.png.sha1IDS_ASH_DESKS_DESK_PREVIEW_ACTIVE.png.sha1IDS_ASH_DESKS_DESK_PREVIEW_INACTIVE.png.sha1IDS_ASH_DESKS_DESK_PREVIEW_ROLE_DESCRIPTION.png.sha1IDS_ASH_DESKS_DESK_PROFILES_BUTTON.png.sha1IDS_ASH_DESKS_INACTIVE_DESK_MINIVIEW_A11Y_EXTRA_TIP.png.sha1IDS_ASH_DESKS_NEW_DESK_BUTTON.png.sha1IDS_ASH_DESKS_NEW_DESK_BUTTON_LABEL.png.sha1IDS_ASH_OVERVIEW_CLOSABLE_DESK_MINIVIEW_A11Y_EXTRA_TIP.png.sha1
wm
@ -2456,9 +2456,6 @@ Style notes:
|
||||
</message>
|
||||
<message name="IDS_ASH_OVERVIEW_CLOSABLE_HIGHLIGHT_ITEM_A11Y_EXTRA_TIP" desc="The accessibility tooltip read by screen readers for a close-able overview item.">
|
||||
Press Ctrl + W to close.
|
||||
</message>
|
||||
<message name="IDS_ASH_OVERVIEW_CLOSABLE_DESK_MINIVIEW_A11Y_EXTRA_TIP" desc="The accessibility text read by screen readers for a closeable desk mini view when the close all feature is enabled.">
|
||||
Press Ctrl + W to combine with <ph name="DESK_NAME">$1<ex>Desk 1</ex></ph>. Press Ctrl + Shift + W to close desk and windows.
|
||||
</message>
|
||||
<message name="IDS_ASH_OVERVIEW_SETTINGS_BUTTON_LABEL" desc="The accessible name for the Overview Settings button during faster splitscreen setup.">
|
||||
Windows and desks settings
|
||||
@ -2602,7 +2599,10 @@ Style notes:
|
||||
</message>
|
||||
|
||||
<!-- Virtual Desks -->
|
||||
<message name="IDS_ASH_DESKS_NEW_DESK_BUTTON" desc="The label of the new virtual desk (a.k.a. workspaces) button.">
|
||||
<message name="IDS_ASH_DESKS_NEW_DESK_BUTTON" desc="The new desk button's accessible name">
|
||||
Add new desk
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_NEW_DESK_BUTTON_LABEL" desc="The label of the new virtual desk (a.k.a. workspaces) button.">
|
||||
New desk
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_1_MINI_VIEW_TITLE" desc="The label of the first virtual desk thumbnail.">
|
||||
@ -2659,24 +2659,21 @@ Style notes:
|
||||
<message name="IDS_ASH_DESKS_MIN_NUM_REACHED" desc="Message shown to users when they attempt to remove the last virtual.">
|
||||
Last desk can't be removed.
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_ACTIVE_DESK_MINIVIEW_A11Y_EXTRA_TIP" desc="The accessibility tooltip read by screen readers for a highlighted active desk mini_view.">
|
||||
active desk
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_INACTIVE_DESK_MINIVIEW_A11Y_EXTRA_TIP" desc="The accessibility tooltip read by screen readers for a highlighted inactive desk mini_view.">
|
||||
inactive desk
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_NAME" desc="Alert when highlighting the desk name">
|
||||
Desk name
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_PREVIEW" desc="The desk preview accessible name">
|
||||
Desk preview
|
||||
<message name="IDS_ASH_DESKS_DESK_PREVIEW_ACTIVE" desc="The desk preview's accessible name when active">
|
||||
<ph name="DESK_NAME">$1<ex>Desk 2</ex></ph> preview. Active desk.
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_PREVIEW_INACTIVE" desc="The desk preview's accessible name when inactive">
|
||||
<ph name="DESK_NAME">$1<ex>Desk 2</ex></ph> preview. Inactive desk.
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_PREVIEW_ROLE_DESCRIPTION" desc="The desk preview's role description">
|
||||
Use tab for more options. Use left and right arrows to access all desks.
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_ACCESSIBLE_NAME" desc="The full accessible desk name">
|
||||
Desk: <ph name="DESK_NAME">$1</ph>
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_PREVIEW_A11Y_NAME" desc="The full accessible desk name">
|
||||
Go to <ph name="ACTIVE_STATE">$1</ph> <ph name="DESK_NAME">$2</ph> button.
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_NAME_COMMIT" desc="Alert when the desk name is committed">
|
||||
Desk name was changed to <ph name="DESK_NAME">$1</ph>
|
||||
</message>
|
||||
@ -2684,7 +2681,10 @@ Style notes:
|
||||
Combine with <ph name="DESK_NAME">$1</ph>
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_CLOSE_ALL_DESCRIPTION" desc="The tooltip and context menu text that describes the action of closing a desk and all of its windows.">
|
||||
Close desk and windows
|
||||
Close <ph name="DESK_NAME">$1<ex>Desk 2</ex></ph> and windows
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_PROFILES_BUTTON" desc="The desk profile button's accessible name">
|
||||
Desk profile menu
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_OPEN_PROFILE_MANAGER" desc="The tooltip and context menu text that describes the action of open the profile manager.">
|
||||
Manage profiles
|
||||
|
@ -1 +0,0 @@
|
||||
f0ab6cae002646d549b453d8462bb660fa4f46b2
|
@ -1 +1 @@
|
||||
e750f98895cd72c8c44a4e0483f27308903f61b2
|
||||
4ff217fea312ef190dbb055ee8c9a6cbbeca03ae
|
@ -1 +0,0 @@
|
||||
c14144b250b790a2418b3df1a4faf92ba4a50d26
|
@ -1 +0,0 @@
|
||||
828c0f8080f2886b58e92b5ce5de44366924f884
|
@ -0,0 +1 @@
|
||||
dad27b76216be34429331d82d18e786e2c21fccd
|
@ -0,0 +1 @@
|
||||
b11f43b8e9b36b728417d529696680df6eadbf9f
|
@ -0,0 +1 @@
|
||||
44a8f247c68b8761a6f36b1c96cc3aa137f38221
|
@ -0,0 +1 @@
|
||||
47eaeeb6c75c473c8f8b6e16940952e8ea19f35a
|
@ -1 +0,0 @@
|
||||
052eae4fae5a6f4cfec48cce64759f0a3e615d7d
|
@ -1 +1 @@
|
||||
2811b931f24f85df00b6918842a8e381dad7e27e
|
||||
e5d34c6aa5ab0a793c1ae72ec837bb51bd9d2c6b
|
@ -0,0 +1 @@
|
||||
16eafc18e8c75a3995fd62768bce75e5bf72543a
|
@ -1 +0,0 @@
|
||||
c0ffe8f27b8c2930819fe7b0648bbf06e1ac1c62
|
@ -133,11 +133,12 @@ DeskActionContextMenu::DeskActionContextMenu(Config config)
|
||||
ui::kColorAshSystemUIMenuIcon));
|
||||
}
|
||||
|
||||
if (config_.close_all_callback) {
|
||||
if (config_.close_all_target_name) {
|
||||
maybe_add_separator();
|
||||
const std::u16string close_all_a11y = l10n_util::GetStringFUTF16(
|
||||
IDS_ASH_DESKS_CLOSE_ALL_DESCRIPTION, *config_.close_all_target_name);
|
||||
context_menu_model_.AddItemWithIcon(
|
||||
CommandId::kCloseAll,
|
||||
l10n_util::GetStringUTF16(IDS_ASH_DESKS_CLOSE_ALL_DESCRIPTION),
|
||||
CommandId::kCloseAll, close_all_a11y,
|
||||
ui::ImageModel::FromVectorIcon(kMediumOrLargeCloseButtonIcon,
|
||||
ui::kColorAshSystemUIMenuIcon));
|
||||
}
|
||||
|
@ -52,6 +52,7 @@ class DeskActionContextMenu : public views::ContextMenuController,
|
||||
base::RepeatingClosure combine_desks_callback;
|
||||
|
||||
// If set, the option to close all windows on the desk is shown.
|
||||
std::optional<std::u16string> close_all_target_name;
|
||||
base::RepeatingClosure close_all_callback;
|
||||
|
||||
// Optional, invoked when the menu is closed.
|
||||
|
@ -22,11 +22,11 @@ constexpr int kDeskCloseButtonSize = 24;
|
||||
|
||||
} // namespace
|
||||
|
||||
DeskActionView::DeskActionView(
|
||||
const std::u16string& initial_combine_desks_target_name,
|
||||
base::RepeatingClosure combine_desks_callback,
|
||||
base::RepeatingClosure close_all_callback,
|
||||
base::RepeatingClosure focus_change_callback)
|
||||
DeskActionView::DeskActionView(const std::u16string& combine_desks_target_name,
|
||||
const std::u16string& close_all_target_name,
|
||||
base::RepeatingClosure combine_desks_callback,
|
||||
base::RepeatingClosure close_all_callback,
|
||||
base::RepeatingClosure focus_change_callback)
|
||||
: combine_desks_button_(AddChildView(
|
||||
std::make_unique<CloseButton>(std::move(combine_desks_callback),
|
||||
CloseButton::Type::kMediumFloating,
|
||||
@ -42,9 +42,9 @@ DeskActionView::DeskActionView(
|
||||
combine_desks_button_->SetFocusBehavior(views::View::FocusBehavior::ALWAYS);
|
||||
close_all_button_->SetFocusBehavior(views::View::FocusBehavior::ALWAYS);
|
||||
|
||||
close_all_button_->SetTooltipText(
|
||||
l10n_util::GetStringUTF16(IDS_ASH_DESKS_CLOSE_ALL_DESCRIPTION));
|
||||
UpdateCombineDesksTooltip(initial_combine_desks_target_name);
|
||||
close_all_button_->SetTooltipText(l10n_util::GetStringFUTF16(
|
||||
IDS_ASH_DESKS_CLOSE_ALL_DESCRIPTION, close_all_target_name));
|
||||
UpdateCombineDesksTooltip(combine_desks_target_name);
|
||||
|
||||
combine_desks_button_->SetPreferredSize(
|
||||
gfx::Size(kDeskCloseButtonSize, kDeskCloseButtonSize));
|
||||
|
@ -25,7 +25,8 @@ class ASH_EXPORT DeskActionView : public views::BoxLayoutView,
|
||||
public:
|
||||
METADATA_HEADER(DeskActionView);
|
||||
|
||||
DeskActionView(const std::u16string& initial_combine_desks_target_name,
|
||||
DeskActionView(const std::u16string& combine_desks_target_name,
|
||||
const std::u16string& close_all_target_name,
|
||||
base::RepeatingClosure combine_desks_callback,
|
||||
base::RepeatingClosure close_all_callback,
|
||||
base::RepeatingClosure focus_change_callback);
|
||||
|
@ -328,7 +328,7 @@ class DeskBarScrollViewLayout : public views::LayoutManager {
|
||||
new_desk_button->SetBoundsRect(new_desk_button_bounds);
|
||||
LayoutDeskIconButtonLabel(bar_view_->new_desk_button_label(),
|
||||
new_desk_button_bounds, desk_name_view,
|
||||
IDS_ASH_DESKS_NEW_DESK_BUTTON);
|
||||
IDS_ASH_DESKS_NEW_DESK_BUTTON_LABEL);
|
||||
x +=
|
||||
(new_desk_button_size.width() + kDeskBarMiniViewsSpacing) * increment;
|
||||
};
|
||||
@ -865,12 +865,6 @@ void DeskBarViewBase::NudgeDeskName(int desk_index) {
|
||||
auto* name_view = mini_views_[desk_index]->desk_name_view();
|
||||
name_view->RequestFocus();
|
||||
|
||||
// Set `name_view`'s accessible name if its text is cleared.
|
||||
if (name_view->GetAccessibleName().empty()) {
|
||||
name_view->SetAccessibleName(
|
||||
l10n_util::GetStringUTF16(IDS_ASH_DESKS_DESK_NAME));
|
||||
}
|
||||
|
||||
if (type_ == Type::kOverview) {
|
||||
MoveFocusToView(name_view);
|
||||
|
||||
|
@ -120,13 +120,6 @@ DeskMiniView::DeskMiniView(DeskBarViewBase* owner_bar,
|
||||
desk_name_view->set_controller(this);
|
||||
desk_name_view->SetText(desk_->name());
|
||||
|
||||
// Desks created by the new desk button are initialized with an empty name to
|
||||
// encourage user to name the desk, but the `desk_name_view` needs a non-empty
|
||||
// accessible name.
|
||||
auto* desks_controller = DesksController::Get();
|
||||
desk_name_view->SetAccessibleName(
|
||||
l10n_util::GetStringUTF16(IDS_ASH_DESKS_DESK_NAME));
|
||||
|
||||
SetPaintToLayer();
|
||||
layer()->SetFillsBoundsOpaquely(false);
|
||||
|
||||
@ -196,7 +189,9 @@ DeskMiniView::DeskMiniView(DeskBarViewBase* owner_bar,
|
||||
}
|
||||
|
||||
desk_action_view_ = AddChildView(std::make_unique<DeskActionView>(
|
||||
desks_controller->GetCombineDesksTargetName(desk_),
|
||||
/*combine_desks_target_name=*/DesksController::Get()
|
||||
->GetCombineDesksTargetName(desk_),
|
||||
/*close_all_target_name=*/desk_->name(),
|
||||
/*combine_desks_callback=*/
|
||||
base::BindRepeating(&DeskMiniView::OnRemovingDesk, base::Unretained(this),
|
||||
DeskCloseType::kCombineDesks),
|
||||
@ -404,6 +399,7 @@ void DeskMiniView::OpenContextMenu(ui::MenuSourceType source) {
|
||||
// Only add desk combine/close options if it's possible to remove a desk.
|
||||
DesksController* desk_controller = DesksController::Get();
|
||||
if (desk_controller->CanRemoveDesks()) {
|
||||
menu_config.close_all_target_name = desk_->name();
|
||||
menu_config.close_all_callback = base::BindRepeating(
|
||||
&DeskMiniView::OnRemovingDesk, base::Unretained(this),
|
||||
DeskCloseType::kCloseAllWindowsAndWait);
|
||||
@ -603,7 +599,7 @@ void DeskMiniView::OnDeskNameChanged(const std::u16string& new_name) {
|
||||
return;
|
||||
|
||||
desk_name_view_->SetText(new_name);
|
||||
desk_preview_->SetAccessibleName(new_name);
|
||||
desk_preview_->UpdateAccessibleName();
|
||||
|
||||
DeprecatedLayoutImmediately();
|
||||
}
|
||||
|
@ -32,6 +32,8 @@ DeskNameView::DeskNameView(DeskMiniView* mini_view)
|
||||
|
||||
set_use_default_focus_manager(mini_view_->owner_bar()->type() ==
|
||||
DeskBarViewBase::Type::kDeskButton);
|
||||
|
||||
SetAccessibleName(l10n_util::GetStringUTF16(IDS_ASH_DESKS_DESK_NAME));
|
||||
}
|
||||
|
||||
DeskNameView::~DeskNameView() = default;
|
||||
|
@ -350,7 +350,6 @@ DeskPreviewView::DeskPreviewView(PressedCallback callback,
|
||||
views::InkDrop::Get(this)->SetMode(views::InkDropHost::InkDropMode::OFF);
|
||||
SetFocusBehavior(views::View::FocusBehavior::ALWAYS);
|
||||
SetPaintToLayer(ui::LAYER_TEXTURED);
|
||||
SetAccessibleName(l10n_util::GetStringUTF16(IDS_ASH_DESKS_DESK_PREVIEW));
|
||||
layer()->SetFillsBoundsOpaquely(false);
|
||||
layer()->SetMasksToBounds(false);
|
||||
|
||||
@ -378,6 +377,8 @@ DeskPreviewView::DeskPreviewView(PressedCallback callback,
|
||||
highlight_overlay_layer->SetIsFastRoundedCorner(true);
|
||||
|
||||
RecreateDeskContentsMirrorLayers();
|
||||
|
||||
UpdateAccessibleName();
|
||||
}
|
||||
|
||||
DeskPreviewView::~DeskPreviewView() = default;
|
||||
@ -487,40 +488,26 @@ void DeskPreviewView::Swap(bool right) {
|
||||
desks_controller->UpdateDesksDefaultNames();
|
||||
}
|
||||
|
||||
void DeskPreviewView::UpdateAccessibleName() {
|
||||
if (Desk* desk = mini_view_->desk()) {
|
||||
SetAccessibleName(l10n_util::GetStringFUTF16(
|
||||
desk->is_active() ? IDS_ASH_DESKS_DESK_PREVIEW_ACTIVE
|
||||
: IDS_ASH_DESKS_DESK_PREVIEW_INACTIVE,
|
||||
desk->name()));
|
||||
}
|
||||
}
|
||||
|
||||
void DeskPreviewView::GetAccessibleNodeData(ui::AXNodeData* node_data) {
|
||||
// Avoid failing accessibility checks if we don't have a name.
|
||||
views::Button::GetAccessibleNodeData(node_data);
|
||||
if (GetAccessibleName().empty())
|
||||
|
||||
// Avoid failing accessibility checks if we don't have a name.
|
||||
if (GetAccessibleName().empty()) {
|
||||
node_data->SetNameExplicitlyEmpty();
|
||||
|
||||
// Note that the desk may have already been destroyed.
|
||||
Desk* desk = mini_view_->desk();
|
||||
if (desk) {
|
||||
// Announce desk name.
|
||||
node_data->AddStringAttribute(
|
||||
ax::mojom::StringAttribute::kRoleDescription,
|
||||
l10n_util::GetStringFUTF8(
|
||||
IDS_ASH_DESKS_DESK_PREVIEW_A11Y_NAME,
|
||||
l10n_util::GetStringUTF16(
|
||||
desk->is_active()
|
||||
? IDS_ASH_DESKS_ACTIVE_DESK_MINIVIEW_A11Y_EXTRA_TIP
|
||||
: IDS_ASH_DESKS_INACTIVE_DESK_MINIVIEW_A11Y_EXTRA_TIP),
|
||||
desk->name()));
|
||||
}
|
||||
|
||||
// If the desk can be combined or closed, add a tip to let the user know they
|
||||
// can use an accelerator.
|
||||
if (!DesksController::Get()->CanRemoveDesks()) {
|
||||
return;
|
||||
}
|
||||
|
||||
const std::u16string target_desk_name =
|
||||
DesksController::Get()->GetCombineDesksTargetName(desk);
|
||||
const std::string extra_tip = l10n_util::GetStringFUTF8(
|
||||
IDS_ASH_OVERVIEW_CLOSABLE_DESK_MINIVIEW_A11Y_EXTRA_TIP, target_desk_name);
|
||||
|
||||
node_data->AddStringAttribute(ax::mojom::StringAttribute::kDescription,
|
||||
extra_tip);
|
||||
node_data->AddStringAttribute(
|
||||
ax::mojom::StringAttribute::kRoleDescription,
|
||||
l10n_util::GetStringUTF8(IDS_ASH_DESKS_DESK_PREVIEW_ROLE_DESCRIPTION));
|
||||
}
|
||||
|
||||
void DeskPreviewView::Layout(PassKey) {
|
||||
|
@ -111,6 +111,9 @@ class ASH_EXPORT DeskPreviewView : public views::Button,
|
||||
// its right preview; otherwise it swaps with its left preview.
|
||||
void Swap(bool right);
|
||||
|
||||
// Updates accessible name for this desk preview.
|
||||
void UpdateAccessibleName();
|
||||
|
||||
// views::View:
|
||||
void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
|
||||
void Layout(PassKey) override;
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "ash/wm/desks/desk_mini_view.h"
|
||||
#include "ash/wm/desks/desks_histogram_enums.h"
|
||||
#include "base/check_op.h"
|
||||
#include "ui/base/l10n/l10n_util.h"
|
||||
#include "ui/base/metadata/metadata_impl_macros.h"
|
||||
#include "ui/chromeos/styles/cros_tokens_color_mappings.h"
|
||||
#include "ui/compositor/layer.h"
|
||||
@ -61,8 +62,8 @@ DeskProfilesButton::DeskProfilesButton(Desk* desk,
|
||||
|
||||
LoadIconForProfile();
|
||||
|
||||
// TODO(shidi):Update the accessible name if get any.
|
||||
SetAccessibleName(u"", ax::mojom::NameFrom::kAttributeExplicitlyEmpty);
|
||||
SetAccessibleName(
|
||||
l10n_util::GetStringUTF16(IDS_ASH_DESKS_DESK_PROFILES_BUTTON));
|
||||
}
|
||||
|
||||
DeskProfilesButton::~DeskProfilesButton() {
|
||||
|
Reference in New Issue
Block a user