Index: ash/display/display_manager.h |
diff --git a/ash/display/display_manager.h b/ash/display/display_manager.h |
index f865ba9f877dcb35770bfdbedc284881272c21bd..3db381c3bb7ebd6a458d5e398eb3b03238e1d837 100644 |
--- a/ash/display/display_manager.h |
+++ b/ash/display/display_manager.h |
@@ -18,7 +18,9 @@ |
#include "base/macros.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/weak_ptr.h" |
+#include "base/observer_list.h" |
#include "ui/display/display.h" |
+#include "ui/display/display_observer.h" |
#include "ui/display/manager/display_layout.h" |
#include "ui/display/manager/managed_display_info.h" |
@@ -36,6 +38,8 @@ class DisplayNotificationsTest; |
namespace display { |
class DisplayLayoutStore; |
+class DisplayObserver; |
+class Screen; |
} |
namespace gfx { |
@@ -45,7 +49,6 @@ class Rect; |
namespace ash { |
class AcceleratorControllerTest; |
-class ScreenAsh; |
using DisplayInfoList = std::vector<display::ManagedDisplayInfo>; |
@@ -97,7 +100,7 @@ class ASH_EXPORT DisplayManager |
// The display ID for a virtual display assigned to a unified desktop. |
static int64_t kUnifiedDisplayId; |
- DisplayManager(); |
+ explicit DisplayManager(std::unique_ptr<display::Screen> screen); |
#if defined(OS_CHROMEOS) |
~DisplayManager() override; |
#else |
@@ -327,9 +330,6 @@ class ASH_EXPORT DisplayManager |
// is enabled. |
void CreateMirrorWindowAsyncIfAny(); |
- // Create a screen instance to be used during shutdown. |
- void CreateScreenForShutdown() const; |
- |
// A unit test may change the internal display id (which never happens on |
// a real device). This will update the mode list for internal display |
// for this test scenario. |
@@ -341,6 +341,15 @@ class ASH_EXPORT DisplayManager |
// Reset the internal display zoom. |
void ResetInternalDisplayZoom(); |
+ // Notifies observers of display configuration changes. |
+ void NotifyMetricsChanged(const display::Display& display, uint32_t metrics); |
+ void NotifyDisplayAdded(const display::Display& display); |
+ void NotifyDisplayRemoved(const display::Display& display); |
+ |
+ // Delegated from the Screen implementation. |
+ void AddObserver(display::DisplayObserver* observer); |
+ void RemoveObserver(display::DisplayObserver* observer); |
+ |
private: |
FRIEND_TEST_ALL_PREFIXES(ExtendedDesktopTest, ConvertPoint); |
FRIEND_TEST_ALL_PREFIXES(DisplayManagerTest, TestNativeDisplaysChanged); |
@@ -421,7 +430,7 @@ class ASH_EXPORT DisplayManager |
Delegate* delegate_; // not owned. |
- std::unique_ptr<ScreenAsh> screen_; |
+ std::unique_ptr<display::Screen> screen_; |
std::unique_ptr<display::DisplayLayoutStore> layout_store_; |
@@ -470,6 +479,8 @@ class ASH_EXPORT DisplayManager |
bool unified_desktop_enabled_; |
+ base::ObserverList<display::DisplayObserver> observers_; |
+ |
base::WeakPtrFactory<DisplayManager> weak_ptr_factory_; |
DISALLOW_COPY_AND_ASSIGN(DisplayManager); |