diff options
author | aelias@chromium.org <aelias@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-26 05:18:10 +0000 |
---|---|---|
committer | aelias@chromium.org <aelias@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-26 05:18:10 +0000 |
commit | 19cb4a6c23ab253ca7e9fe3a2518955d1de4d760 (patch) | |
tree | 2afd7abf68d6b6ca51754d8b80b507614ea7e80a /webkit/glue | |
parent | 91cecb279762367dcbab46679afcad99fa5eac3b (diff) | |
download | chromium_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.cc | 17 | ||||
-rw-r--r-- | webkit/glue/glue_serialize_unittest.cc | 15 |
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) |