Rebecca Chang Swee Fun 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
..
accelerators 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
accelerometer 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
accessibility 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
ambient 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
animation 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
app_list 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
app_menu 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
ash_strings_grd 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
assistant 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
bubble 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
calendar 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
capture_mode 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
child_accounts 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
clipboard 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
components 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
constants 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
controls 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
dbus 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
detachable_base 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
display 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
drag_drop 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
events 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
fast_ink 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
frame 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
frame_throttler 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
high_contrast 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
highlighter 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
host 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
hud_display 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
ime 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
in_session_auth 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
keyboard 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
lock_screen_action 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
login 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
marker 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
media 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
metrics 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
multi_device_setup 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
multi_user 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
perftests 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
policy 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
power 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
projector 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
public 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
quick_pair 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
resources 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
rgb_keyboard 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
rotator 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
search_box 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
services 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
session 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shelf 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shortcut_viewer 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
strings 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
style 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
system 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
test 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
tooltips 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
touch 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
tray_action 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
utility 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
wallpaper 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
webui 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
wm 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
BUILD.gn 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
DEPS 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
DIR_METADATA 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
OWNERS 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
README.md 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
ash_export.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
ash_interfaces.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
ash_prefs.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
ash_strings.grd 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
autotest_private_api_utils.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
bluetooth_devices_observer.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
bluetooth_devices_observer.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
cancel_mode.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
cancel_mode.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
debug.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
debug.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
dip_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
extended_desktop_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
focus_cycler.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
focus_cycler.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
focus_cycler_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
login_status.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
multi_profile_uma.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
multi_profile_uma.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
root_window_controller.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
root_window_controller.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
root_window_controller_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
root_window_settings.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
root_window_settings.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
scoped_animation_disabler.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
scoped_animation_disabler.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
screen_util.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
screen_util.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
screen_util_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shell.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shell.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shell_delegate.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shell_delegate.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shell_init_params.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shell_init_params.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shell_observer.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shell_tab_handler.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shell_tab_handler.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shell_test_api.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shell_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shutdown_controller_impl.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shutdown_controller_impl.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shutdown_reason.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
shutdown_reason.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
test_media_client.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
test_media_client.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
test_shell_delegate.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
test_shell_delegate.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
window_tree_host_lookup.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
window_user_data.h 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an
window_user_data_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 il y a 1 an

README.md

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 42019.