
This reverts commit57368cb688
. Reason for revert: crbug.com/406443772 Original change's description: > Reland "Use string_view in logging and trace_event location" > > This is a reland of commit5439f8eb1e
> > Original change's description: > > Use string_view in logging and trace_event location > > > > Changes the LogMessage class to use a string_view for file names. This > > required a matching change in trace_event: a const char* string was > > passed from logging code, but there is no safe way to get a const > > char* from a string_view since the latter may not be null-terminated. > > > > Many clients of base/logging.h are updated to use string_view as well. > > > > Code which attempts to pass a string_view to a LogMessage by its data > > pointer already exists: > > https://source.chromium.org/chromium/chromium/src/+/main:ash/quick_pair/common/logging.cc;l=49;drc=c6c99d03b1d2f4fab91d6be8665f81b540690c73 > > https://source.chromium.org/chromium/chromium/src/+/main:components/cross_device/logging/logging.cc;l=30;drc=00704dbac4f63b2476aac319572ffc42c9b71fc2 > > > > Desire for Rust logging support prompted this change. In principle a > > Rust log facility can be a thin wrapper around the base logging > > implementation, but Rust has almost no support for null-terminated > > strings. Instead, Rust provides a string_view equivalent built in to > > the language. This change enables Rust code to pass file names > > obtained by language-specific macros to the C++ implementation. > > > > Bug: None > > Change-Id: I21b4f1c945b70d54f66d80adf3dcda1fe5a39f71 > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5765705 > > Reviewed-by: Peter Boström <pbos@chromium.org> > > Auto-Submit: Collin Baker <collinbaker@chromium.org> > > Commit-Queue: Collin Baker <collinbaker@chromium.org> > > Reviewed-by: Stephen Nusko <nuskos@chromium.org> > > Reviewed-by: Daniel Cheng <dcheng@chromium.org> > > Owners-Override: Daniel Cheng <dcheng@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#1436283} > > Bug: None > Change-Id: I725bac881a160caa6d97e7480bc4047b460fae34 > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6387020 > Commit-Queue: Collin Baker <collinbaker@chromium.org> > Reviewed-by: Peter Boström <pbos@chromium.org> > Owners-Override: Daniel Cheng <dcheng@chromium.org> > Reviewed-by: Daniel Cheng <dcheng@chromium.org> > Reviewed-by: Stephen Nusko <nuskos@chromium.org> > Cr-Commit-Position: refs/heads/main@{#1437625} Bug: None No-Presubmit: true No-Tree-Checks: true No-Try: true Change-Id: Ia4a01ddf6af5068d38b13971e09eb8146bd4d2d2 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6395097 Commit-Queue: Collin Baker <collinbaker@chromium.org> Owners-Override: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#1438193}
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/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.