Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: content/common/page_state_serialization.cc

Issue 51423002: Add a target_frame_id to the history serialization format. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Unconditionlly setTargetFrameID() Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/common/page_state_serialization.h" 5 #include "content/common/page_state_serialization.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/pickle.h" 10 #include "base/pickle.h"
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 bool parse_error; 180 bool parse_error;
181 }; 181 };
182 182
183 // Version ID of serialized format. 183 // Version ID of serialized format.
184 // 11: Min version 184 // 11: Min version
185 // 12: Adds support for contains_passwords in HTTP body 185 // 12: Adds support for contains_passwords in HTTP body
186 // 13: Adds support for URL (FileSystem URL) 186 // 13: Adds support for URL (FileSystem URL)
187 // 14: Adds list of referenced files, version written only for first item. 187 // 14: Adds list of referenced files, version written only for first item.
188 // 15: Removes a bunch of values we defined but never used. 188 // 15: Removes a bunch of values we defined but never used.
189 // 16: Switched from blob urls to blob uuids. 189 // 16: Switched from blob urls to blob uuids.
190 // 17: Add a target frame id number.
190 // 191 //
191 // NOTE: If the version is -1, then the pickle contains only a URL string. 192 // NOTE: If the version is -1, then the pickle contains only a URL string.
192 // See ReadPageState. 193 // See ReadPageState.
193 // 194 //
194 const int kMinVersion = 11; 195 const int kMinVersion = 11;
195 const int kCurrentVersion = 16; 196 const int kCurrentVersion = 17;
196 197
197 // A bunch of convenience functions to read/write to SerializeObjects. The 198 // A bunch of convenience functions to read/write to SerializeObjects. The
198 // de-serializers assume the input data will be in the correct format and fall 199 // de-serializers assume the input data will be in the correct format and fall
199 // back to returning safe defaults when not. 200 // back to returning safe defaults when not.
200 201
201 void WriteData(const void* data, int length, SerializeObject* obj) { 202 void WriteData(const void* data, int length, SerializeObject* obj) {
202 obj->pickle.WriteData(static_cast<const char*>(data), length); 203 obj->pickle.WriteData(static_cast<const char*>(data), length);
203 } 204 }
204 205
205 void ReadData(SerializeObject* obj, const void** data, int* length) { 206 void ReadData(SerializeObject* obj, const void** data, int* length) {
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 WriteString(state.target, obj); 496 WriteString(state.target, obj);
496 WriteInteger(state.scroll_offset.x(), obj); 497 WriteInteger(state.scroll_offset.x(), obj);
497 WriteInteger(state.scroll_offset.y(), obj); 498 WriteInteger(state.scroll_offset.y(), obj);
498 WriteString(state.referrer, obj); 499 WriteString(state.referrer, obj);
499 500
500 WriteStringVector(state.document_state, obj); 501 WriteStringVector(state.document_state, obj);
501 502
502 WriteReal(state.page_scale_factor, obj); 503 WriteReal(state.page_scale_factor, obj);
503 WriteInteger64(state.item_sequence_number, obj); 504 WriteInteger64(state.item_sequence_number, obj);
504 WriteInteger64(state.document_sequence_number, obj); 505 WriteInteger64(state.document_sequence_number, obj);
506 WriteInteger64(state.target_frame_id, obj);
505 507
506 bool has_state_object = !state.state_object.is_null(); 508 bool has_state_object = !state.state_object.is_null();
507 WriteBoolean(has_state_object, obj); 509 WriteBoolean(has_state_object, obj);
508 if (has_state_object) 510 if (has_state_object)
509 WriteString(state.state_object, obj); 511 WriteString(state.state_object, obj);
510 512
511 WriteHttpBody(state.http_body, obj); 513 WriteHttpBody(state.http_body, obj);
512 514
513 // NOTE: It is a quirk of the format that we still have to write the 515 // NOTE: It is a quirk of the format that we still have to write the
514 // http_content_type field when the HTTP body is null. That's why this code 516 // http_content_type field when the HTTP body is null. That's why this code
(...skipping 30 matching lines...) Expand all
545 ConsumeBoolean(obj); // Skip obsolete target item flag. 547 ConsumeBoolean(obj); // Skip obsolete target item flag.
546 ConsumeInteger(obj); // Skip obsolete visit count field. 548 ConsumeInteger(obj); // Skip obsolete visit count field.
547 } 549 }
548 state->referrer = ReadString(obj); 550 state->referrer = ReadString(obj);
549 551
550 ReadStringVector(obj, &state->document_state); 552 ReadStringVector(obj, &state->document_state);
551 553
552 state->page_scale_factor = ReadReal(obj); 554 state->page_scale_factor = ReadReal(obj);
553 state->item_sequence_number = ReadInteger64(obj); 555 state->item_sequence_number = ReadInteger64(obj);
554 state->document_sequence_number = ReadInteger64(obj); 556 state->document_sequence_number = ReadInteger64(obj);
557 if (obj->version >= 17)
558 state->target_frame_id = ReadInteger64(obj);
555 559
556 bool has_state_object = ReadBoolean(obj); 560 bool has_state_object = ReadBoolean(obj);
557 if (has_state_object) 561 if (has_state_object)
558 state->state_object = ReadString(obj); 562 state->state_object = ReadString(obj);
559 563
560 ReadHttpBody(obj, &state->http_body); 564 ReadHttpBody(obj, &state->http_body);
561 565
562 // NOTE: It is a quirk of the format that we still have to read the 566 // NOTE: It is a quirk of the format that we still have to read the
563 // http_content_type field when the HTTP body is null. That's why this code 567 // http_content_type field when the HTTP body is null. That's why this code
564 // is here instead of inside ReadHttpBody. 568 // is here instead of inside ReadHttpBody.
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 contains_passwords(false), 657 contains_passwords(false),
654 is_null(true) { 658 is_null(true) {
655 } 659 }
656 660
657 ExplodedHttpBody::~ExplodedHttpBody() { 661 ExplodedHttpBody::~ExplodedHttpBody() {
658 } 662 }
659 663
660 ExplodedFrameState::ExplodedFrameState() 664 ExplodedFrameState::ExplodedFrameState()
661 : item_sequence_number(0), 665 : item_sequence_number(0),
662 document_sequence_number(0), 666 document_sequence_number(0),
667 target_frame_id(0),
663 page_scale_factor(0.0) { 668 page_scale_factor(0.0) {
664 } 669 }
665 670
666 ExplodedFrameState::~ExplodedFrameState() { 671 ExplodedFrameState::~ExplodedFrameState() {
667 } 672 }
668 673
669 ExplodedPageState::ExplodedPageState() { 674 ExplodedPageState::ExplodedPageState() {
670 } 675 }
671 676
672 ExplodedPageState::~ExplodedPageState() { 677 ExplodedPageState::~ExplodedPageState() {
(...skipping 24 matching lines...) Expand all
697 float device_scale_factor, 702 float device_scale_factor,
698 ExplodedPageState* exploded) { 703 ExplodedPageState* exploded) {
699 g_device_scale_factor_for_testing = device_scale_factor; 704 g_device_scale_factor_for_testing = device_scale_factor;
700 bool rv = DecodePageState(encoded, exploded); 705 bool rv = DecodePageState(encoded, exploded);
701 g_device_scale_factor_for_testing = 0.0; 706 g_device_scale_factor_for_testing = 0.0;
702 return rv; 707 return rv;
703 } 708 }
704 #endif 709 #endif
705 710
706 } // namespace content 711 } // namespace content
OLDNEW
« no previous file with comments | « content/common/page_state_serialization.h ('k') | content/common/page_state_serialization_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698