| Index: Source/WebCore/platform/chromium/PlatformScreenChromium.cpp
|
| ===================================================================
|
| --- Source/WebCore/platform/chromium/PlatformScreenChromium.cpp (revision 139470)
|
| +++ Source/WebCore/platform/chromium/PlatformScreenChromium.cpp (working copy)
|
| @@ -32,8 +32,12 @@
|
| #include "PlatformScreen.h"
|
|
|
| #include "FloatRect.h"
|
| +#include "Frame.h"
|
| +#include "FrameView.h"
|
| #include "HostWindow.h"
|
| +#include "Page.h"
|
| #include "ScrollView.h"
|
| +#include "Settings.h"
|
| #include "Widget.h"
|
| #include <public/Platform.h>
|
| #include <public/WebScreenInfo.h>
|
| @@ -77,12 +81,24 @@
|
| return client->screenInfo().isMonochrome;
|
| }
|
|
|
| +// On Chrome for Android, the screenInfo rects are in physical screen pixels
|
| +// instead of density independent (UI) pixels, and must be scaled down.
|
| +static FloatRect toUserSpace(FloatRect rect, Widget* widget)
|
| +{
|
| + if (widget->isFrameView()) {
|
| + Page* page = static_cast<FrameView*>(widget)->frame()->page();
|
| + if (page && !page->settings()->applyDeviceScaleFactorInCompositor())
|
| + rect.scale(1 / page->deviceScaleFactor());
|
| + }
|
| + return rect;
|
| +}
|
| +
|
| FloatRect screenRect(Widget* widget)
|
| {
|
| PlatformPageClient client = toPlatformPageClient(widget);
|
| if (!client)
|
| return FloatRect();
|
| - return IntRect(client->screenInfo().rect);
|
| + return toUserSpace(IntRect(client->screenInfo().rect), widget);
|
| }
|
|
|
| FloatRect screenAvailableRect(Widget* widget)
|
| @@ -90,7 +106,7 @@
|
| PlatformPageClient client = toPlatformPageClient(widget);
|
| if (!client)
|
| return FloatRect();
|
| - return IntRect(client->screenInfo().availableRect);
|
| + return toUserSpace(IntRect(client->screenInfo().availableRect), widget);
|
| }
|
|
|
| void screenColorProfile(ColorProfile& toProfile)
|
|
|