1 // Copyright 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_OZONE_PLATFORM_SCENIC_SCENIC_SCREEN_H_ 6 #define UI_OZONE_PLATFORM_SCENIC_SCENIC_SCREEN_H_ 7 8 #include <vector> 9 10 #include "base/macros.h" 11 #include "base/memory/weak_ptr.h" 12 #include "base/observer_list.h" 13 #include "ui/ozone/public/ozone_platform.h" 14 #include "ui/ozone/public/platform_screen.h" 15 16 namespace ui { 17 18 // A PlatformScreen implementation for Scenic. 19 class ScenicScreen : public PlatformScreen { 20 public: 21 ScenicScreen(); 22 ~ScenicScreen() override; 23 24 // Processes window state change events for the ScenicWindow |window_id_|. 25 void OnWindowAdded(int32_t window_id); 26 void OnWindowRemoved(int32_t window_id); 27 void OnWindowMetrics(int32_t window_id, float device_pixel_ratio); 28 void OnWindowBoundsChanged(int32_t window_id, gfx::Rect bounds); 29 30 base::WeakPtr<ScenicScreen> GetWeakPtr(); 31 32 // display::Screen implementation. 33 const std::vector<display::Display>& GetAllDisplays() const override; 34 display::Display GetPrimaryDisplay() const override; 35 display::Display GetDisplayForAcceleratedWidget( 36 gfx::AcceleratedWidget widget) const override; 37 gfx::Point GetCursorScreenPoint() const override; 38 gfx::AcceleratedWidget GetAcceleratedWidgetAtScreenPoint( 39 const gfx::Point& point) const override; 40 display::Display GetDisplayNearestPoint( 41 const gfx::Point& point) const override; 42 display::Display GetDisplayMatching( 43 const gfx::Rect& match_rect) const override; 44 void AddObserver(display::DisplayObserver* observer) override; 45 void RemoveObserver(display::DisplayObserver* observer) override; 46 47 private: 48 using DisplayVector = std::vector<display::Display>; 49 50 DisplayVector displays_; 51 52 base::ObserverList<display::DisplayObserver> observers_; 53 54 base::WeakPtrFactory<ScenicScreen> weak_factory_; 55 56 DISALLOW_COPY_AND_ASSIGN(ScenicScreen); 57 }; 58 59 } // namespace ui 60 61 #endif // UI_OZONE_PLATFORM_SCENIC_SCENIC_SCREEN_H_ 62