Index: ui/gfx/screen_win.h |
diff --git a/ui/gfx/screen_win.h b/ui/gfx/screen_win.h |
index b1488ae05bb850b9cfc4cfa762219b56d47ff5d0..2849e6623de312f412e32cc5a544a69080a9717b 100644 |
--- a/ui/gfx/screen_win.h |
+++ b/ui/gfx/screen_win.h |
@@ -5,17 +5,30 @@ |
#ifndef UI_GFX_SCREEN_WIN_H_ |
#define UI_GFX_SCREEN_WIN_H_ |
-#include "base/compiler_specific.h" |
-#include "base/gtest_prod_util.h" |
+#include <windows.h> |
+ |
+#include <vector> |
+ |
#include "base/macros.h" |
-#include "base/memory/scoped_ptr.h" |
#include "ui/gfx/display_change_notifier.h" |
#include "ui/gfx/gfx_export.h" |
+#include "ui/gfx/native_widget_types.h" |
#include "ui/gfx/screen.h" |
#include "ui/gfx/win/singleton_hwnd_observer.h" |
namespace gfx { |
+class Display; |
+class Point; |
+class Rect; |
+ |
+namespace win { |
+ |
+class DisplayInfo; |
+class ScreenWinDisplay; |
+ |
+} // namespace win |
+ |
class GFX_EXPORT ScreenWin : public Screen { |
public: |
ScreenWin(); |
@@ -28,7 +41,7 @@ class GFX_EXPORT ScreenWin : public Screen { |
virtual NativeWindow GetNativeWindowFromHWND(HWND hwnd) const; |
protected: |
- // Overridden from gfx::Screen: |
+ // gfx::Screen: |
gfx::Point GetCursorScreenPoint() override; |
gfx::NativeWindow GetWindowUnderCursor() override; |
gfx::NativeWindow GetWindowAtScreenPoint(const gfx::Point& point) override; |
@@ -41,22 +54,46 @@ class GFX_EXPORT ScreenWin : public Screen { |
void AddObserver(DisplayObserver* observer) override; |
void RemoveObserver(DisplayObserver* observer) override; |
- private: |
- FRIEND_TEST_ALL_PREFIXES(ScreenWinTest, SingleDisplay1x); |
- FRIEND_TEST_ALL_PREFIXES(ScreenWinTest, SingleDisplay2x); |
+ void UpdateFromDisplayInfos( |
+ const std::vector<gfx::win::DisplayInfo>& display_infos); |
+ // Virtual to support mocking by unit tests. |
+ virtual void Initialize(); |
+ virtual MONITORINFOEX MonitorInfoFromScreenPoint( |
+ const gfx::Point& screen_point) const; |
+ virtual MONITORINFOEX MonitorInfoFromScreenRect(const gfx::Rect& screen_rect) |
+ const; |
+ virtual MONITORINFOEX MonitorInfoFromWindow(HWND hwnd, DWORD default_options) |
+ const; |
+ virtual HWND GetRootWindow(HWND hwnd) const; |
+ |
+ private: |
void OnWndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); |
- static std::vector<gfx::Display> GetDisplaysForMonitorInfos( |
- const std::vector<MONITORINFOEX>& monitor_infos); |
+ // Returns the ScreenWinDisplay closest to or enclosing |hwnd|. |
+ gfx::win::ScreenWinDisplay GetScreenWinDisplayNearestHWND(HWND hwnd) const; |
+ |
+ // Returns the ScreenWinDisplay closest to or enclosing |screen_rect|. |
+ gfx::win::ScreenWinDisplay GetScreenWinDisplayNearestScreenRect( |
+ const Rect& screen_rect) const; |
+ |
+ // Returns the ScreenWinDisplay closest to or enclosing |screen_point|. |
+ gfx::win::ScreenWinDisplay GetScreenWinDisplayNearestScreenPoint( |
+ const Point& screen_point) const; |
+ |
+ // Returns the ScreenWinDisplay corresponding to the primary monitor. |
+ gfx::win::ScreenWinDisplay GetPrimaryScreenWinDisplay() const; |
+ |
+ gfx::win::ScreenWinDisplay GetScreenWinDisplay( |
+ const MONITORINFOEX& monitor_info) const; |
// Helper implementing the DisplayObserver handling. |
gfx::DisplayChangeNotifier change_notifier_; |
scoped_ptr<SingletonHwndObserver> singleton_hwnd_observer_; |
- // Current list of displays. |
- std::vector<gfx::Display> displays_; |
+ // Current list of ScreenWinDisplays. |
+ std::vector<gfx::win::ScreenWinDisplay> screen_win_displays_; |
DISALLOW_COPY_AND_ASSIGN(ScreenWin); |
}; |