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

Side by Side Diff: webkit/glue/glue_serialize.cc

Issue 10828252: Support FileSystem URL in File object (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comment fix Created 8 years, 3 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
« no previous file with comments | « webkit/blob/view_blob_internals_job.cc ('k') | webkit/glue/resource_request_body.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "webkit/glue/glue_serialize.h" 5 #include "webkit/glue/glue_serialize.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/pickle.h" 9 #include "base/pickle.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 // This version checks and reads v1 and v2 correctly. 61 // This version checks and reads v1 and v2 correctly.
62 // 4: Adds support for storing FormData::identifier(). 62 // 4: Adds support for storing FormData::identifier().
63 // 5: Adds support for empty FormData 63 // 5: Adds support for empty FormData
64 // 6: Adds support for documentSequenceNumbers 64 // 6: Adds support for documentSequenceNumbers
65 // 7: Adds support for stateObject 65 // 7: Adds support for stateObject
66 // 8: Adds support for file range and modification time 66 // 8: Adds support for file range and modification time
67 // 9: Adds support for itemSequenceNumbers 67 // 9: Adds support for itemSequenceNumbers
68 // 10: Adds support for blob 68 // 10: Adds support for blob
69 // 11: Adds support for pageScaleFactor 69 // 11: Adds support for pageScaleFactor
70 // 12: Adds support for hasPasswordData in HTTP body 70 // 12: Adds support for hasPasswordData in HTTP body
71 // 13: Adds support for URL (FileSystem URL)
71 // Should be const, but unit tests may modify it. 72 // Should be const, but unit tests may modify it.
72 // 73 //
73 // NOTE: If the version is -1, then the pickle contains only a URL string. 74 // NOTE: If the version is -1, then the pickle contains only a URL string.
74 // See CreateHistoryStateForURL. 75 // See CreateHistoryStateForURL.
75 // 76 //
76 int kVersion = 12; 77 int kVersion = 13;
77 78
78 // A bunch of convenience functions to read/write to SerializeObjects. 79 // A bunch of convenience functions to read/write to SerializeObjects.
79 // The serializers assume the input data is in the correct format and so does 80 // The serializers assume the input data is in the correct format and so does
80 // no error checking. 81 // no error checking.
81 inline void WriteData(const void* data, int length, SerializeObject* obj) { 82 inline void WriteData(const void* data, int length, SerializeObject* obj) {
82 obj->pickle.WriteData(static_cast<const char*>(data), length); 83 obj->pickle.WriteData(static_cast<const char*>(data), length);
83 } 84 }
84 85
85 inline void ReadData(const SerializeObject* obj, const void** data, 86 inline void ReadData(const SerializeObject* obj, const void** data,
86 int* length) { 87 int* length) {
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 for (size_t i = 0; http_body.elementAt(i, element); ++i) { 252 for (size_t i = 0; http_body.elementAt(i, element); ++i) {
252 WriteInteger(element.type, obj); 253 WriteInteger(element.type, obj);
253 if (element.type == WebHTTPBody::Element::TypeData) { 254 if (element.type == WebHTTPBody::Element::TypeData) {
254 WriteData(element.data.data(), static_cast<int>(element.data.size()), 255 WriteData(element.data.data(), static_cast<int>(element.data.size()),
255 obj); 256 obj);
256 } else if (element.type == WebHTTPBody::Element::TypeFile) { 257 } else if (element.type == WebHTTPBody::Element::TypeFile) {
257 WriteString(element.filePath, obj); 258 WriteString(element.filePath, obj);
258 WriteInteger64(element.fileStart, obj); 259 WriteInteger64(element.fileStart, obj);
259 WriteInteger64(element.fileLength, obj); 260 WriteInteger64(element.fileLength, obj);
260 WriteReal(element.modificationTime, obj); 261 WriteReal(element.modificationTime, obj);
262 } else if (element.type == WebHTTPBody::Element::TypeURL) {
263 WriteGURL(element.url, obj);
264 WriteInteger64(element.fileStart, obj);
265 WriteInteger64(element.fileLength, obj);
266 WriteReal(element.modificationTime, obj);
261 } else { 267 } else {
262 WriteGURL(element.blobURL, obj); 268 WriteGURL(element.url, obj);
263 } 269 }
264 } 270 }
265 WriteInteger64(http_body.identifier(), obj); 271 WriteInteger64(http_body.identifier(), obj);
266 WriteBoolean(http_body.containsPasswordData(), obj); 272 WriteBoolean(http_body.containsPasswordData(), obj);
267 } 273 }
268 274
269 WebHTTPBody ReadFormData(const SerializeObject* obj) { 275 WebHTTPBody ReadFormData(const SerializeObject* obj) {
270 // In newer versions, an initial boolean indicates if we have form data. 276 // In newer versions, an initial boolean indicates if we have form data.
271 if (obj->version >= 5 && !ReadBoolean(obj)) 277 if (obj->version >= 5 && !ReadBoolean(obj))
272 return WebHTTPBody(); 278 return WebHTTPBody();
(...skipping 19 matching lines...) Expand all
292 long long file_start = 0; 298 long long file_start = 0;
293 long long file_length = -1; 299 long long file_length = -1;
294 double modification_time = 0.0; 300 double modification_time = 0.0;
295 if (obj->version >= 8) { 301 if (obj->version >= 8) {
296 file_start = ReadInteger64(obj); 302 file_start = ReadInteger64(obj);
297 file_length = ReadInteger64(obj); 303 file_length = ReadInteger64(obj);
298 modification_time = ReadReal(obj); 304 modification_time = ReadReal(obj);
299 } 305 }
300 http_body.appendFileRange(file_path, file_start, file_length, 306 http_body.appendFileRange(file_path, file_start, file_length,
301 modification_time); 307 modification_time);
308 } else if (type == WebHTTPBody::Element::TypeURL) {
309 GURL url = ReadGURL(obj);
310 long long file_start = 0;
311 long long file_length = -1;
312 double modification_time = 0.0;
313 file_start = ReadInteger64(obj);
314 file_length = ReadInteger64(obj);
315 modification_time = ReadReal(obj);
316 http_body.appendURLRange(url, file_start, file_length,
317 modification_time);
302 } else if (obj->version >= 10) { 318 } else if (obj->version >= 10) {
303 GURL blob_url = ReadGURL(obj); 319 GURL blob_url = ReadGURL(obj);
304 http_body.appendBlob(blob_url); 320 http_body.appendBlob(blob_url);
305 } 321 }
306 } 322 }
307 if (obj->version >= 4) 323 if (obj->version >= 4)
308 http_body.setIdentifier(ReadInteger64(obj)); 324 http_body.setIdentifier(ReadInteger64(obj));
309 325
310 if (obj->version >= 12) 326 if (obj->version >= 12)
311 http_body.setContainsPasswordData(ReadBoolean(obj)); 327 http_body.setContainsPasswordData(ReadBoolean(obj));
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 *serialized_item = obj.GetAsString(); 587 *serialized_item = obj.GetAsString();
572 588
573 kVersion = real_version; 589 kVersion = real_version;
574 } 590 }
575 591
576 int HistoryItemCurrentVersion() { 592 int HistoryItemCurrentVersion() {
577 return kVersion; 593 return kVersion;
578 } 594 }
579 595
580 } // namespace webkit_glue 596 } // namespace webkit_glue
OLDNEW
« no previous file with comments | « webkit/blob/view_blob_internals_job.cc ('k') | webkit/glue/resource_request_body.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698