summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjaphet@chromium.org <japhet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-02 22:20:51 +0000
committerjaphet@chromium.org <japhet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-02 22:20:51 +0000
commite9043a13c5506a68e44f15129d45245c4e38e5c9 (patch)
tree742e62293bf695b8a07ba717f3d24521260f4593
parent56503b3d241d7347a6dd4a3833d1936c43da8a0a (diff)
downloadchromium_src-e9043a13c5506a68e44f15129d45245c4e38e5c9.zip
chromium_src-e9043a13c5506a68e44f15129d45245c4e38e5c9.tar.gz
chromium_src-e9043a13c5506a68e44f15129d45245c4e38e5c9.tar.bz2
Don't serialize unused WebHistoryItem parameters.
These parameters will be deleted on the blink side in a later patch. BUG=none Review URL: https://codereview.chromium.org/24335003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@226583 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/common/page_state_serialization.cc46
-rw-r--r--content/common/page_state_serialization.h6
-rw-r--r--content/common/page_state_serialization_unittest.cc22
-rw-r--r--content/public/renderer/history_item_serialization.cc12
-rw-r--r--content/test/data/page_state/serialized_v15.dat17
5 files changed, 46 insertions, 57 deletions
diff --git a/content/common/page_state_serialization.cc b/content/common/page_state_serialization.cc
index f0add0b..0184677 100644
--- a/content/common/page_state_serialization.cc
+++ b/content/common/page_state_serialization.cc
@@ -195,7 +195,8 @@ struct SerializeObject {
// 12: Adds support for contains_passwords in HTTP body
// 13: Adds support for URL (FileSystem URL)
// 14: Adds list of referenced files, version written only for first item.
-// 15: Switched from blob urls to blob uuids.
+// 15: Removes a bunch of values we defined but never used.
+// 16: Switched from blob urls to blob uuids.
//
// NOTE: If the version is -1, then the pickle contains only a URL string.
// See ReadPageState.
@@ -204,11 +205,11 @@ const int kMinVersion = 11;
#ifdef USE_BLOB_UUIDS
// This is not used yet, if a version bump is needed in advance of
// this becoming used, bump both values by one and fixup the comment
-// and change the test for '15' in ReadHttpBody().
+// and change the test for '16' in ReadHttpBody().
// -- michaeln
-const int kCurrentVersion = 15;
+const int kCurrentVersion = 16;
#else
-const int kCurrentVersion = 14;
+const int kCurrentVersion = 15;
#endif
// A bunch of convenience functions to read/write to SerializeObjects. The
@@ -276,6 +277,10 @@ double ReadReal(SerializeObject* obj) {
return value;
}
+void ConsumeReal(SerializeObject* obj) {
+ double unused ALLOW_UNUSED = ReadReal(obj);
+}
+
void WriteBoolean(bool data, SerializeObject* obj) {
obj->pickle.WriteInt(data ? 1 : 0);
}
@@ -288,6 +293,10 @@ bool ReadBoolean(SerializeObject* obj) {
return false;
}
+void ConsumeBoolean(SerializeObject* obj) {
+ bool unused ALLOW_UNUSED = ReadBoolean(obj);
+}
+
void WriteGURL(const GURL& url, SerializeObject* obj) {
obj->pickle.WriteString(url.possibly_invalid_spec());
}
@@ -480,7 +489,7 @@ void ReadHttpBody(SerializeObject* obj, ExplodedHttpBody* http_body) {
file_modification_time);
} else if (type == WebKit::WebHTTPBody::Element::TypeBlob) {
#ifdef USE_BLOB_UUIDS
- if (obj->version >= 15) {
+ if (obj->version >= 16) {
std::string blob_uuid = ReadStdString(obj);
AppendBlobToHttpBody(http_body, blob_uuid);
} else {
@@ -511,14 +520,8 @@ void WriteFrameState(
WriteString(state.url_string, obj);
WriteString(state.original_url_string, obj);
WriteString(state.target, obj);
- WriteString(state.parent, obj);
- WriteString(state.title, obj);
- WriteString(state.alternate_title, obj);
- WriteReal(state.visited_time, obj);
WriteInteger(state.scroll_offset.x(), obj);
WriteInteger(state.scroll_offset.y(), obj);
- WriteBoolean(state.is_target_item, obj);
- WriteInteger(state.visit_count, obj);
WriteString(state.referrer, obj);
WriteStringVector(state.document_state, obj);
@@ -554,17 +557,21 @@ void ReadFrameState(SerializeObject* obj, bool is_top,
state->url_string = ReadString(obj);
state->original_url_string = ReadString(obj);
state->target = ReadString(obj);
- state->parent = ReadString(obj);
- state->title = ReadString(obj);
- state->alternate_title = ReadString(obj);
- state->visited_time = ReadReal(obj);
+ if (obj->version < 15) {
+ ConsumeString(obj); // Skip obsolete parent field.
+ ConsumeString(obj); // Skip obsolete title field.
+ ConsumeString(obj); // Skip obsolete alternate title field.
+ ConsumeReal(obj); // Skip obsolete visited time field.
+ }
int x = ReadInteger(obj);
int y = ReadInteger(obj);
state->scroll_offset = gfx::Point(x, y);
- state->is_target_item = ReadBoolean(obj);
- state->visit_count = ReadInteger(obj);
+ if (obj->version < 15) {
+ ConsumeBoolean(obj); // Skip obsolete target item flag.
+ ConsumeInteger(obj); // Skip obsolete visit count field.
+ }
state->referrer = ReadString(obj);
ReadStringVector(obj, &state->document_state);
@@ -680,10 +687,7 @@ ExplodedHttpBody::~ExplodedHttpBody() {
ExplodedFrameState::ExplodedFrameState()
: item_sequence_number(0),
document_sequence_number(0),
- visit_count(0),
- visited_time(0.0),
- page_scale_factor(0.0),
- is_target_item(false) {
+ page_scale_factor(0.0) {
}
ExplodedFrameState::~ExplodedFrameState() {
diff --git a/content/common/page_state_serialization.h b/content/common/page_state_serialization.h
index ef617a6..7a3cb27 100644
--- a/content/common/page_state_serialization.h
+++ b/content/common/page_state_serialization.h
@@ -49,18 +49,12 @@ struct CONTENT_EXPORT ExplodedFrameState {
base::NullableString16 original_url_string;
base::NullableString16 referrer;
base::NullableString16 target;
- base::NullableString16 parent;
- base::NullableString16 title;
- base::NullableString16 alternate_title;
base::NullableString16 state_object;
std::vector<base::NullableString16> document_state;
gfx::Point scroll_offset;
int64 item_sequence_number;
int64 document_sequence_number;
- int visit_count;
- double visited_time;
double page_scale_factor;
- bool is_target_item;
ExplodedHttpBody http_body;
std::vector<ExplodedFrameState> children;
diff --git a/content/common/page_state_serialization_unittest.cc b/content/common/page_state_serialization_unittest.cc
index 07b9cf8..a514b33 100644
--- a/content/common/page_state_serialization_unittest.cc
+++ b/content/common/page_state_serialization_unittest.cc
@@ -70,18 +70,12 @@ void ExpectEquality(const ExplodedFrameState& a, const ExplodedFrameState& b) {
EXPECT_EQ(a.original_url_string, b.original_url_string);
EXPECT_EQ(a.referrer, b.referrer);
EXPECT_EQ(a.target, b.target);
- EXPECT_EQ(a.parent, b.parent);
- EXPECT_EQ(a.title, b.title);
- EXPECT_EQ(a.alternate_title, b.alternate_title);
EXPECT_EQ(a.state_object, b.state_object);
ExpectEquality(a.document_state, b.document_state);
EXPECT_EQ(a.scroll_offset, b.scroll_offset);
EXPECT_EQ(a.item_sequence_number, b.item_sequence_number);
EXPECT_EQ(a.document_sequence_number, b.document_sequence_number);
- EXPECT_EQ(a.visit_count, b.visit_count);
- EXPECT_EQ(a.visited_time, b.visited_time);
EXPECT_EQ(a.page_scale_factor, b.page_scale_factor);
- EXPECT_EQ(a.is_target_item, b.is_target_item);
ExpectEquality(a.http_body, b.http_body);
ExpectEquality(a.children, b.children);
}
@@ -101,9 +95,6 @@ class PageStateSerializationTest : public testing::Test {
frame_state->original_url_string = frame_state->url_string;
frame_state->referrer = NS16("https://www.google.com/search?q=dev.chromium.org");
frame_state->target = NS16("foo");
- frame_state->parent = NS16("bar");
- frame_state->title = NS16("The Chromium Projects");
- frame_state->alternate_title = NS16(NULL);
frame_state->state_object = NS16(NULL);
frame_state->document_state.push_back(NS16("1"));
frame_state->document_state.push_back(NS16("q"));
@@ -112,10 +103,7 @@ class PageStateSerializationTest : public testing::Test {
frame_state->scroll_offset = gfx::Point(0, 100);
frame_state->item_sequence_number = 1;
frame_state->document_sequence_number = 2;
- frame_state->visit_count = 10;
- frame_state->visited_time = 12345.0;
frame_state->page_scale_factor = 2.0;
- frame_state->is_target_item = true;
}
void PopulateHttpBody(ExplodedHttpBody* http_body,
@@ -149,16 +137,10 @@ class PageStateSerializationTest : public testing::Test {
frame_state->referrer = NS16("http://google.com/");
if (!is_child)
frame_state->target = NS16("target");
- frame_state->parent = NS16("parent");
- frame_state->title = NS16("title");
- frame_state->alternate_title = NS16("alternateTitle");
frame_state->scroll_offset = gfx::Point(42, -42);
frame_state->item_sequence_number = 123;
frame_state->document_sequence_number = 456;
- frame_state->visit_count = 42*42;
- frame_state->visited_time = 13.37;
frame_state->page_scale_factor = 2.0f;
- frame_state->is_target_item = true;
frame_state->document_state.push_back(
NS16("\n\r?% WebKit serialized form state version 8 \n\r=&"));
@@ -428,5 +410,9 @@ TEST_F(PageStateSerializationTest, BackwardsCompat_v14) {
TestBackwardsCompat(14);
}
+TEST_F(PageStateSerializationTest, BackwardsCompat_v15) {
+ TestBackwardsCompat(15);
+}
+
} // namespace
} // namespace content
diff --git a/content/public/renderer/history_item_serialization.cc b/content/public/renderer/history_item_serialization.cc
index e7ff8f8..d011fd2 100644
--- a/content/public/renderer/history_item_serialization.cc
+++ b/content/public/renderer/history_item_serialization.cc
@@ -93,19 +93,13 @@ bool RecursivelyGenerateFrameState(const WebHistoryItem& item,
state->original_url_string = item.originalURLString();
state->referrer = item.referrer();
state->target = item.target();
- state->parent = item.parent();
- state->title = item.title();
- state->alternate_title = item.alternateTitle();
if (!item.stateObject().isNull())
state->state_object = item.stateObject().toString();
state->scroll_offset = item.scrollOffset();
state->item_sequence_number = item.itemSequenceNumber();
state->document_sequence_number =
item.documentSequenceNumber();
- state->visit_count = item.visitCount();
- state->visited_time = item.lastVisitedTime();
state->page_scale_factor = item.pageScaleFactor();
- state->is_target_item = item.isTargetItem();
ToNullableString16Vector(item.documentState(), &state->document_state);
state->http_body.http_content_type = item.httpContentType();
@@ -137,19 +131,13 @@ bool RecursivelyGenerateHistoryItem(const ExplodedFrameState& state,
item->setOriginalURLString(state.original_url_string);
item->setReferrer(state.referrer);
item->setTarget(state.target);
- item->setParent(state.parent);
- item->setTitle(state.title);
- item->setAlternateTitle(state.alternate_title);
if (!state.state_object.is_null()) {
item->setStateObject(
WebSerializedScriptValue::fromString(state.state_object));
}
item->setDocumentState(state.document_state);
item->setScrollOffset(state.scroll_offset);
- item->setVisitCount(state.visit_count);
- item->setLastVisitedTime(state.visited_time);
item->setPageScaleFactor(state.page_scale_factor);
- item->setIsTargetItem(state.is_target_item);
// These values are generated at WebHistoryItem construction time, and we
// only want to override those new values with old values if the old values
diff --git a/content/test/data/page_state/serialized_v15.dat b/content/test/data/page_state/serialized_v15.dat
new file mode 100644
index 0000000..43311d4
--- /dev/null
+++ b/content/test/data/page_state/serialized_v15.dat
@@ -0,0 +1,17 @@
+xAMAAA8AAAABAAAAEAAAAGYAaQBsAGUALgB0AHgAdAAoAAAAaAB0AHQAcAA6AC8ALwBjAGgAcgBv
+AG0AaQB1AG0ALgBvAHIAZwAvACgAAABoAHQAdABwADoALwAvAGMAaAByAG8AbQBpAHUAbQAuAG8A
+cgBnAC8ADAAAAHQAYQByAGcAZQB0ACoAAADW////JAAAAGgAdAB0AHAAOgAvAC8AZwBvAG8AZwBs
+AGUALgBjAG8AbQAvAAgAAABgAAAACgANAD8AJQAgAFcAZQBiAEsAaQB0ACAAcwBlAHIAaQBhAGwA
+aQB6AGUAZAAgAGYAbwByAG0AIABzAHQAYQB0AGUAIAB2AGUAcgBzAGkAbwBuACAAOAAgAAoADQA9
+ACYAEAAAAGYAbwByAG0AIABrAGUAeQACAAAAMQAAAAYAAABmAG8AbwAAAAgAAABmAGkAbABlAAIA
+AAAyAAAAEAAAAGYAaQBsAGUALgB0AHgAdAAWAAAAZABpAHMAcABsAGEAeQBOAGEAbQBlAAAACAAA
+AAAAAAAAAABAewAAAAAAAADIAQAAAAAAAAAAAAABAAAAAwAAAAAAAAAQAAAAZmlyc3QgZGF0YSBi
+bG9jawEAAAAQAAAAZgBpAGwAZQAuAHQAeAB0AAAAAAAAAAAA//////////8IAAAAAAAAAAAA+H8A
+AAAADwAAAGRhdGEgdGhlIHNlY29uZAAVAwAAAAAAAAAAAAAOAAAAZgBvAG8ALwBiAGEAcgAAAAEA
+AAAoAAAAaAB0AHQAcAA6AC8ALwBjAGgAcgBvAG0AaQB1AG0ALgBvAHIAZwAvACgAAABoAHQAdABw
+ADoALwAvAGMAaAByAG8AbQBpAHUAbQAuAG8AcgBnAC8A/////yoAAADW////JAAAAGgAdAB0AHAA
+OgAvAC8AZwBvAG8AZwBsAGUALgBjAG8AbQAvAAgAAABgAAAACgANAD8AJQAgAFcAZQBiAEsAaQB0
+ACAAcwBlAHIAaQBhAGwAaQB6AGUAZAAgAGYAbwByAG0AIABzAHQAYQB0AGUAIAB2AGUAcgBzAGkA
+bwBuACAAOAAgAAoADQA9ACYAEAAAAGYAbwByAG0AIABrAGUAeQACAAAAMQAAAAYAAABmAG8AbwAA
+AAgAAABmAGkAbABlAAIAAAAyAAAAEAAAAGYAaQBsAGUALgB0AHgAdAAWAAAAZABpAHMAcABsAGEA
+eQBOAGEAbQBlAAAACAAAAAAAAAAAAABAewAAAAAAAADIAQAAAAAAAAAAAAAAAAAA/////wAAAAA=