summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-19 03:21:59 +0000
committerjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-19 03:21:59 +0000
commit38e61983f2dcee2a0a8b24aaf7540188836af24f (patch)
tree2fff02ac8a23b5edb17fb3175b18d5253f0dc9e7
parentaca749f0a6613e4bc0ede8d61f309b558fbf7546 (diff)
downloadchromium_src-38e61983f2dcee2a0a8b24aaf7540188836af24f.zip
chromium_src-38e61983f2dcee2a0a8b24aaf7540188836af24f.tar.gz
chromium_src-38e61983f2dcee2a0a8b24aaf7540188836af24f.tar.bz2
Inline win\WebScreenFactoryInfo into RenderWidgetHostViewWin
This initializes the WebKit::WebScreenInfo directly in content. We could use some of the ui/gfx helpers instead of raw win32 APIs for some of this, but it doesn't appear we have any code for gathering the display depth or per-component information or any other consumers of this information. BUG=237267 Review URL: https://chromiumcodereview.appspot.com/17108014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@207153 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/renderer_host/render_widget_host_view_win.cc35
1 files changed, 27 insertions, 8 deletions
diff --git a/content/browser/renderer_host/render_widget_host_view_win.cc b/content/browser/renderer_host/render_widget_host_view_win.cc
index 9d84937..070bb69 100644
--- a/content/browser/renderer_host/render_widget_host_view_win.cc
+++ b/content/browser/renderer_host/render_widget_host_view_win.cc
@@ -54,7 +54,6 @@
#include "third_party/WebKit/public/web/WebCompositionUnderline.h"
#include "third_party/WebKit/public/web/WebInputEvent.h"
#include "third_party/WebKit/public/web/win/WebInputEventFactory.h"
-#include "third_party/WebKit/public/web/win/WebScreenInfoFactory.h"
#include "third_party/skia/include/core/SkRegion.h"
#include "ui/base/events/event.h"
#include "ui/base/events/event_utils.h"
@@ -306,11 +305,31 @@ bool ShouldSendPinchGesture() {
return pinch_allowed;
}
-void GetScreenInfoForWindow(WebKit::WebScreenInfo* results,
- gfx::NativeViewId id) {
- *results = WebKit::WebScreenInfoFactory::screenInfo(
- gfx::NativeViewFromId(id));
- results->deviceScaleFactor = ui::win::GetDeviceScaleFactor();
+void GetScreenInfoForWindow(gfx::NativeViewId id,
+ WebKit::WebScreenInfo* results) {
+ HWND window = gfx::NativeViewFromId(id);
+
+ HMONITOR monitor = MonitorFromWindow(window, MONITOR_DEFAULTTOPRIMARY);
+
+ MONITORINFOEX monitor_info;
+ monitor_info.cbSize = sizeof(MONITORINFOEX);
+ if (!GetMonitorInfo(monitor, &monitor_info))
+ return;
+
+ DEVMODE dev_mode;
+ dev_mode.dmSize = sizeof(dev_mode);
+ dev_mode.dmDriverExtra = 0;
+ EnumDisplaySettings(monitor_info.szDevice, ENUM_CURRENT_SETTINGS, &dev_mode);
+
+ WebKit::WebScreenInfo screen_info;
+ screen_info.depth = dev_mode.dmBitsPerPel;
+ screen_info.depthPerComponent = dev_mode.dmBitsPerPel / 3; // Assumes RGB
+ screen_info.deviceScaleFactor = ui::win::GetDeviceScaleFactor();
+ screen_info.isMonochrome = dev_mode.dmColor == DMCOLOR_MONOCHROME;
+ screen_info.rect = gfx::Rect(monitor_info.rcMonitor);
+ screen_info.availableRect = gfx::Rect(monitor_info.rcWork);
+
+ *results = screen_info;
}
void SetDwmPresentParameters(HWND window) {
@@ -2460,7 +2479,7 @@ void RenderWidgetHostViewWin::AcceleratedPaint(HDC dc) {
}
void RenderWidgetHostViewWin::GetScreenInfo(WebKit::WebScreenInfo* results) {
- GetScreenInfoForWindow(results, GetNativeViewId());
+ GetScreenInfoForWindow(GetNativeViewId(), results);
}
gfx::Rect RenderWidgetHostViewWin::GetBoundsInRootWindow() {
@@ -3167,7 +3186,7 @@ RenderWidgetHostView* RenderWidgetHostView::CreateViewForWidget(
// static
void RenderWidgetHostViewPort::GetDefaultScreenInfo(
WebKit::WebScreenInfo* results) {
- GetScreenInfoForWindow(results, 0);
+ GetScreenInfoForWindow(0, results);
}
} // namespace content