| OLD | NEW | 
|---|
| 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 170 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 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 // 17: Add a target frame id number. | 
|  | 191 // 18: Add referrer policy. | 
| 191 // | 192 // | 
| 192 // NOTE: If the version is -1, then the pickle contains only a URL string. | 193 // NOTE: If the version is -1, then the pickle contains only a URL string. | 
| 193 // See ReadPageState. | 194 // See ReadPageState. | 
| 194 // | 195 // | 
| 195 const int kMinVersion = 11; | 196 const int kMinVersion = 11; | 
| 196 const int kCurrentVersion = 17; | 197 const int kCurrentVersion = 18; | 
| 197 | 198 | 
| 198 // A bunch of convenience functions to read/write to SerializeObjects.  The | 199 // A bunch of convenience functions to read/write to SerializeObjects.  The | 
| 199 // de-serializers assume the input data will be in the correct format and fall | 200 // de-serializers assume the input data will be in the correct format and fall | 
| 200 // back to returning safe defaults when not. | 201 // back to returning safe defaults when not. | 
| 201 | 202 | 
| 202 void WriteData(const void* data, int length, SerializeObject* obj) { | 203 void WriteData(const void* data, int length, SerializeObject* obj) { | 
| 203   obj->pickle.WriteData(static_cast<const char*>(data), length); | 204   obj->pickle.WriteData(static_cast<const char*>(data), length); | 
| 204 } | 205 } | 
| 205 | 206 | 
| 206 void ReadData(SerializeObject* obj, const void** data, int* length) { | 207 void ReadData(SerializeObject* obj, const void** data, int* length) { | 
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 497   WriteInteger(state.scroll_offset.x(), obj); | 498   WriteInteger(state.scroll_offset.x(), obj); | 
| 498   WriteInteger(state.scroll_offset.y(), obj); | 499   WriteInteger(state.scroll_offset.y(), obj); | 
| 499   WriteString(state.referrer, obj); | 500   WriteString(state.referrer, obj); | 
| 500 | 501 | 
| 501   WriteStringVector(state.document_state, obj); | 502   WriteStringVector(state.document_state, obj); | 
| 502 | 503 | 
| 503   WriteReal(state.page_scale_factor, obj); | 504   WriteReal(state.page_scale_factor, obj); | 
| 504   WriteInteger64(state.item_sequence_number, obj); | 505   WriteInteger64(state.item_sequence_number, obj); | 
| 505   WriteInteger64(state.document_sequence_number, obj); | 506   WriteInteger64(state.document_sequence_number, obj); | 
| 506   WriteInteger64(state.target_frame_id, obj); | 507   WriteInteger64(state.target_frame_id, obj); | 
|  | 508   WriteInteger(state.referrer_policy, obj); | 
| 507 | 509 | 
| 508   bool has_state_object = !state.state_object.is_null(); | 510   bool has_state_object = !state.state_object.is_null(); | 
| 509   WriteBoolean(has_state_object, obj); | 511   WriteBoolean(has_state_object, obj); | 
| 510   if (has_state_object) | 512   if (has_state_object) | 
| 511     WriteString(state.state_object, obj); | 513     WriteString(state.state_object, obj); | 
| 512 | 514 | 
| 513   WriteHttpBody(state.http_body, obj); | 515   WriteHttpBody(state.http_body, obj); | 
| 514 | 516 | 
| 515   // NOTE: It is a quirk of the format that we still have to write the | 517   // NOTE: It is a quirk of the format that we still have to write the | 
| 516   // http_content_type field when the HTTP body is null.  That's why this code | 518   // http_content_type field when the HTTP body is null.  That's why this code | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 549   } | 551   } | 
| 550   state->referrer = ReadString(obj); | 552   state->referrer = ReadString(obj); | 
| 551 | 553 | 
| 552   ReadStringVector(obj, &state->document_state); | 554   ReadStringVector(obj, &state->document_state); | 
| 553 | 555 | 
| 554   state->page_scale_factor = ReadReal(obj); | 556   state->page_scale_factor = ReadReal(obj); | 
| 555   state->item_sequence_number = ReadInteger64(obj); | 557   state->item_sequence_number = ReadInteger64(obj); | 
| 556   state->document_sequence_number = ReadInteger64(obj); | 558   state->document_sequence_number = ReadInteger64(obj); | 
| 557   if (obj->version >= 17) | 559   if (obj->version >= 17) | 
| 558     state->target_frame_id = ReadInteger64(obj); | 560     state->target_frame_id = ReadInteger64(obj); | 
|  | 561   if (obj->version >= 18) { | 
|  | 562     state->referrer_policy = | 
|  | 563         static_cast<blink::WebReferrerPolicy>(ReadInteger(obj)); | 
|  | 564   } | 
| 559 | 565 | 
| 560   bool has_state_object = ReadBoolean(obj); | 566   bool has_state_object = ReadBoolean(obj); | 
| 561   if (has_state_object) | 567   if (has_state_object) | 
| 562     state->state_object = ReadString(obj); | 568     state->state_object = ReadString(obj); | 
| 563 | 569 | 
| 564   ReadHttpBody(obj, &state->http_body); | 570   ReadHttpBody(obj, &state->http_body); | 
| 565 | 571 | 
| 566   // NOTE: It is a quirk of the format that we still have to read the | 572   // NOTE: It is a quirk of the format that we still have to read the | 
| 567   // http_content_type field when the HTTP body is null.  That's why this code | 573   // http_content_type field when the HTTP body is null.  That's why this code | 
| 568   // is here instead of inside ReadHttpBody. | 574   // is here instead of inside ReadHttpBody. | 
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 659       is_null(true) { | 665       is_null(true) { | 
| 660 } | 666 } | 
| 661 | 667 | 
| 662 ExplodedHttpBody::~ExplodedHttpBody() { | 668 ExplodedHttpBody::~ExplodedHttpBody() { | 
| 663 } | 669 } | 
| 664 | 670 | 
| 665 ExplodedFrameState::ExplodedFrameState() | 671 ExplodedFrameState::ExplodedFrameState() | 
| 666     : item_sequence_number(0), | 672     : item_sequence_number(0), | 
| 667       document_sequence_number(0), | 673       document_sequence_number(0), | 
| 668       target_frame_id(0), | 674       target_frame_id(0), | 
| 669       page_scale_factor(0.0) { | 675       page_scale_factor(0.0), | 
|  | 676       referrer_policy(blink::WebReferrerPolicyDefault) { | 
| 670 } | 677 } | 
| 671 | 678 | 
| 672 ExplodedFrameState::~ExplodedFrameState() { | 679 ExplodedFrameState::~ExplodedFrameState() { | 
| 673 } | 680 } | 
| 674 | 681 | 
| 675 ExplodedPageState::ExplodedPageState() { | 682 ExplodedPageState::ExplodedPageState() { | 
| 676 } | 683 } | 
| 677 | 684 | 
| 678 ExplodedPageState::~ExplodedPageState() { | 685 ExplodedPageState::~ExplodedPageState() { | 
| 679 } | 686 } | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
| 703     float device_scale_factor, | 710     float device_scale_factor, | 
| 704     ExplodedPageState* exploded) { | 711     ExplodedPageState* exploded) { | 
| 705   g_device_scale_factor_for_testing = device_scale_factor; | 712   g_device_scale_factor_for_testing = device_scale_factor; | 
| 706   bool rv = DecodePageState(encoded, exploded); | 713   bool rv = DecodePageState(encoded, exploded); | 
| 707   g_device_scale_factor_for_testing = 0.0; | 714   g_device_scale_factor_for_testing = 0.0; | 
| 708   return rv; | 715   return rv; | 
| 709 } | 716 } | 
| 710 #endif | 717 #endif | 
| 711 | 718 | 
| 712 }  // namespace content | 719 }  // namespace content | 
| OLD | NEW | 
|---|