diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-19 03:21:59 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-19 03:21:59 +0000 |
commit | 38e61983f2dcee2a0a8b24aaf7540188836af24f (patch) | |
tree | 2fff02ac8a23b5edb17fb3175b18d5253f0dc9e7 | |
parent | aca749f0a6613e4bc0ede8d61f309b558fbf7546 (diff) | |
download | chromium_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.cc | 35 |
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 |