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

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

Issue 412303002: Use WebHistoryItem.frameSequenceNumber() to find frames for history navigations (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months 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 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 // 17: Add a target frame id number.
191 // 18: Add referrer policy. 191 // 18: Add referrer policy.
192 // 19: Remove target frame id, which was a bad idea, and original url string, 192 // 19: Remove target frame id, which was a bad idea, and original url string,
193 // which is no longer used. 193 // which is no longer used.
194 // 20: Add pinch viewport scroll offset, the offset of the pinched zoomed 194 // 20: Add pinch viewport scroll offset, the offset of the pinched zoomed
195 // viewport within the unzoomed main frame. 195 // viewport within the unzoomed main frame.
196 // 21: Add frame sequence number
196 // 197 //
197 // NOTE: If the version is -1, then the pickle contains only a URL string. 198 // NOTE: If the version is -1, then the pickle contains only a URL string.
198 // See ReadPageState. 199 // See ReadPageState.
199 // 200 //
200 const int kMinVersion = 11; 201 const int kMinVersion = 11;
201 const int kCurrentVersion = 20; 202 const int kCurrentVersion = 21;
202 203
203 // A bunch of convenience functions to read/write to SerializeObjects. The 204 // A bunch of convenience functions to read/write to SerializeObjects. The
204 // de-serializers assume the input data will be in the correct format and fall 205 // de-serializers assume the input data will be in the correct format and fall
205 // back to returning safe defaults when not. 206 // back to returning safe defaults when not.
206 207
207 void WriteData(const void* data, int length, SerializeObject* obj) { 208 void WriteData(const void* data, int length, SerializeObject* obj) {
208 obj->pickle.WriteData(static_cast<const char*>(data), length); 209 obj->pickle.WriteData(static_cast<const char*>(data), length);
209 } 210 }
210 211
211 void ReadData(SerializeObject* obj, const void** data, int* length) { 212 void ReadData(SerializeObject* obj, const void** data, int* length) {
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 WriteString(state.target, obj); 505 WriteString(state.target, obj);
505 WriteInteger(state.scroll_offset.x(), obj); 506 WriteInteger(state.scroll_offset.x(), obj);
506 WriteInteger(state.scroll_offset.y(), obj); 507 WriteInteger(state.scroll_offset.y(), obj);
507 WriteString(state.referrer, obj); 508 WriteString(state.referrer, obj);
508 509
509 WriteStringVector(state.document_state, obj); 510 WriteStringVector(state.document_state, obj);
510 511
511 WriteReal(state.page_scale_factor, obj); 512 WriteReal(state.page_scale_factor, obj);
512 WriteInteger64(state.item_sequence_number, obj); 513 WriteInteger64(state.item_sequence_number, obj);
513 WriteInteger64(state.document_sequence_number, obj); 514 WriteInteger64(state.document_sequence_number, obj);
515 WriteInteger64(state.frame_sequence_number, obj);
514 WriteInteger(state.referrer_policy, obj); 516 WriteInteger(state.referrer_policy, obj);
515 WriteReal(state.pinch_viewport_scroll_offset.x(), obj); 517 WriteReal(state.pinch_viewport_scroll_offset.x(), obj);
516 WriteReal(state.pinch_viewport_scroll_offset.y(), obj); 518 WriteReal(state.pinch_viewport_scroll_offset.y(), obj);
517 519
518 bool has_state_object = !state.state_object.is_null(); 520 bool has_state_object = !state.state_object.is_null();
519 WriteBoolean(has_state_object, obj); 521 WriteBoolean(has_state_object, obj);
520 if (has_state_object) 522 if (has_state_object)
521 WriteString(state.state_object, obj); 523 WriteString(state.state_object, obj);
522 524
523 WriteHttpBody(state.http_body, obj); 525 WriteHttpBody(state.http_body, obj);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 ConsumeBoolean(obj); // Skip obsolete target item flag. 562 ConsumeBoolean(obj); // Skip obsolete target item flag.
561 ConsumeInteger(obj); // Skip obsolete visit count field. 563 ConsumeInteger(obj); // Skip obsolete visit count field.
562 } 564 }
563 state->referrer = ReadString(obj); 565 state->referrer = ReadString(obj);
564 566
565 ReadStringVector(obj, &state->document_state); 567 ReadStringVector(obj, &state->document_state);
566 568
567 state->page_scale_factor = ReadReal(obj); 569 state->page_scale_factor = ReadReal(obj);
568 state->item_sequence_number = ReadInteger64(obj); 570 state->item_sequence_number = ReadInteger64(obj);
569 state->document_sequence_number = ReadInteger64(obj); 571 state->document_sequence_number = ReadInteger64(obj);
572 if (obj->version >= 21)
573 state->frame_sequence_number = ReadInteger64(obj);
570 574
571 if (obj->version >= 17 && obj->version < 19) 575 if (obj->version >= 17 && obj->version < 19)
572 ConsumeInteger64(obj); // Skip obsolete target frame id number. 576 ConsumeInteger64(obj); // Skip obsolete target frame id number.
573 577
574 if (obj->version >= 18) { 578 if (obj->version >= 18) {
575 state->referrer_policy = 579 state->referrer_policy =
576 static_cast<blink::WebReferrerPolicy>(ReadInteger(obj)); 580 static_cast<blink::WebReferrerPolicy>(ReadInteger(obj));
577 } 581 }
578 582
579 if (obj->version >= 20) { 583 if (obj->version >= 20) {
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 contains_passwords(false), 689 contains_passwords(false),
686 is_null(true) { 690 is_null(true) {
687 } 691 }
688 692
689 ExplodedHttpBody::~ExplodedHttpBody() { 693 ExplodedHttpBody::~ExplodedHttpBody() {
690 } 694 }
691 695
692 ExplodedFrameState::ExplodedFrameState() 696 ExplodedFrameState::ExplodedFrameState()
693 : item_sequence_number(0), 697 : item_sequence_number(0),
694 document_sequence_number(0), 698 document_sequence_number(0),
699 frame_sequence_number(0),
695 page_scale_factor(0.0), 700 page_scale_factor(0.0),
696 referrer_policy(blink::WebReferrerPolicyDefault) { 701 referrer_policy(blink::WebReferrerPolicyDefault) {
697 } 702 }
698 703
699 ExplodedFrameState::ExplodedFrameState(const ExplodedFrameState& other) { 704 ExplodedFrameState::ExplodedFrameState(const ExplodedFrameState& other) {
700 assign(other); 705 assign(other);
701 } 706 }
702 707
703 ExplodedFrameState::~ExplodedFrameState() { 708 ExplodedFrameState::~ExplodedFrameState() {
704 } 709 }
705 710
706 void ExplodedFrameState::operator=(const ExplodedFrameState& other) { 711 void ExplodedFrameState::operator=(const ExplodedFrameState& other) {
707 if (&other != this) 712 if (&other != this)
708 assign(other); 713 assign(other);
709 } 714 }
710 715
711 void ExplodedFrameState::assign(const ExplodedFrameState& other) { 716 void ExplodedFrameState::assign(const ExplodedFrameState& other) {
712 url_string = other.url_string; 717 url_string = other.url_string;
713 referrer = other.referrer; 718 referrer = other.referrer;
714 target = other.target; 719 target = other.target;
715 state_object = other.state_object; 720 state_object = other.state_object;
716 document_state = other.document_state; 721 document_state = other.document_state;
717 pinch_viewport_scroll_offset = other.pinch_viewport_scroll_offset; 722 pinch_viewport_scroll_offset = other.pinch_viewport_scroll_offset;
718 scroll_offset = other.scroll_offset; 723 scroll_offset = other.scroll_offset;
719 item_sequence_number = other.item_sequence_number; 724 item_sequence_number = other.item_sequence_number;
720 document_sequence_number = other.document_sequence_number; 725 document_sequence_number = other.document_sequence_number;
726 frame_sequence_number = other.frame_sequence_number;
721 page_scale_factor = other.page_scale_factor; 727 page_scale_factor = other.page_scale_factor;
722 referrer_policy = other.referrer_policy; 728 referrer_policy = other.referrer_policy;
723 http_body = other.http_body; 729 http_body = other.http_body;
724 children = other.children; 730 children = other.children;
725 } 731 }
726 732
727 ExplodedPageState::ExplodedPageState() { 733 ExplodedPageState::ExplodedPageState() {
728 } 734 }
729 735
730 ExplodedPageState::~ExplodedPageState() { 736 ExplodedPageState::~ExplodedPageState() {
(...skipping 24 matching lines...) Expand all
755 float device_scale_factor, 761 float device_scale_factor,
756 ExplodedPageState* exploded) { 762 ExplodedPageState* exploded) {
757 g_device_scale_factor_for_testing = device_scale_factor; 763 g_device_scale_factor_for_testing = device_scale_factor;
758 bool rv = DecodePageState(encoded, exploded); 764 bool rv = DecodePageState(encoded, exploded);
759 g_device_scale_factor_for_testing = 0.0; 765 g_device_scale_factor_for_testing = 0.0;
760 return rv; 766 return rv;
761 } 767 }
762 #endif 768 #endif
763 769
764 } // namespace content 770 } // 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