summaryrefslogtreecommitdiffstats
path: root/webkit/glue
diff options
context:
space:
mode:
authoraelias@chromium.org <aelias@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-26 05:18:10 +0000
committeraelias@chromium.org <aelias@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-26 05:18:10 +0000
commit19cb4a6c23ab253ca7e9fe3a2518955d1de4d760 (patch)
tree2afd7abf68d6b6ca51754d8b80b507614ea7e80a /webkit/glue
parent91cecb279762367dcbab46679afcad99fa5eac3b (diff)
downloadchromium_src-19cb4a6c23ab253ca7e9fe3a2518955d1de4d760.zip
chromium_src-19cb4a6c23ab253ca7e9fe3a2518955d1de4d760.tar.gz
chromium_src-19cb4a6c23ab253ca7e9fe3a2518955d1de4d760.tar.bz2
Backwards compatibility with HistoryItems with old page scale (attempt 2).
Given the semantic change in page scale, users upgrading from M18 would find their existing tabs all zoomed in at a weird scroll offset. Add some more backwards compatibility cruft to compensate. Fix GlueSerializeTest to expect the new semantics. BUG=175807 Review URL: https://chromiumcodereview.appspot.com/12313117 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184591 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r--webkit/glue/glue_serialize.cc17
-rw-r--r--webkit/glue/glue_serialize_unittest.cc15
2 files changed, 28 insertions, 4 deletions
diff --git a/webkit/glue/glue_serialize.cc b/webkit/glue/glue_serialize.cc
index e9d3ae4..cfe9330 100644
--- a/webkit/glue/glue_serialize.cc
+++ b/webkit/glue/glue_serialize.cc
@@ -17,6 +17,7 @@
#include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebHistoryItem.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebSerializedScriptValue.h"
+#include "ui/gfx/screen.h"
#include "webkit/base/file_path_string_conversions.h"
using WebKit::WebData;
@@ -456,11 +457,23 @@ WebHistoryItem ReadHistoryItem(
}
#if defined(OS_ANDROID)
- // Now-unused values that shipped in this version of Chrome for Android when
- // it was on a private branch.
if (obj->version == 11) {
+ // Now-unused values that shipped in this version of Chrome for Android when
+ // it was on a private branch.
ReadReal(obj);
ReadBoolean(obj);
+
+ // In this version, pageScaleFactor included deviceScaleFactor and scroll
+ // offsets were premultiplied by pageScaleFactor.
+ if (item.pageScaleFactor()) {
+ if (include_scroll_offset)
+ item.setScrollOffset(
+ WebPoint(item.scrollOffset().x / item.pageScaleFactor(),
+ item.scrollOffset().y / item.pageScaleFactor()));
+ item.setPageScaleFactor(item.pageScaleFactor() /
+ gfx::Screen::GetNativeScreen()->GetPrimaryDisplay()
+ .device_scale_factor());
+ }
}
#endif
diff --git a/webkit/glue/glue_serialize_unittest.cc b/webkit/glue/glue_serialize_unittest.cc
index 250dceac..b03fc53 100644
--- a/webkit/glue/glue_serialize_unittest.cc
+++ b/webkit/glue/glue_serialize_unittest.cc
@@ -10,6 +10,7 @@
#include "third_party/WebKit/Source/Platform/chromium/public/WebHTTPBody.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebPoint.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h"
+#include "ui/gfx/screen.h"
#include "webkit/base/file_path_string_conversions.h"
#include "webkit/glue/glue_serialize.h"
#include "webkit/glue/web_io_operators.h"
@@ -108,6 +109,16 @@ class GlueSerializeTest : public testing::Test {
void HistoryItemExpectBaseDataEqual(const WebHistoryItem& a,
const WebHistoryItem& b,
int version) {
+ float expectedPageScaleFactor = a.pageScaleFactor();
+ WebPoint expectedScrollOffset = a.scrollOffset();
+#if defined(OS_ANDROID)
+ if (version == 11) {
+ expectedScrollOffset.x /= a.pageScaleFactor();
+ expectedScrollOffset.y /= a.pageScaleFactor();
+ expectedPageScaleFactor /= gfx::Screen::GetNativeScreen()
+ ->GetPrimaryDisplay().device_scale_factor();
+ }
+#endif
EXPECT_EQ(string16(a.urlString()), string16(b.urlString()));
EXPECT_EQ(string16(a.originalURLString()), string16(b.originalURLString()));
EXPECT_EQ(string16(a.target()), string16(b.target()));
@@ -115,12 +126,12 @@ class GlueSerializeTest : public testing::Test {
EXPECT_EQ(string16(a.title()), string16(b.title()));
EXPECT_EQ(string16(a.alternateTitle()), string16(b.alternateTitle()));
EXPECT_EQ(a.lastVisitedTime(), b.lastVisitedTime());
- EXPECT_EQ(a.scrollOffset(), b.scrollOffset());
+ EXPECT_EQ(expectedScrollOffset, b.scrollOffset());
EXPECT_EQ(a.isTargetItem(), b.isTargetItem());
EXPECT_EQ(a.visitCount(), b.visitCount());
EXPECT_EQ(string16(a.referrer()), string16(b.referrer()));
if (version >= 11)
- EXPECT_EQ(a.pageScaleFactor(), b.pageScaleFactor());
+ EXPECT_EQ(expectedPageScaleFactor, b.pageScaleFactor());
if (version >= 9)
EXPECT_EQ(a.itemSequenceNumber(), b.itemSequenceNumber());
if (version >= 6)