blob: bac8b25db44ebe0fb689b8293b76f4efb225e812 [file] [log] [blame]
// Copyright 2021 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 "chromeos/ui/wm/desks/desks_helper.h"
#include "base/check_op.h"
#include "ui/aura/window.h"
#include "ui/base/class_property.h"
#include "ui/platform_window/extensions/desk_extension.h"
#include "ui/platform_window/platform_window.h"
#include "ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h"
namespace {
ui::DeskExtension* GetDeskExtension(aura::Window* window) {
return views::DesktopWindowTreeHostLinux::From(window->GetHost())
->GetDeskExtension();
}
//////////////////////////////////////////////////////////////////////
// DesksHelperLacros implementation:
class DesksHelperLacros : public chromeos::DesksHelper {
public:
DesksHelperLacros(aura::Window* window) : window_(window) {}
DesksHelperLacros(const DesksHelperLacros&) = delete;
DesksHelperLacros& operator=(const DesksHelperLacros&) = delete;
~DesksHelperLacros() override = default;
// chromeos::DesksHelper:
bool BelongsToActiveDesk(aura::Window* window) override {
NOTIMPLEMENTED();
return false;
}
int GetActiveDeskIndex() const override {
return GetDeskExtension(window_)->GetActiveDeskIndex();
}
std::u16string GetDeskName(int index) const override {
return GetDeskExtension(window_)->GetDeskName(index);
}
int GetNumberOfDesks() const override {
return GetDeskExtension(window_)->GetNumberOfDesks();
}
void SendToDeskAtIndex(aura::Window* window, int desk_index) override {
GetDeskExtension(window)->SendToDeskAtIndex(desk_index);
}
private:
aura::Window* window_;
};
DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(DesksHelperLacros,
kDesksHelperLacrosKey,
nullptr)
} // namespace
DEFINE_UI_CLASS_PROPERTY_TYPE(DesksHelperLacros*)
//////////////////////////////////////////////////////////////////////
// DesksHelper implementation:
namespace chromeos {
// static
DesksHelper* DesksHelper::Get(aura::Window* window) {
DCHECK(window);
DesksHelperLacros* desks_helper = window->GetProperty(kDesksHelperLacrosKey);
if (!desks_helper) {
desks_helper = new DesksHelperLacros(window);
window->SetProperty(kDesksHelperLacrosKey, desks_helper);
}
return desks_helper;
}
DesksHelper::DesksHelper() = default;
DesksHelper::~DesksHelper() = default;
} // namespace chromeos