// Copyright 2014 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. #ifndef ATHENA_SCREEN_SCREEN_MANAGER_IMPL_H_ #define ATHENA_SCREEN_SCREEN_MANAGER_IMPL_H_ #include "athena/athena_export.h" #include "athena/screen/public/screen_manager.h" #include "base/memory/scoped_ptr.h" #include "ui/aura/client/window_tree_client.h" namespace aura { namespace client { class FocusClient; class ScreenPositionClient; } } namespace wm { class ScopedCaptureClient; } namespace athena { class AcceleratorHandler; class ATHENA_EXPORT ScreenManagerImpl : public ScreenManager, public aura::client::WindowTreeClient { public: explicit ScreenManagerImpl(aura::Window* root_window); ~ScreenManagerImpl() override; void Init(); // Returns a container which has |priority|. Null if such container // doesn't exist. aura::Window* FindContainerByPriority(int priority); private: // ScreenManager: virtual aura::Window* CreateContainer(const ContainerParams& params) override; virtual aura::Window* GetContext() override; virtual void SetRotation(gfx::Display::Rotation rotation) override; virtual void SetRotationLocked(bool rotation_locked) override; // aura::client::WindowTreeClient: virtual aura::Window* GetDefaultParent(aura::Window* context, aura::Window* window, const gfx::Rect& bounds) override; int GetModalContainerPriority(aura::Window* window, aura::Window* parent); // Returns a container with |params.default_parent| == true. aura::Window* GetDefaultContainer(); // Not owned. aura::Window* root_window_; scoped_ptr focus_client_; scoped_ptr accelerator_handler_; scoped_ptr<::wm::ScopedCaptureClient> capture_client_; scoped_ptr screen_position_client_; gfx::Display::Rotation last_requested_rotation_; bool rotation_locked_; DISALLOW_COPY_AND_ASSIGN(ScreenManagerImpl); }; } // namespace athena #endif // ATHENA_SCREEN_SCREEN_MANAGER_IMPL_H_