summaryrefslogtreecommitdiffstats
path: root/ash/monitor/multi_monitor_manager.h
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 08:45:04 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 08:45:04 +0000
commitb9329a6c9643cb4d4484d43e10664e418f79d721 (patch)
tree754f064d63e64c75204cc36925a9b8208500234a /ash/monitor/multi_monitor_manager.h
parent47092fc95c7980639f5ad5bab0e42f829ea97057 (diff)
downloadchromium_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.h29
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_;