diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-23 08:45:04 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-23 08:45:04 +0000 |
commit | b9329a6c9643cb4d4484d43e10664e418f79d721 (patch) | |
tree | 754f064d63e64c75204cc36925a9b8208500234a /ash/monitor/multi_monitor_manager.h | |
parent | 47092fc95c7980639f5ad5bab0e42f829ea97057 (diff) | |
download | chromium_src-b9329a6c9643cb4d4484d43e10664e418f79d721.zip chromium_src-b9329a6c9643cb4d4484d43e10664e418f79d721.tar.gz chromium_src-b9329a6c9643cb4d4484d43e10664e418f79d721.tar.bz2 |
relanding: disabled workspace_window_resizer test. fixed access-after-free.
* MonitorChangeObserverX11 that listen to Xrandr events and update monitor configurations.
* Message on secondary monitor view
* Accelerator to create/delete/cycle monitors to test multi monitor on linux desktop
* unittest for MultiMonitorManager/MonitorController
BUG=115510
TEST=multi_monitor_manager_unittests
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=128330
Review URL: https://chromiumcodereview.appspot.com/9754001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128436 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/monitor/multi_monitor_manager.h')
-rw-r--r-- | ash/monitor/multi_monitor_manager.h | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/ash/monitor/multi_monitor_manager.h b/ash/monitor/multi_monitor_manager.h index 609f931..b24c98e 100644 --- a/ash/monitor/multi_monitor_manager.h +++ b/ash/monitor/multi_monitor_manager.h @@ -6,23 +6,38 @@ #define ASH_MONITOR_MULTI_MONITOR_MANAGER_H_ #pragma once +#include "ash/ash_export.h" #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "ui/aura/monitor_manager.h" +#include "ui/aura/root_window_observer.h" #include "ui/aura/window.h" #include "ui/aura/window_observer.h" namespace ash { namespace internal { -class MultiMonitorManager : public aura::MonitorManager, - public aura::WindowObserver { +// MultiMonitorManager maintains the current monitor configurations, +// and notifies observers when configuration changes. +// This is exported for unittest. +// +// TODO(oshima): gfx::Screen needs to return translated coordinates +// if the root window is translated. crbug.com/119268. +class ASH_EXPORT MultiMonitorManager : public aura::MonitorManager, + public aura::RootWindowObserver, + public aura::WindowObserver { public: MultiMonitorManager(); virtual ~MultiMonitorManager(); + // Used to emulate monitor change when run in a desktop environment instead + // of on a device. + static void AddRemoveMonitor(); + static void CycleMonitor(); + // MonitorManager overrides: - virtual void OnNativeMonitorResized(const gfx::Size& size) OVERRIDE; + virtual void OnNativeMonitorsChanged( + const std::vector<const aura::Monitor*>& monitors) OVERRIDE; virtual aura::RootWindow* CreateRootWindowForMonitor( aura::Monitor* monitor) OVERRIDE; virtual const aura::Monitor* GetMonitorNearestWindow( @@ -34,15 +49,19 @@ class MultiMonitorManager : public aura::MonitorManager, virtual aura::Monitor* GetMonitorNearestWindow( const aura::Window* window) OVERRIDE; + // RootWindowObserver overrides: + virtual void OnRootWindowResized(const aura::RootWindow* root, + const gfx::Size& new_size) OVERRIDE; + // WindowObserver overrides: - virtual void OnWindowBoundsChanged(aura::Window* window, - const gfx::Rect& bounds) OVERRIDE; virtual void OnWindowDestroying(aura::Window* window) OVERRIDE; private: typedef std::vector<aura::Monitor*> Monitors; void Init(); + void AddRemoveMonitorImpl(); + void CycleMonitorImpl(); Monitors monitors_; |