| // 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 |