0

Update tooltips and screenreader strings for Projector annotator

- Add tooltips to the marker colors. Render the colors as part of the
button instead of as a child view because the child view is exepcted to has a tool tip, but a tool tip cannot be set on the base class ui::View (as opposed to a Button)
- Update the marker tooltip to indicate the enabled state
- Add additional instruction for using the annotator to the screenreader
string

Tested:https://screencast.googleplex.com/cast/NTE5NTc3ODcxMzcxNDY4OHw3NDk3NzIzZi1hNQ

Bug: b/229292077
Bug: b/230110148
Change-Id: I129c50c180eba2c381272c88df9ce1400fd50e1a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3607444
Reviewed-by: Li Lin <llin@chromium.org>
Commit-Queue: Courtney Wong <courtneywong@chromium.org>
Cr-Commit-Position: refs/heads/main@{#999700}
This commit is contained in:
Courtney Wong
2022-05-05 01:35:00 +00:00
committed by Chromium LUCI CQ
parent 5b6e1843eb
commit dfbaf078b7
10 changed files with 57 additions and 15 deletions

@ -1722,8 +1722,20 @@ This file contains the strings for ash.
Stop screen recording
</message>
<message name="IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_TITLE" desc="The accessible name and title for the projector annotation button in the system tray.">
Screencast tools
<message name="IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_TOOLTIP" desc="The tooltip for the projector marker button in the system tray, indicating whether the marker is enabled or not.">
Toggle marker. <ph name="STATE_TEXT">$1<ex>Marker is on.</ex></ph>
</message>
<message name="IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_ACCESSIBLE_TITLE" desc="The accessible title for the projector marker button in the system tray, telling the user how to use the marker.">
Toggle marker. <ph name="STATE_TEXT">$1<ex>Marker is on.</ex></ph> Use the trackpad, touchscreen, or stylus to draw onscreen.
</message>
<message name="IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_ON_STATE" desc="Text indicating that the marker is on.">
Marker is on.
</message>
<message name="IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_OFF_STATE" desc="Text indicating that the marker is off.">
Marker is off.
</message>
<!-- Overview Mode -->

@ -0,0 +1 @@
f8e710cf8a36f5b5fea864c51903293ef417b34a

@ -0,0 +1 @@
46bb4c9f279dd1221f56effa0cabafd8e0a4b13f

@ -0,0 +1 @@
cb0c8dcc4350a2dfc80e62778ceff2757340f639

@ -1 +0,0 @@
9a1f2c91aadfd797e1aa2dddbb211968ff58bdc6

@ -0,0 +1 @@
f8e710cf8a36f5b5fea864c51903293ef417b34a

@ -96,7 +96,7 @@ ProjectorAnnotationTray::ProjectorAnnotationTray(Shelf* shelf)
image_view_(
tray_container()->AddChildView(std::make_unique<views::ImageView>())),
pen_view_(nullptr) {
image_view_->SetTooltipText(GetAccessibleNameForTray());
image_view_->SetTooltipText(GetTooltip());
image_view_->SetHorizontalAlignment(views::ImageView::Alignment::kCenter);
image_view_->SetVerticalAlignment(views::ImageView::Alignment::kCenter);
image_view_->SetPreferredSize(gfx::Size(kTrayItemSize, kTrayItemSize));
@ -134,8 +134,13 @@ void ProjectorAnnotationTray::ClickedOutsideBubble() {
}
std::u16string ProjectorAnnotationTray::GetAccessibleNameForTray() {
return l10n_util::GetStringUTF16(
IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_TITLE);
std::u16string enabled_state = l10n_util::GetStringUTF16(
GetCurrentTool() == kToolNone
? IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_OFF_STATE
: IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_ON_STATE);
return l10n_util::GetStringFUTF16(
IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_ACCESSIBLE_TITLE,
enabled_state);
}
void ProjectorAnnotationTray::HandleLocaleChange() {}
@ -199,13 +204,13 @@ void ProjectorAnnotationTray::ShowBubble() {
marker_view_container->SetLayoutManager(std::move(box_layout));
for (SkColor color : kPenColors) {
auto* colorButton = marker_view_container->AddChildView(
auto* color_button = marker_view_container->AddChildView(
std::make_unique<ProjectorColorButton>(
base::BindRepeating(&ProjectorAnnotationTray::OnPenColorPressed,
base::Unretained(this), color),
color, kColorButtonColorViewSize, kColorButtonViewRadius,
l10n_util::GetStringUTF16(GetAccessibleNameForColor(color))));
colorButton->SetToggled(current_pen_color_ == color);
color_button->SetToggled(current_pen_color_ == color);
}
setup_layered_view(marker_view_container);
}
@ -264,6 +269,7 @@ void ProjectorAnnotationTray::UpdateIcon() {
GetIconForTool(tool, current_pen_color_),
AshColorProvider::Get()->GetContentLayerColor(
AshColorProvider::ContentLayerType::kIconColorPrimary)));
image_view_->SetTooltipText(GetTooltip());
SetIsActive(tool != kToolNone);
}
@ -300,4 +306,13 @@ void ProjectorAnnotationTray::ResetTray() {
SetEnabled(false);
}
std::u16string ProjectorAnnotationTray::GetTooltip() {
std::u16string enabled_state = l10n_util::GetStringUTF16(
GetCurrentTool() == kToolNone
? IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_OFF_STATE
: IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_ON_STATE);
return l10n_util::GetStringFUTF16(
IDS_ASH_STATUS_AREA_PROJECTOR_ANNOTATION_TRAY_TOOLTIP, enabled_state);
}
} // namespace ash

@ -62,6 +62,8 @@ class ProjectorAnnotationTray : public TrayBackgroundView {
// Resets the tray to its default state.
void ResetTray();
std::u16string GetTooltip();
// Image view of the tray icon.
views::ImageView* const image_view_;

@ -5,6 +5,7 @@
#include "ash/projector/ui/projector_color_button.h"
#include "ash/resources/vector_icons/vector_icons.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/views/background.h"
@ -16,13 +17,16 @@ ProjectorColorButton::ProjectorColorButton(
int size,
float radius,
const std::u16string& name)
: ProjectorButton(callback, name) {
// Add the color view.
auto* color_view = AddChildView(std::make_unique<View>());
color_view->SetBounds((kProjectorButtonSize - size) / 2,
(kProjectorButtonSize - size) / 2, size, size);
color_view->SetBackground(CreateBackgroundFromPainter(
views::Painter::CreateSolidRoundRectPainter(color, radius)));
: ProjectorButton(callback, name), color_(color), size_(size) {}
void ProjectorColorButton::PaintButtonContents(gfx::Canvas* canvas) {
cc::PaintFlags flags;
flags.setAntiAlias(true);
flags.setStyle(cc::PaintFlags::kFill_Style);
flags.setColor(color_);
const gfx::RectF bounds(GetContentsBounds());
canvas->DrawCircle(bounds.CenterPoint(), (kProjectorButtonSize - size_) / 2,
flags);
}
} // namespace ash

@ -24,6 +24,12 @@ class ASH_EXPORT ProjectorColorButton : public ProjectorButton {
ProjectorColorButton(const ProjectorColorButton&) = delete;
ProjectorColorButton& operator=(const ProjectorColorButton&) = delete;
~ProjectorColorButton() override = default;
void PaintButtonContents(gfx::Canvas* canvas) override;
private:
SkColor color_;
int size_;
};
} // namespace ash