Index: ui/gfx/display.cc |
diff --git a/ui/gfx/display.cc b/ui/gfx/display.cc |
index 1777e87e5433822f6769e053a6459a0cd18499dd..d75ff3e6849bf8b37f63fd7d03137fbabc02a6b9 100644 |
--- a/ui/gfx/display.cc |
+++ b/ui/gfx/display.cc |
@@ -5,6 +5,7 @@ |
#include "ui/gfx/display.h" |
#include <algorithm> |
+#include <vector> |
#include "base/command_line.h" |
#include "base/logging.h" |
@@ -17,6 +18,11 @@ |
#include "ui/gfx/geometry/size_conversions.h" |
#include "ui/gfx/switches.h" |
+#if defined(OS_WIN) |
+#include "ui/gfx/screen_win.h" |
+#include "ui/gfx/win/physical_size.h" |
+#endif |
+ |
namespace gfx { |
namespace { |
@@ -195,6 +201,25 @@ bool Display::IsInternal() const { |
return is_valid() && (id_ == internal_display_id_); |
} |
+bool Display::GetPhysicalSize(int* width_mm, int* height_mm) const { |
+#if defined(OS_WIN) |
+ std::vector<gfx::PhysicalDisplaySize> display_sizes; |
+ gfx::GetPhysicalSizeForDisplays(&display_sizes); |
+ for (const auto& display_size : display_sizes) { |
+ int64_t interface_id = |
+ ScreenWin::GenerateDisplayId(display_size.display_name); |
+ if (interface_id == id_) { |
+ *width_mm = display_size.width_mm; |
+ *height_mm = display_size.height_mm; |
+ return true; |
+ } |
+ } |
+ return false; |
+#else |
+ NOTREACHED(); |
+#endif |
+} |
+ |
// static |
int64_t Display::InternalDisplayId() { |
DCHECK_NE(kInvalidDisplayID, internal_display_id_); |