tree: 85c6f63e11520b430e078102173e7a94e1db8a24 [path history] [tgz]
  1. accelerators/
  2. animation/
  3. app_list/
  4. aura/
  5. autoclick/
  6. content/
  7. devtools/
  8. display/
  9. drag_drop/
  10. first_run/
  11. frame/
  12. high_contrast/
  13. host/
  14. ime/
  15. keyboard/
  16. laser/
  17. magnifier/
  18. metrics/
  19. mus/
  20. public/
  21. resources/
  22. rotator/
  23. session/
  24. shared/
  25. shelf/
  26. shell/
  27. sticky_keys/
  28. strings/
  29. system/
  30. test/
  31. tooltips/
  32. touch/
  33. touch_hud/
  34. utility/
  35. wallpaper/
  36. wm/
  37. accessibility_delegate.h
  38. accessibility_types.h
  39. ash_constants.cc
  40. ash_constants.h
  41. ash_export.h
  42. ash_layout_constants.cc
  43. ash_layout_constants.h
  44. ash_strings.grd
  45. ash_switches.cc
  46. ash_switches.h
  47. ash_touch_exploration_manager_chromeos.cc
  48. ash_touch_exploration_manager_chromeos.h
  49. ash_touch_exploration_manager_chromeos_unittest.cc
  50. ash_view_ids.h
  51. BUILD.gn
  52. cancel_mode.cc
  53. cancel_mode.h
  54. cast_config_controller.cc
  55. cast_config_controller.h
  56. debug.cc
  57. debug.h
  58. default_accessibility_delegate.cc
  59. default_accessibility_delegate.h
  60. default_wallpaper_delegate.cc
  61. default_wallpaper_delegate.h
  62. DEPS
  63. dip_unittest.cc
  64. extended_desktop_unittest.cc
  65. focus_cycler.cc
  66. focus_cycler.h
  67. focus_cycler_unittest.cc
  68. gpu_support.h
  69. gpu_support_stub.cc
  70. gpu_support_stub.h
  71. ime_control_delegate.h
  72. key_event_watcher.cc
  73. key_event_watcher.h
  74. link_handler_model.cc
  75. link_handler_model.h
  76. link_handler_model_factory.cc
  77. link_handler_model_factory.h
  78. login_status.h
  79. media_controller.cc
  80. media_controller.h
  81. mojo_interface_factory.cc
  82. mojo_interface_factory.h
  83. multi_profile_uma.cc
  84. multi_profile_uma.h
  85. mus_property_mirror_ash_unittest.cc
  86. new_window_controller.cc
  87. new_window_controller.h
  88. OWNERS
  89. palette_delegate.h
  90. README.md
  91. root_window_controller.cc
  92. root_window_controller.h
  93. root_window_controller_unittest.cc
  94. root_window_settings.cc
  95. root_window_settings.h
  96. scoped_root_window_for_new_windows.cc
  97. scoped_root_window_for_new_windows.h
  98. screen_util.cc
  99. screen_util.h
  100. screen_util_unittest.cc
  101. screenshot_delegate.h
  102. shell.cc
  103. shell.h
  104. shell_delegate.h
  105. shell_init_params.h
  106. shell_observer.h
  107. shell_port.cc
  108. shell_port.h
  109. shell_unittest.cc
  110. shutdown_controller.cc
  111. shutdown_controller.h
  112. virtual_keyboard_controller.cc
  113. virtual_keyboard_controller.h
  114. virtual_keyboard_controller_unittest.cc
  115. window_user_data.h
  116. window_user_data_unittest.cc
  117. wm_display_observer.h
  118. wm_layout_manager.h
  119. wm_transient_window_observer.h
  120. wm_window.cc
  121. wm_window.h
  122. wm_window_unittest.cc
ash/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.

Ash sits below chrome in the dependency graph (i.e. it cannot depend on code in //chrome). It has a few dependencies on //content, but these are isolated in their own module in //ash/content. This allows targets like ash_unittests to build more quickly.

Tests

Most tests should be added to the ash_unittests target. Tests that rely on //content should be added to ash_content_unittests, but these should be rare.

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.

Mus+ash

Ash is transitioning to use the mus window server and gpu process, found in //services/ui. Ash continues to use aura, but aura is backed by mus. Code to support mus is found in //ash/mus. There should be relatively few differences between the pure aura and the aura-mus versions of ash. Ash can by run in mus mode by passing the --mus command line flag.

Ash is also transitioning to run as a mojo service in its own process. This means that code in chrome cannot call into ash directly, but must use the mojo interfaces in //ash/public/interfaces.

Out-of-process Ash is referred to as “mash” (mojo ash). In-process ash is referred to as “classic ash”. Ash can run in either mode depending on the --mash command line flag.

Historical notes

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