// Copyright 2016 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 SERVICES_UI_DISPLAY_SCREEN_MANAGER_H_ #define SERVICES_UI_DISPLAY_SCREEN_MANAGER_H_ #include #include "base/macros.h" #include "services/ui/display/screen_manager_delegate.h" namespace service_manager { class BinderRegistry; } namespace display { class ScreenBase; // ScreenManager provides the necessary functionality to configure all // attached physical displays. class ScreenManager { public: ScreenManager(); virtual ~ScreenManager(); // Creates a singleton ScreenManager instance. static std::unique_ptr Create(); static ScreenManager* GetInstance(); // Registers Mojo interfaces provided. virtual void AddInterfaces(service_manager::BinderRegistry* registry) = 0; // Triggers initial display configuration to start. On device this will // configuration the connected displays. Off device this will create one or // more fake displays and pretend to configure them. A non-null |delegate| // must be provided that will receive notifications when displays are added, // removed or modified. virtual void Init(ScreenManagerDelegate* delegate) = 0; // Handle requests from the platform to close a display. virtual void RequestCloseDisplay(int64_t display_id) = 0; virtual display::ScreenBase* GetScreen() = 0; private: static ScreenManager* instance_; // Instance is not owned. DISALLOW_COPY_AND_ASSIGN(ScreenManager); }; } // namespace display #endif // SERVICES_UI_DISPLAY_SCREEN_MANAGER_H_