0
Files
src/ash
Evelynn Kaplan 4b0a91c65e [views-ax] Migrate accessible name in ash::LogoutButtonTray
This CL is the fifth of a multi-CL set that will migrate how
TrayBackgroundView and its derived classes set their accessible names.

This CL migrates the accessible name setter for ash::LogoutButtonTray
from being calculated only when requested in
TrayBackgroundView::GetAccessibleNodeData ("pull" system) to
updating the value in the ViewAccessibility cache whenever it
changes ("push"). The accessible name of LogoutButtonTray is dependent
on the text of a child button View, which can be changed by other
Views. This CL updates the LogoutButtonTray's accessible name whenever
the value of the button_'s text changes by adding a callback. This CL
also adds a relevant test.

This CL sets up LogoutButtonTray in preparation for a future CL where
TrayBackgroundView::GetAccessibleNodeData will be deleted.

As part of the ViewsAX project, we are removing GetAccessibleNodeData
from Views across chromium:
https://docs.google.com/document/d/1Ku7HOyDsiZem1yaV6ccZ-tz3lO2XR2NEcm8HjR6d-VY/edit

Future CLs will handle more complex cases where the accessible
name for the derived class needs to be updated dynamically.
The final CL will remove TrayBackgroundView::GetAccessibleNode data
entirely.

Bug: 325137417
Change-Id: I973c609fe07ad9df877af793a0a91756581ccef7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6033673
Commit-Queue: Evelynn Kaplan <evelynn.kaplan@microsoft.com>
Reviewed-by: Benjamin Beaudry <benjamin.beaudry@microsoft.com>
Reviewed-by: Jacques Newman <janewman@microsoft.com>
Reviewed-by: Mitsuru Oshima <oshima@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1388469}
2024-11-26 21:42:18 +00:00
..
2024-08-16 02:25:07 +00:00
2024-11-21 19:46:33 +00:00
2024-11-01 20:10:44 +00:00
2024-08-16 02:25:07 +00:00
2024-08-20 12:38:58 +00:00
2024-11-24 19:47:49 +00:00
2024-05-28 17:43:57 +00:00
2022-09-07 19:43:09 +00:00
2024-10-08 14:53:51 +00:00
2022-09-07 19:43:09 +00:00
2024-11-25 05:03:38 +00:00
2022-09-07 19:43:09 +00:00
2022-09-07 19:43:09 +00:00
2024-11-01 08:52:42 +00:00
2024-11-07 16:58:09 +00:00
2024-08-16 02:25:07 +00:00
2022-09-07 19:43:09 +00:00
2024-09-17 21:16:40 +00:00

Ash

Ash is the "Aura Shell", the window manager and system UI for Chrome OS. Ash uses the views UI toolkit (e.g. views::View, views::Widget, etc.) backed by the aura native widget and layer implementations.

Dependencies

Ash sits below chrome in the dependency graph (i.e. it cannot depend on code in //chrome). For historical reasons, ash has multiple dependency levels:

  • General //ash code is on top (//ash/system, //ash/wm, etc.)
  • //ash/components sit below //ash, see README
  • //ash/constants sit near the bottom of the dependency graph, see README

Access to Ash internals is controlled by DEPS files. Unless explicitly allowed by DEPS, code outside Ash should depend on the interfaces in //ash/public. Check with OWNERS if you have questions.

Tests

Tests should be added to the ash_unittests target.

Tests can bring up most of the ash UI and simulate a login session by deriving from AshTestBase. This is often needed to test code that depends on ash::Shell and the controllers it owns.

Test support code (TestFooDelegate, FooControllerTestApi, etc.) lives in the same directory as the class under test (e.g. //ash/foo rather than //ash/test). Test code uses namespace ash; there is no special "test" namespace.

Prefs

Ash supports both per-user prefs and device-wide prefs. These are called "profile prefs" and "local state" to match the naming conventions in chrome. Ash also supports "signin screen" prefs, bound to a special profile that allows users to toggle features like spoken feedback at the login screen.

Pref names are in //ash/public/cpp so that code in chrome can also use the names. Prefs are registered in the classes that use them because those classes have the best knowledge of default values.

Historical notes

Ash shipped on Windows for a couple years to support Windows 8 Metro mode. Windows support was removed in 2016.

The mash (some times called mus-ash or mustash) project was an effort to move ash into its own process and the browser in its own process. Communication between the two processes was done over mojo. Windowing was done using the window-service (some times called mus), which ran with Ash. Many of the mojo interfaces have been converted to pure virtual interfaces, with the implementation in ash. The mash project was stopped around 4/2019.

"Shelf party" was an Easter-egg feature that made shelf icons fly around the screen. It did not launch and was removed in June 2023.