Index: webkit/glue/resource_request_body.cc |
=================================================================== |
--- webkit/glue/resource_request_body.cc (revision 183651) |
+++ webkit/glue/resource_request_body.cc (working copy) |
@@ -8,11 +8,11 @@ |
#include "net/base/upload_bytes_element_reader.h" |
#include "net/base/upload_data_stream.h" |
#include "net/base/upload_file_element_reader.h" |
-#include "webkit/blob/blob_storage_controller.h" |
+#include "webkit/blob/blob_storage_context.h" |
#include "webkit/fileapi/upload_file_system_file_element_reader.h" |
using webkit_blob::BlobData; |
-using webkit_blob::BlobStorageController; |
+using webkit_blob::BlobStorageContext; |
namespace webkit_glue { |
@@ -81,9 +81,9 @@ |
expected_modification_time); |
} |
-void ResourceRequestBody::AppendBlob(const GURL& blob_url) { |
+void ResourceRequestBody::AppendBlob(const std::string& uuid) { |
elements_.push_back(Element()); |
- elements_.back().SetToBlobUrl(blob_url); |
+ elements_.back().SetToBlob(uuid); |
} |
void ResourceRequestBody::AppendFileSystemFileRange( |
@@ -96,7 +96,7 @@ |
net::UploadDataStream* |
ResourceRequestBody::ResolveElementsAndCreateUploadDataStream( |
- BlobStorageController* blob_controller, |
+ BlobStorageContext* blob_context, |
fileapi::FileSystemContext* file_system_context, |
base::TaskRunner* file_task_runner) { |
// Resolve all blob elements. |
@@ -104,7 +104,8 @@ |
for (size_t i = 0; i < elements_.size(); ++i) { |
const Element& element = elements_[i]; |
if (element.type() == Element::TYPE_BLOB) { |
- ResolveBlobReference(blob_controller, element.url(), &resolved_elements); |
+ ResolveBlobReference(blob_context, element.blob_uuid(), |
+ &resolved_elements); |
} else { |
// No need to resolve, just append the element. |
resolved_elements.push_back(&element); |
@@ -126,7 +127,7 @@ |
element_readers.push_back( |
new fileapi::UploadFileSystemFileElementReader( |
file_system_context, |
- element.url(), |
+ element.filesystem_url(), |
element.offset(), |
element.length(), |
element.expected_modification_time())); |
@@ -146,29 +147,30 @@ |
ResourceRequestBody::~ResourceRequestBody() {} |
void ResourceRequestBody::ResolveBlobReference( |
- webkit_blob::BlobStorageController* blob_controller, |
- const GURL& blob_url, |
+ webkit_blob::BlobStorageContext* blob_context, |
+ const std::string& uuid, |
std::vector<const Element*>* resolved_elements) { |
- DCHECK(blob_controller); |
- BlobData* blob_data = blob_controller->GetBlobDataFromUrl(blob_url); |
- DCHECK(blob_data); |
- if (!blob_data) |
+ DCHECK(blob_context); |
+ scoped_ptr<webkit_blob::BlobDataHandle> handle = |
+ blob_context->GetBlobDataFromUUID(uuid); |
+ DCHECK(handle); |
+ if (!handle) |
return; |
// If there is no element in the referred blob data, just return. |
- if (blob_data->items().empty()) |
+ if (handle->data()->items().empty()) |
return; |
- // Ensure the blob and any attached shareable files survive until |
- // upload completion. |
- SetUserData(blob_data, new base::UserDataAdapter<BlobData>(blob_data)); |
- |
// Append the elements in the referred blob data. |
- for (size_t i = 0; i < blob_data->items().size(); ++i) { |
- const BlobData::Item& item = blob_data->items().at(i); |
+ for (size_t i = 0; i < handle->data()->items().size(); ++i) { |
+ const BlobData::Item& item = handle->data()->items().at(i); |
DCHECK_NE(BlobData::Item::TYPE_BLOB, item.type()); |
resolved_elements->push_back(&item); |
} |
+ |
+ // Ensure the blob and any attached shareable files survive until |
+ // upload completion. |
+ SetUserData(handle.get(), handle.release()); |
} |
} // namespace webkit_glue |