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

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.

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.