diff options
author | japhet@chromium.org <japhet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-02 22:20:51 +0000 |
---|---|---|
committer | japhet@chromium.org <japhet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-02 22:20:51 +0000 |
commit | e9043a13c5506a68e44f15129d45245c4e38e5c9 (patch) | |
tree | 742e62293bf695b8a07ba717f3d24521260f4593 | |
parent | 56503b3d241d7347a6dd4a3833d1936c43da8a0a (diff) | |
download | chromium_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.cc | 46 | ||||
-rw-r--r-- | content/common/page_state_serialization.h | 6 | ||||
-rw-r--r-- | content/common/page_state_serialization_unittest.cc | 22 | ||||
-rw-r--r-- | content/public/renderer/history_item_serialization.cc | 12 | ||||
-rw-r--r-- | content/test/data/page_state/serialized_v15.dat | 17 |
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= |