123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- // Copyright (c) 2012 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef ASH_PUBLIC_CPP_SHELL_WINDOW_IDS_H_
- #define ASH_PUBLIC_CPP_SHELL_WINDOW_IDS_H_
- #include <vector>
- #include "ash/public/cpp/ash_public_export.h"
- // Declarations of ids of special shell windows.
- namespace ash {
- enum ShellWindowId {
- // Used to indicate no shell window id.
- kShellWindowId_Invalid = -1,
- // This container is used for animations which take a screenshot of the
- // contents, place them on top of the root and animate the screenshot layer.
- // We can't take a screenshot of the root itself, otherwise subsequent
- // screenshots will screenshot previous screenshots.
- kShellWindowId_ScreenAnimationContainer = 0,
- // The magnified container which contains everything that would be magnified
- // when docked magnifier is enabled.
- kShellWindowId_MagnifiedContainer,
- // The container for the Docked Magnifier viewport widget and the separator.
- kShellWindowId_DockedMagnifierContainer,
- // A higher-level container that holds all of the containers stacked below
- // kShellWindowId_LockScreenContainer. Only used by PowerButtonController for
- // animating lower-level containers and AccessibilityController for hiding
- // non-lock screen windows from Accessibility when the user session is
- // blocked.
- kShellWindowId_NonLockScreenContainersContainer,
- // A higher-level container that holds containers that hold lock-screen
- // windows. Only used by PowerButtonController for animating lower-level
- // containers.
- kShellWindowId_LockScreenContainersContainer,
- // A higher-level container that holds containers that hold
- // lock-screen-related windows (which are displayed regardless of the screen
- // lock state, effectively containers stacked above
- // kShellWindowId_LockSystemModalContainer). Used by the shelf, status area,
- // virtual keyboard, settings bubble, menus, etc. Also used by the
- // PowerButtonController for animating lower-level containers.
- kShellWindowId_LockScreenRelatedContainersContainer,
- // A container used for windows that temporarily have no parent. It is
- // expected the windows will get parented to another container shortly after.
- // This container is not visible.
- kShellWindowId_UnparentedContainer,
- // The wallpaper (desktop background) window.
- kShellWindowId_WallpaperContainer,
- // The glanceables ("welcome back") window container.
- kShellWindowId_GlanceablesContainer,
- // The containers for standard top-level windows per active desks.
- // * Notes:
- // - There are no direct mapping between `kShellWindowId_DeskContainerA` and
- // Desk 1, or `kShellWindowId_DeskContainerB` and Desk 2. The containers
- // are reused as desks are created and deleted.
- // - **DO NOT** use these container IDs directly, instead use
- // `desks_util::GetActiveDeskContainerId()`.
- // TODO(afakhry): Rename this container, unexpose it, and add the rest of the
- // containers.
- kShellWindowId_DefaultContainerDeprecated,
- kShellWindowId_DeskContainerB,
- kShellWindowId_DeskContainerC,
- kShellWindowId_DeskContainerD,
- kShellWindowId_DeskContainerE,
- kShellWindowId_DeskContainerF,
- kShellWindowId_DeskContainerG,
- kShellWindowId_DeskContainerH,
- // The container for top-level windows with the 'always-on-top' flag set.
- kShellWindowId_AlwaysOnTopContainer,
- // The container for the floating window.
- // Experimental feature, please don't use this container.
- kShellWindowId_FloatContainer,
- // The container for the app list.
- kShellWindowId_AppListContainer,
- // The container for the home screen, e.g. the app list in tablet mode.
- kShellWindowId_HomeScreenContainer,
- // The container for the PIP window.
- kShellWindowId_PipContainer,
- // The parent container that holds the ARC IME container and windows created
- // by ARC IME other than the virtual keyboard window.
- // This container window is to ensure that the ARC IME window is stacked above
- // top-level windows and the app list window but below the shelf.
- kShellWindowId_ArcImeWindowParentContainer,
- // The container for Virtual Keyboard from ARC IMEs.
- kShellWindowId_ArcVirtualKeyboardContainer,
- // The container for UI on the shelf (shelf, navigation, hotseat,
- // status area).
- kShellWindowId_ShelfContainer,
- // The container for bubbles which float over the shelf.
- kShellWindowId_ShelfBubbleContainer,
- // The container for user-specific modal windows.
- kShellWindowId_SystemModalContainer,
- // The container for the lock screen wallpaper (lock screen background).
- kShellWindowId_LockScreenWallpaperContainer,
- // The container for the lock screen.
- kShellWindowId_LockScreenContainer,
- // The container for windows that handle lock tray actions (e.g. new note
- // action). The action handler container's children should be visible on lock
- // screen, but only when an action is being handled - i.e. action handling
- // state is either:
- // * active - the container is stacked above LockScreenContainer
- // * background - the container is stacked below LockScreenContainer
- kShellWindowId_LockActionHandlerContainer,
- // The container for the lock screen modal windows.
- kShellWindowId_LockSystemModalContainer,
- // A parent container that holds the virtual keyboard container and ime
- // windows if any. This is to ensure that the virtual keyboard or ime window
- // is stacked above most containers but below the mouse cursor and the power
- // off animation.
- kShellWindowId_ImeWindowParentContainer,
- // The virtual keyboard container.
- kShellWindowId_VirtualKeyboardContainer,
- // The container for menus.
- kShellWindowId_MenuContainer,
- // The container for drag/drop images and tooltips.
- kShellWindowId_DragImageAndTooltipContainer,
- // The container for the fullscreen power button menu.
- kShellWindowId_PowerMenuContainer,
- // The container for bubbles briefly overlaid onscreen to show settings
- // changes (volume, brightness, input method bubbles, etc.).
- kShellWindowId_SettingBubbleContainer,
- // Contains special accessibility windows that can inset the display work area
- // (e.g. the ChromeVox spoken feedback window).
- // TODO(jamescook): Consolidate this with DockedMagnifierContainer.
- kShellWindowId_AccessibilityPanelContainer,
- // The container for accessibility bubbles that overlay the work area and any
- // other menus and bubbles, but appear under the Autoclick mouse UX in
- // kShellWindowId_OverlayContainer. Both Autoclick and Switch Access have
- // bubbles that appear in this layer. These features need to work with dialogs
- // and menus, so they must be shown above
- // kShellWindowId_SettingBubbleContainer to allow the user to access these
- // settings. However, these bubbles may have buttons with tooltips which must
- // be shown above the bubbles, so it must be under
- // kShellWindowId_DragImageAndTooltipContainer.
- // TODO(crbug/1076973): Investigate merging this container with
- // AccessibilityPanelContainer.
- kShellWindowId_AccessibilityBubbleContainer,
- // The container for special components overlaid onscreen, such as the
- // region selector for partial screenshots.
- kShellWindowId_OverlayContainer,
- // The container for ambient mode screen saver.
- kShellWindowId_AmbientModeContainer,
- // The container for mouse cursor.
- kShellWindowId_MouseCursorContainer,
- // The container for an image that should stay on top of everything except for
- // the power off animation.
- kShellWindowId_AlwaysOnTopWallpaperContainer,
- // The topmost container, used for power off animation.
- kShellWindowId_PowerButtonAnimationContainer,
- kShellWindowId_MinContainer = kShellWindowId_ScreenAnimationContainer,
- kShellWindowId_MaxContainer = kShellWindowId_PowerButtonAnimationContainer,
- };
- // Special shell windows that are not containers.
- enum NonContainerWindowId {
- // The window created by PhantomWindowController or DragWindowController.
- kShellWindowId_PhantomWindow = kShellWindowId_MaxContainer + 1,
- // The window that shows the Virtual Desks bar at the top of overview. There's
- // only one such window on each display when overview mode is active.
- kShellWindowId_DesksBarWindow,
- // The window that shows a blue highlight on the edges of a selected display.
- // Only one window exists whenever the display settings page is open with
- // multiple displays connected.
- kShellWindowId_DisplayIdentificationHighlightWindow,
- // The window specified as the owner of the folder selection menu for capture
- // mode, which will be a transient window parent of the about to be created
- // dialog window. This is needed in order to prevent
- // |SelectFileDialogExtension| from favoring to parent the dialog to a browser
- // window (if one exists).
- kShellWindowId_CaptureModeFolderSelectionDialogOwner,
- // The window that shows the "Save desk as template" button and `Save desk for
- // later` button below the Virtual Desks bar. There's only one such window on
- // each display when overview mode is active.
- kShellWindowId_SaveDeskButtonContainer,
- // The window that shows the Saved Desk Library in overview.
- kShellWindowId_SavedDeskLibraryWindow,
- // The window that shows the "No recent items" label in overview.
- kShellWindowId_OverviewNoWindowsLabelWindow,
- };
- // A list of system modal container IDs. The order of the list is important that
- // the more restrictive container appears before the less restrictive ones.
- constexpr int kSystemModalContainerIds[] = {
- kShellWindowId_LockSystemModalContainer,
- kShellWindowId_SystemModalContainer};
- // Returns the list of container ids of containers which may contain windows
- // that need to be activated. this list is ordered by the activation order; that
- // is, windows in containers appearing earlier in the list are activated before
- // windows in containers appearing later in the list. This list is used by
- // AshFocusRules to determine which container to start the search from when
- // looking for the next activatable window.
- ASH_PUBLIC_EXPORT std::vector<int> GetActivatableShellWindowIds();
- // Returns true if |id| is in GetActivatableShellWindowIds.
- ASH_PUBLIC_EXPORT bool IsActivatableShellWindowId(int id);
- } // namespace ash
- #endif // ASH_PUBLIC_CPP_SHELL_WINDOW_IDS_H_
|