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

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

Issue 10827414: Factor out common Element struct from BlobData and ResourceRequestBody (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: webkit/common -> webkit/base Created 8 years, 4 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/glue/resource_request_body.h ('k') | webkit/glue/resource_request_body_unittest.cc » ('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/resource_request_body.h" 5 #include "webkit/glue/resource_request_body.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "net/base/upload_data.h" 8 #include "net/base/upload_data.h"
9 #include "webkit/blob/blob_storage_controller.h" 9 #include "webkit/blob/blob_storage_controller.h"
10 10
11 using webkit_blob::BlobData; 11 using webkit_blob::BlobData;
12 using webkit_blob::BlobStorageController; 12 using webkit_blob::BlobStorageController;
13 13
14 namespace webkit_glue { 14 namespace webkit_glue {
15 15
16 ResourceRequestBody::Element::Element()
17 : type_(TYPE_BYTES),
18 bytes_start_(NULL),
19 bytes_length_(0),
20 file_range_offset_(0),
21 file_range_length_(kuint64max) {
22 }
23
24 ResourceRequestBody::Element::~Element() {}
25
26 ResourceRequestBody::ResourceRequestBody() : identifier_(0) {} 16 ResourceRequestBody::ResourceRequestBody() : identifier_(0) {}
27 17
28 void ResourceRequestBody::AppendBytes(const char* bytes, int bytes_len) { 18 void ResourceRequestBody::AppendBytes(const char* bytes, int bytes_len) {
29 if (bytes_len > 0) { 19 if (bytes_len > 0) {
30 elements_.push_back(Element()); 20 elements_.push_back(Element());
31 elements_.back().SetToBytes(bytes, bytes_len); 21 elements_.back().SetToBytes(bytes, bytes_len);
32 } 22 }
33 } 23 }
34 24
35 void ResourceRequestBody::AppendFileRange( 25 void ResourceRequestBody::AppendFileRange(
(...skipping 15 matching lines...) Expand all
51 net::UploadData* upload_data = new net::UploadData; 41 net::UploadData* upload_data = new net::UploadData;
52 // We attach 'this' to UploadData so that we do not need to copy 42 // We attach 'this' to UploadData so that we do not need to copy
53 // bytes for TYPE_BYTES. 43 // bytes for TYPE_BYTES.
54 upload_data->SetUserData( 44 upload_data->SetUserData(
55 this, new base::UserDataAdapter<ResourceRequestBody>(this)); 45 this, new base::UserDataAdapter<ResourceRequestBody>(this));
56 std::vector<net::UploadElement>* elements = 46 std::vector<net::UploadElement>* elements =
57 upload_data->elements_mutable(); 47 upload_data->elements_mutable();
58 for (size_t i = 0; i < elements_.size(); ++i) { 48 for (size_t i = 0; i < elements_.size(); ++i) {
59 const Element& element = elements_[i]; 49 const Element& element = elements_[i];
60 switch (element.type()) { 50 switch (element.type()) {
61 case TYPE_BYTES: 51 case Element::TYPE_BYTES:
62 elements->push_back(net::UploadElement()); 52 elements->push_back(net::UploadElement());
63 elements->back().SetToSharedBytes(element.bytes(), 53 elements->back().SetToSharedBytes(element.bytes(), element.length());
64 element.bytes_length());
65 break; 54 break;
66 case TYPE_FILE: 55 case Element::TYPE_FILE:
67 elements->push_back(net::UploadElement()); 56 elements->push_back(net::UploadElement());
68 elements->back().SetToFilePathRange( 57 elements->back().SetToFilePathRange(
69 element.file_path(), 58 element.path(),
70 element.file_range_offset(), 59 element.offset(),
71 element.file_range_length(), 60 element.length(),
72 element.expected_file_modification_time()); 61 element.expected_modification_time());
73 break; 62 break;
74 case TYPE_BLOB: 63 case Element::TYPE_BLOB:
75 ResolveBlobReference(blob_controller, element.blob_url(), elements); 64 ResolveBlobReference(blob_controller, element.url(), elements);
65 break;
66 case Element::TYPE_UNKNOWN:
67 NOTREACHED();
76 break; 68 break;
77 } 69 }
78 } 70 }
79 upload_data->set_identifier(identifier_); 71 upload_data->set_identifier(identifier_);
80 return upload_data; 72 return upload_data;
81 } 73 }
82 74
83 ResourceRequestBody::~ResourceRequestBody() {} 75 ResourceRequestBody::~ResourceRequestBody() {}
84 76
85 void ResourceRequestBody::ResolveBlobReference( 77 void ResourceRequestBody::ResolveBlobReference(
(...skipping 11 matching lines...) Expand all
97 89
98 // Ensure the blob and any attached shareable files survive until 90 // Ensure the blob and any attached shareable files survive until
99 // upload completion. 91 // upload completion.
100 SetUserData(blob_data, new base::UserDataAdapter<BlobData>(blob_data)); 92 SetUserData(blob_data, new base::UserDataAdapter<BlobData>(blob_data));
101 93
102 // Append the elements in the referred blob data. 94 // Append the elements in the referred blob data.
103 for (size_t i = 0; i < blob_data->items().size(); ++i) { 95 for (size_t i = 0; i < blob_data->items().size(); ++i) {
104 elements->push_back(net::UploadElement()); 96 elements->push_back(net::UploadElement());
105 net::UploadElement& element = elements->back(); 97 net::UploadElement& element = elements->back();
106 const BlobData::Item& item = blob_data->items().at(i); 98 const BlobData::Item& item = blob_data->items().at(i);
107 switch (item.type) { 99 switch (item.type()) {
108 case BlobData::TYPE_DATA: 100 case BlobData::Item::TYPE_BYTES:
109 element.SetToSharedBytes( 101 element.SetToSharedBytes(
110 &item.data.at(0) + static_cast<int>(item.offset), 102 item.bytes() + static_cast<int>(item.offset()),
111 static_cast<int>(item.length)); 103 static_cast<int>(item.length()));
112 break; 104 break;
113 case BlobData::TYPE_FILE: 105 case BlobData::Item::TYPE_FILE:
114 element.SetToFilePathRange( 106 element.SetToFilePathRange(
115 item.file_path, 107 item.path(),
116 item.offset, 108 item.offset(),
117 item.length, 109 item.length(),
118 item.expected_modification_time); 110 item.expected_modification_time());
119 break; 111 break;
120 default: 112 default:
121 NOTREACHED(); 113 NOTREACHED();
122 break; 114 break;
123 } 115 }
124 } 116 }
125 } 117 }
126 118
127 } // namespace webkit_glue 119 } // namespace webkit_glue
OLDNEW
« no previous file with comments | « webkit/glue/resource_request_body.h ('k') | webkit/glue/resource_request_body_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698