blob: ffb75774b59a21add268e1f32ad0042de4d25f2a [file] [log] [blame]
// Copyright 2017 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.
#include "ash/public/cpp/window_properties.h"
#include "ash/public/cpp/ash_constants.h"
#include "ash/public/cpp/shelf_types.h"
#include "ash/public/cpp/window_pin_type.h"
#include "ash/public/cpp/window_state_type.h"
#include "ash/public/interfaces/window_pin_type.mojom.h"
#include "ash/public/interfaces/window_properties.mojom.h"
#include "ash/public/interfaces/window_state_type.mojom.h"
#include "base/unguessable_token.h"
#include "services/ui/public/interfaces/window_manager.mojom.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/mus/property_converter.h"
#include "ui/aura/window.h"
#include "ui/gfx/color_palette.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/image/image_skia.h"
DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(ASH_PUBLIC_EXPORT,
ash::mojom::WindowPinType)
DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(ASH_PUBLIC_EXPORT,
ash::mojom::WindowStateType)
DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(ASH_PUBLIC_EXPORT,
ash::BackdropWindowMode)
DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(ASH_PUBLIC_EXPORT,
ash::FrameBackButtonState)
namespace ash {
void RegisterWindowProperties(aura::PropertyConverter* property_converter) {
property_converter->RegisterPrimitiveProperty(
kBlockedForAssistantSnapshotKey,
mojom::kBlockedForAssistantSnapshot_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kCanConsumeSystemKeysKey, mojom::kCanConsumeSystemKeys_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterRectProperty(
kCaptionButtonBoundsKey, mojom::kCaptionButtonBounds_Property);
property_converter->RegisterPrimitiveProperty(
kFrameBackButtonStateKey,
ui::mojom::WindowManager::kFrameBackButtonState_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kFrameActiveColorKey,
ui::mojom::WindowManager::kFrameActiveColor_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterUnguessableTokenProperty(
kFrameImageActiveKey, mojom::kFrameImageActive_Property);
property_converter->RegisterUnguessableTokenProperty(
kFrameImageInactiveKey, mojom::kFrameImageInactive_Property);
property_converter->RegisterUnguessableTokenProperty(
kFrameImageActiveKey, mojom::kFrameImageOverlayActive_Property);
property_converter->RegisterUnguessableTokenProperty(
kFrameImageActiveKey, mojom::kFrameImageOverlayInactive_Property);
property_converter->RegisterPrimitiveProperty(
kFrameImageYInsetKey, mojom::kFrameImageYInset_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kHideCaptionButtonsInTabletModeKey,
mojom::kHideCaptionButtonsInTabletMode_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kFrameInactiveColorKey,
ui::mojom::WindowManager::kFrameInactiveColor_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kFrameIsThemedByHostedAppKey, mojom::kFrameIsThemedByHostedApp_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kFrameTextColorKey, mojom::kFrameTextColor_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kHideShelfWhenFullscreenKey, mojom::kHideShelfWhenFullscreen_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kIsDeferredTabDraggingTargetWindowKey,
mojom::kIsDeferredTabDraggingTargetWindow_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kIsDraggingTabsKey, mojom::kIsDraggingTabs_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kIsShowingInOverviewKey, mojom::kIsShowingInOverview_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kPanelAttachedKey, ui::mojom::WindowManager::kPanelAttached_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kRenderTitleAreaProperty,
ui::mojom::WindowManager::kRenderParentTitleArea_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterPrimitiveProperty(
kShelfItemTypeKey, ui::mojom::WindowManager::kShelfItemType_Property,
base::BindRepeating(&IsValidShelfItemType));
property_converter->RegisterPrimitiveProperty(
kWindowStateTypeKey, mojom::kWindowStateType_Property,
base::BindRepeating(&IsValidWindowStateType));
property_converter->RegisterPrimitiveProperty(
kWindowPinTypeKey, mojom::kWindowPinType_Property,
base::BindRepeating(&IsValidWindowPinType));
property_converter->RegisterPrimitiveProperty(
kWindowPositionManagedTypeKey, mojom::kWindowPositionManaged_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
property_converter->RegisterStringProperty(
kShelfIDKey, ui::mojom::WindowManager::kShelfID_Property);
property_converter->RegisterRectProperty(
kRestoreBoundsOverrideKey, mojom::kRestoreBoundsOverride_Property);
property_converter->RegisterPrimitiveProperty(
kRestoreWindowStateTypeOverrideKey,
mojom::kRestoreWindowStateTypeOverride_Property,
base::BindRepeating(&IsValidWindowStateType));
property_converter->RegisterPrimitiveProperty(
aura::client::kTitleShownKey,
ui::mojom::WindowManager::kWindowTitleShown_Property,
aura::PropertyConverter::CreateAcceptAnyValueCallback());
}
DEFINE_UI_CLASS_PROPERTY_KEY(BackdropWindowMode,
kBackdropWindowMode,
BackdropWindowMode::kAuto);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kBlockedForAssistantSnapshotKey, false);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kCanAttachToAnotherWindowKey, true);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kCanConsumeSystemKeysKey, false);
DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::Rect, kCaptionButtonBoundsKey, nullptr);
DEFINE_UI_CLASS_PROPERTY_KEY(FrameBackButtonState,
kFrameBackButtonStateKey,
FrameBackButtonState::kNone);
DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(base::UnguessableToken,
kFrameImageActiveKey,
nullptr);
DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(base::UnguessableToken,
kFrameImageInactiveKey,
nullptr);
DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(base::UnguessableToken,
kFrameImageOverlayActiveKey,
nullptr);
DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(base::UnguessableToken,
kFrameImageOverlayInactiveKey,
nullptr);
DEFINE_UI_CLASS_PROPERTY_KEY(int, kFrameImageYInsetKey, 0);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kHideCaptionButtonsInTabletModeKey, false);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kHideInOverviewKey, false);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kHideShelfWhenFullscreenKey, true);
DEFINE_UI_CLASS_PROPERTY_KEY(bool,
kIsDeferredTabDraggingTargetWindowKey,
false);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kIsDraggingTabsKey, false);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kIsShowingInOverviewKey, false);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kPanelAttachedKey, true);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kRenderTitleAreaProperty, false);
DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::Rect,
kRestoreBoundsOverrideKey,
nullptr);
DEFINE_UI_CLASS_PROPERTY_KEY(mojom::WindowStateType,
kRestoreWindowStateTypeOverrideKey,
mojom::WindowStateType::DEFAULT);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kSearchKeyAcceleratorReservedKey, false);
DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(std::string, kShelfIDKey, nullptr);
DEFINE_UI_CLASS_PROPERTY_KEY(int32_t, kShelfItemTypeKey, TYPE_UNDEFINED);
DEFINE_UI_CLASS_PROPERTY_KEY(aura::Window*,
kTabDraggingSourceWindowKey,
nullptr);
DEFINE_UI_CLASS_PROPERTY_KEY(SkColor, kFrameActiveColorKey, kDefaultFrameColor);
DEFINE_UI_CLASS_PROPERTY_KEY(SkColor,
kFrameInactiveColorKey,
kDefaultFrameColor);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kFrameIsThemedByHostedAppKey, false);
DEFINE_UI_CLASS_PROPERTY_KEY(SkColor,
kFrameTextColorKey,
gfx::kPlaceholderColor);
DEFINE_UI_CLASS_PROPERTY_KEY(mojom::WindowPinType,
kWindowPinTypeKey,
mojom::WindowPinType::NONE);
DEFINE_UI_CLASS_PROPERTY_KEY(bool, kWindowPositionManagedTypeKey, false);
DEFINE_UI_CLASS_PROPERTY_KEY(mojom::WindowStateType,
kWindowStateTypeKey,
mojom::WindowStateType::DEFAULT);
} // namespace ash