Chrome Release Bot (LUCI) 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
..
collision_detection 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
desks 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
float 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
gestures 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
overview 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
pip 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
splitview 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
tablet_mode 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_cycle 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_restore 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
workspace 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
DEPS 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
DIR_METADATA 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
OWNERS 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
README.md 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
always_on_top_controller.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
always_on_top_controller.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
always_on_top_controller_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
ash_focus_rules.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
ash_focus_rules.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
ash_focus_rules_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
base_state.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
base_state.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
client_controlled_state.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
client_controlled_state.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
client_controlled_state_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
container_finder.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
container_finder.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
container_finder_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
cursor_manager_chromeos.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
cursor_manager_chromeos.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
cursor_manager_chromeos_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
cursor_manager_test_api.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
cursor_manager_test_api.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
default_state.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
default_state.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
default_window_resizer.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
default_window_resizer.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
default_window_resizer_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
drag_details.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
drag_details.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
drag_window_controller.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
drag_window_controller.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
drag_window_resizer.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
drag_window_resizer.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
drag_window_resizer_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
event_client_impl.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
event_client_impl.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
fullscreen_window_finder.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
fullscreen_window_finder.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
fullscreen_window_finder_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
immersive_context_ash.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
immersive_context_ash.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
immersive_fullscreen_controller_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_action_handler_layout_manager.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_action_handler_layout_manager.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_action_handler_layout_manager_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_layout_manager.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_layout_manager.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_layout_manager_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_state_controller.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_state_controller.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_state_controller_test_api.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_state_controller_test_api.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_state_controller_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_state_observer.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_window_state.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
lock_window_state.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
mru_window_tracker.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
mru_window_tracker.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
mru_window_tracker_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
multitask_menu_nudge_controller.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
multitask_menu_nudge_controller.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
multitask_menu_nudge_controller_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
native_cursor_manager_ash.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
native_cursor_manager_ash.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
native_cursor_manager_ash_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
overlay_event_filter.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
overlay_event_filter.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
overlay_event_filter_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
overlay_layout_manager.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
overlay_layout_manager.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
overlay_layout_manager_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
resize_shadow.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
resize_shadow.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
resize_shadow_and_cursor_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
resize_shadow_controller.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
resize_shadow_controller.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
root_window_layout_manager.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
root_window_layout_manager.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
root_window_layout_manager_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
screen_dimmer.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
screen_dimmer.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
screen_dimmer_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
screen_pinning_controller.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
screen_pinning_controller.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
screen_pinning_controller_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
session_state_animator.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
session_state_animator.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
session_state_animator_impl.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
session_state_animator_impl.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
session_state_animator_impl_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
stacking_controller.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
stacking_controller.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
stacking_controller_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
switchable_windows.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
switchable_windows.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
system_gesture_event_filter.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
system_gesture_event_filter.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
system_gesture_event_filter_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
system_modal_container_event_filter.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
system_modal_container_event_filter.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
system_modal_container_event_filter_delegate.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
system_modal_container_layout_manager.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
system_modal_container_layout_manager.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
system_modal_container_layout_manager_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
system_wallpaper_controller.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
system_wallpaper_controller.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
test_activation_delegate.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
test_activation_delegate.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
test_child_modal_parent.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
test_child_modal_parent.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
test_overlay_delegate.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
test_overlay_delegate.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
test_session_state_animator.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
test_session_state_animator.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
toplevel_window_event_handler.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
toplevel_window_event_handler.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
toplevel_window_event_handler_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
video_detector.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
video_detector.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
video_detector_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_animations.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_animations.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_animations_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_dimmer.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_dimmer.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_dimmer_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_finder.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_finder_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_manager_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_mini_view.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_mini_view.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_mirror_view.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_mirror_view.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_mirror_view_pip.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_mirror_view_pip.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_mirror_view_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_modality_controller_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_positioner.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_positioner.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_positioner_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_positioning_utils.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_positioning_utils.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_positioning_utils_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_preview_view.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_preview_view.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_preview_view_test_api.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_preview_view_test_api.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_preview_view_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_properties.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_properties.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_resizer.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_resizer.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_state.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_state.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_state_delegate.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_state_delegate.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_state_observer.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_state_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_state_util.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_state_util.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_transient_descendant_iterator.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_transient_descendant_iterator.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_transient_descendant_iterator_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_util.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_util.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
window_util_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
wm_default_layout_manager.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
wm_default_layout_manager.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
wm_event.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
wm_event.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
wm_highlight_item_border.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
wm_highlight_item_border.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
wm_metrics.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
wm_shadow_controller_delegate.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
wm_shadow_controller_delegate.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
work_area_insets.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
work_area_insets.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
work_area_insets_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
workspace_controller.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
workspace_controller.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
workspace_controller_test_api.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
workspace_controller_test_api.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
workspace_controller_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago

README.md

Window Manager

Overview

This is the ash window manager, which allows users to manipulate and/or modify windows. Windows are normally described as a views::Widget which has an associated aura::Window. The windows managed are application windows and are parented to a switchable container.

Notable classes

MruWindowTracker

MruWindowTracker allows us to grab a list of application windows in most recently used order. This will only grab windows in the switchable containers and filters can be applied. There are some commonly used filters, these are split into helper functions. The MRU list can be accessed anywhere in ash code.

#include "ash/wm/mru_window_tracker.h"

auto windows = Shell::Get()->mru_window_tracker()->BuildMruWindowList(kActiveDesk);

WindowResizer

WindowResizer is the base class for window drag and resize logic. A subclass of this, depending on the scenario may be created by ToplevelWindowEventHandler when a valid event is seen. The event handler will then forward the events to the subclass. The subclass will then handle positioning and resizing the window, as well as creating supporting UIs (i.e. phantoms) and possibly changing the window state on drag end.

WindowState

WindowState is a wrapper around the window’s aura::Window that lets us modify and query info about a window’s state (i.e. maximized, minimized). It also takes care of animations when changing states. It owns a State object that can be overridden for different modes (ie. ClientControlledWindowState for ARC apps, TabletModeWindowState for all other apps in tablet mode). Helpers exist for common state changes, less common state changes can be sent WMEvent’s. The WindowState of a window can be accessed anywhere in ash.

#include "ash/wm/window_state.h"

WindowState* window_state = WindowState::Get(window);
WMEvent wm_event(WM_EVENT_SNAP_PRIMARY);
window_state->OnWMEvent(&wm_event);
// WindowState will compute the animation and target bounds and animate the
// window to the left half.

Features

The following are features that are larger or more complex, or have many interactions with non window manager features.

Desks

Desks is a productivity feature that allows users to place windows on a virtual desk. Only the windows associated with the active desk will be visible. On switching desks, the windows associated with the old active desk slide out, and the windows associated with the new active desk slide in. Desks can be created, accessed and destroyed using accelerators or a desk UI in overview mode.

Gestures

Gestures provide a quick way of doing window management. This folder contains gesture centric features like the back gesture and touch pad gestures, but other features can have gestures built in (i.e. overview swipe to close).

Overview

Overview mode, previously known as window selector is a mode which displays all your current windows. It provides an entry to desks and splitview. In clamshell, you can access it doing a 3-finger swipe down on the trackpad, or pressing F5. In tablet, you can access by swiping up on the shelf.

Splitview

Splitview is a productivity feature that allows using two windows side by side with no real estate wasted. It can be activated by drag-drop in overview, ALT+[ or ALT+] accelerators, or swiping up from the shelf in tablet mode.

Tablet Mode

TabletModeController contains the logic to determine when a user wants to use the Chromebook as a tablet. It then notifies many observers (i.e. shelf, app list, chrome browser) to make their UI’s more touch friendly or account for the lack of a keyboard. Some features are also tablet mode only. They can register as an observer, or check TabletModeController::InTabletMode.

WindowCycleController

Window cycler, or ALT+TAB allows you to switch between windows and view thumbnails of running windows. Tapping TAB or SHIFT+TAB while holding ALT allows cycling through the UI. If the accelerator is tapped quick enough, the UI will not be shown.

Performance

Window management features commonly involve moving, fading or updating one or many windows. The windows are usually large textures and on top of that, we may need supporting UI (i.e. indicators, phantoms) which may also be large and need to be animated. This can lead to poor performance on low end devices. If the feature has many large moving parts, consider adding metrics (ThroughputTracker , PresentationTimeRecorder), adding a tast test and monitoring the dashboards.