blob: 643b34504677a1bd3f58be6e120e267ed7d42717 [file] [log] [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ASH_PUBLIC_CPP_WINDOW_PROPERTIES_H_
#define ASH_PUBLIC_CPP_WINDOW_PROPERTIES_H_
#include <stdint.h>
#include <string>
#include "ash/public/cpp/arc_game_controls_flag.h"
#include "ash/public/cpp/arc_resize_lock_type.h"
#include "ash/public/cpp/ash_public_export.h"
#include "ui/base/class_property.h"
class SkRegion;
namespace aura {
template <typename T>
using WindowProperty = ui::ClassProperty<T>;
} // namespace aura
namespace chromeos {
enum class WindowStateType;
}
namespace gfx {
class Rect;
class Size;
}
namespace ash {
class WindowBackdrop;
enum class ResizeShadowType;
// Shell-specific window property keys for use by ash and its clients.
// Alphabetical sort.
// A property key to store the app ID for the window's associated app.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<std::string*>* const
kAppIDKey;
// A property key to store the ARC Game Controls status.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<ArcGameControlsFlag>* const
kArcGameControlsFlagsKey;
// A property key to store the ARC package name for a window's associated
// ARC app.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<std::string*>* const
kArcPackageNameKey;
// If true, the ARC window can not be resized freely.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<ArcResizeLockType>* const
kArcResizeLockTypeKey;
// A property key to specify whether the window should have backdrop and if
// it has backdrop, the backdrop's mode and type. The backdrop is typically a
// black window that covers the entire workspace placed behind the window.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<WindowBackdrop*>* const
kWindowBackdropKey;
// If true, will send system keys to the window for dispatch.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kCanConsumeSystemKeysKey;
// Accessibility Id set by the ARC++ client.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<int32_t>* const
kClientAccessibilityIdKey;
// A property key to exclude the window in MruTracker.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kExcludeInMruKey;
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kFrameRateThrottleKey;
// A property key to indicate whether we should hide this window in overview
// mode and Alt + Tab.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kHideInOverviewKey;
// A property key to exclude the window in the transient tree iterator.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kExcludeFromTransientTreeTransformKey;
// A property key to indicate whether we should hide this window in the shelf.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kHideInShelfKey;
// If true, the window is a browser window and its tab(s) are currently being
// dragged.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kIsDraggingTabsKey;
// If true, the window will be ignored when mirroring the desk contents into
// the desk's mini_view.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kHideInDeskMiniViewKey;
// If true, the mirror of the window in the mini_view will be forced to be
// visible and its visibility won't be synced with visibility changes of the
// source.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kForceVisibleInMiniViewKey;
// Set on lacros browser windows and identifies the lacros profile used to
// launch the browser. See desk_profiles_delegate.h for more information.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<uint64_t>* const
kLacrosProfileId;
// A property key to store whether we should minimize a window when a system
// synthesized back event (back gesture, back button) is processed by this
// window and when this window is at the bottom of its navigation stack.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool*>* const
kMinimizeOnBackKey;
// If true, the current PIP window is spawned from this window.
// Android PIP has two types of behavior depending on how many activities the
// original task has before entering PIP.
// SAPIP(Single-activity PIP): If the original task has only one activity, PIP
// can be handled as window state change of the target window. In this case, the
// PIP original window is this exact PIP window.
// MAPIP(Multi-activity PIP): If the original task has more than one activities,
// a new window is created for PIP, which is a completely different one from
// the existing window. This existing window is the original window of the
// current PIP window in this case. This property is used, for example, to
// calculated the position of the PIP window in the Alt-Tab window cycler.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kPipOriginalWindowKey;
// A property key to store the PIP snap fraction for this window.
// The fraction is defined in a clockwise fashion against the PIP movement area.
//
// 0 1
// 4 +---+ 1
// | |
// 3 +---+ 2
// 3 2
//
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<float*>* const
kPipSnapFractionKey;
// A property key which stores the preferred size used when the unresizable
// window is snapped in clamshell mode. Setting this property can make the
// window snappable even if it's unresizable. Please note that the window
// doesn't become snappable if the width (height if in the portrait snap mode)
// of the property value is bigger than one of the workspace or is equal to 0.
// Also, setting the zero size (width=0 and height=0) causes DCHECK failure.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<gfx::Size*>* const
kUnresizableSnappedSizeKey;
// Maps to ws::mojom::WindowManager::kRenderParentTitleArea_Property.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kRenderTitleAreaProperty;
// A property key which stores the bounds in screen coordinates to restore a
// window to. These take preference over the current bounds. This is used by
// e.g. the tablet mode window manager.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<gfx::Rect*>* const
kRestoreBoundsOverrideKey;
// A property key which stores the window state to restore a window to. These
// take preference over the current state if
// |kRestoreWindowStateTypeOverrideKey| is set. This is used by e.g. the tablet
// mode window manager.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<
chromeos::WindowStateType>* const kRestoreWindowStateTypeOverrideKey;
// A property key to store whether search key accelerator is reserved for a
// window. This is used to pass through search key accelerators to Android
// window if user is navigating with TalkBack (screen reader on Android).
// TalkBack uses search key as a modifier key.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kSearchKeyAcceleratorReservedKey;
// A property key to store the serialized id for a window's shelf item.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<std::string*>* const
kShelfIDKey;
// A property key to store the type of a window's shelf item.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<int32_t>* const
kShelfItemTypeKey;
// A property key to store the type of a window's resize shadow.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<ResizeShadowType>* const
kResizeShadowTypeKey;
// A property key to store the system gesture exclusion region. From a point
// inside the region, system gesture e.g. back gesture shouldn't be triggered.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<SkRegion*>* const
kSystemGestureExclusionKey;
// A property key to indicate whether ash should perform auto management of
// window positions; when you open a second browser, ash will move the two to
// minimize overlap.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kWindowPositionManagedTypeKey;
// A property key to indicate whether the cursor should stay visible when a key
// is pressed. ChromeOS normally hides the cursor when a key is pressed but this
// results in undesirable interaction with games.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kShowCursorOnKeypress;
// A property key to indicate pip window state.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<bool>* const
kWindowPipTypeKey;
// A property key which store the bounds of a pip window's resize handle in the
// pip window's coordinates. This is used to track the usage of the resize
// handle.
ASH_PUBLIC_EXPORT extern const aura::WindowProperty<gfx::Rect*>* const
kWindowPipResizeHandleBoundsKey;
// Alphabetical sort.
} // namespace ash
#endif // ASH_PUBLIC_CPP_WINDOW_PROPERTIES_H_