blob: b37cff70223f7c53452f0b731f89aae29fc303fe [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/mus_property_mirror_ash.h"
#include "ash/public/cpp/window_properties.h"
#include "ui/aura/client/aura_constants.h"
namespace {
template <typename T>
void MirrorOwnedProperty(aura::Window* window,
aura::Window* root_window,
const aura::WindowProperty<T*>* key) {
T* value = window->GetProperty(key);
if (!value)
root_window->ClearProperty(key);
else
root_window->SetProperty(key, new T(*value));
}
} // namespace
namespace ash {
MusPropertyMirrorAsh::MusPropertyMirrorAsh() = default;
MusPropertyMirrorAsh::~MusPropertyMirrorAsh() = default;
void MusPropertyMirrorAsh::MirrorPropertyFromWidgetWindowToRootWindow(
aura::Window* window,
aura::Window* root_window,
const void* key) {
if (key == kBlockedForAssistantSnapshotKey) {
root_window->SetProperty(
kBlockedForAssistantSnapshotKey,
window->GetProperty(kBlockedForAssistantSnapshotKey));
} else if (key == kPanelAttachedKey) {
bool value = window->GetProperty(kPanelAttachedKey);
root_window->SetProperty(kPanelAttachedKey, value);
} else if (key == kShelfItemTypeKey) {
int32_t value = window->GetProperty(kShelfItemTypeKey);
root_window->SetProperty(kShelfItemTypeKey, value);
} else if (key == kWindowStateTypeKey) {
ash::mojom::WindowStateType value =
window->GetProperty(kWindowStateTypeKey);
root_window->SetProperty(kWindowStateTypeKey, value);
} else if (key == kWindowPinTypeKey) {
ash::mojom::WindowPinType value = window->GetProperty(kWindowPinTypeKey);
root_window->SetProperty(kWindowPinTypeKey, value);
} else if (key == aura::client::kAppIconKey) {
MirrorOwnedProperty(window, root_window, aura::client::kAppIconKey);
} else if (key == kRestoreBoundsOverrideKey) {
MirrorOwnedProperty(window, root_window, kRestoreBoundsOverrideKey);
} else if (key == kRestoreWindowStateTypeOverrideKey) {
ash::mojom::WindowStateType value =
window->GetProperty(kRestoreWindowStateTypeOverrideKey);
root_window->SetProperty(kRestoreWindowStateTypeOverrideKey, value);
} else if (key == kShelfIDKey) {
MirrorOwnedProperty(window, root_window, kShelfIDKey);
} else if (key == aura::client::kDrawAttentionKey) {
bool value = window->GetProperty(aura::client::kDrawAttentionKey);
root_window->SetProperty(aura::client::kDrawAttentionKey, value);
} else if (key == aura::client::kMinimumSize) {
MirrorOwnedProperty(window, root_window, aura::client::kMinimumSize);
} else if (key == aura::client::kTitleKey) {
MirrorOwnedProperty(window, root_window, aura::client::kTitleKey);
} else if (key == aura::client::kTitleShownKey) {
root_window->SetProperty(aura::client::kTitleShownKey,
window->GetProperty(aura::client::kTitleShownKey));
} else if (key == aura::client::kWindowIconKey) {
MirrorOwnedProperty(window, root_window, aura::client::kWindowIconKey);
} else if (key == kFrameBackButtonStateKey) {
root_window->SetProperty(kFrameBackButtonStateKey,
window->GetProperty(kFrameBackButtonStateKey));
} else if (key == kFrameActiveColorKey) {
root_window->SetProperty(kFrameActiveColorKey,
window->GetProperty(kFrameActiveColorKey));
} else if (key == kFrameInactiveColorKey) {
root_window->SetProperty(kFrameInactiveColorKey,
window->GetProperty(kFrameInactiveColorKey));
} else if (key == kFrameImageActiveKey) {
MirrorOwnedProperty(window, root_window, kFrameImageActiveKey);
} else if (key == kFrameImageInactiveKey) {
MirrorOwnedProperty(window, root_window, kFrameImageInactiveKey);
} else if (key == kFrameImageOverlayActiveKey) {
MirrorOwnedProperty(window, root_window, kFrameImageOverlayActiveKey);
} else if (key == kFrameImageOverlayInactiveKey) {
MirrorOwnedProperty(window, root_window, kFrameImageOverlayInactiveKey);
} else if (key == kFrameIsThemedByHostedAppKey) {
root_window->SetProperty(kFrameIsThemedByHostedAppKey,
window->GetProperty(kFrameIsThemedByHostedAppKey));
} else if (key == kFrameTextColorKey) {
root_window->SetProperty(kFrameTextColorKey,
window->GetProperty(kFrameTextColorKey));
}
}
} // namespace ash