summaryrefslogtreecommitdiffstats
path: root/webkit/glue
diff options
context:
space:
mode:
authorhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-10 14:08:07 +0000
committerhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-10 14:08:07 +0000
commit671a7148a6cf14910b08b2bf6b395d9195d208b8 (patch)
treea8de07c7570328097bcea3a12863005d90c6ea91 /webkit/glue
parent116c89e1c77a03b08d7d23aee526448afbaa1c3d (diff)
downloadchromium_src-671a7148a6cf14910b08b2bf6b395d9195d208b8.zip
chromium_src-671a7148a6cf14910b08b2bf6b395d9195d208b8.tar.gz
chromium_src-671a7148a6cf14910b08b2bf6b395d9195d208b8.tar.bz2
net: Stop using base::WorkerPool from UploadFileElementReader
Pass TaskRunner to ResourceRequestBody::ResolveElementsAndCreateUploadDataStream and use it for file operations. BUG=167524 TEST=net_unittests Review URL: https://chromiumcodereview.appspot.com/11778016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176063 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r--webkit/glue/resource_request_body.cc10
-rw-r--r--webkit/glue/resource_request_body.h11
-rw-r--r--webkit/glue/resource_request_body_unittest.cc18
3 files changed, 25 insertions, 14 deletions
diff --git a/webkit/glue/resource_request_body.cc b/webkit/glue/resource_request_body.cc
index b75666f..ace0772 100644
--- a/webkit/glue/resource_request_body.cc
+++ b/webkit/glue/resource_request_body.cc
@@ -41,8 +41,10 @@ class BytesElementReader : public net::UploadBytesElementReader {
class FileElementReader : public net::UploadFileElementReader {
public:
FileElementReader(ResourceRequestBody* resource_request_body,
+ base::TaskRunner* task_runner,
const ResourceRequestBody::Element& element)
- : net::UploadFileElementReader(element.path(),
+ : net::UploadFileElementReader(task_runner,
+ element.path(),
element.offset(),
element.length(),
element.expected_modification_time()),
@@ -93,7 +95,8 @@ void ResourceRequestBody::AppendFileSystemFileRange(
net::UploadDataStream*
ResourceRequestBody::ResolveElementsAndCreateUploadDataStream(
- BlobStorageController* blob_controller) {
+ BlobStorageController* blob_controller,
+ base::TaskRunner* task_runner) {
// Resolve all blob elements.
std::vector<const Element*> resolved_elements;
for (size_t i = 0; i < elements_.size(); ++i) {
@@ -114,7 +117,8 @@ ResourceRequestBody::ResolveElementsAndCreateUploadDataStream(
element_readers.push_back(new BytesElementReader(this, element));
break;
case Element::TYPE_FILE:
- element_readers.push_back(new FileElementReader(this, element));
+ element_readers.push_back(
+ new FileElementReader(this, task_runner, element));
break;
case Element::TYPE_FILE_FILESYSTEM:
// TODO(kinuko): Resolve FileSystemURL before creating UploadData.
diff --git a/webkit/glue/resource_request_body.h b/webkit/glue/resource_request_body.h
index 1d12e07..2b830d2 100644
--- a/webkit/glue/resource_request_body.h
+++ b/webkit/glue/resource_request_body.h
@@ -13,6 +13,10 @@
#include "webkit/base/data_element.h"
#include "webkit/glue/webkit_glue_export.h"
+namespace base {
+class TaskRunner;
+}
+
namespace net {
class UploadDataStream;
}
@@ -42,10 +46,11 @@ class WEBKIT_GLUE_EXPORT ResourceRequestBody
const base::Time& expected_modification_time);
// Creates a new UploadDataStream from this request body. This also resolves
- // any blob references using given |blob_controller|.
- // TODO(kinuko): Clean up this hack.
+ // any blob references using given |blob_controller|. |task_runner| is used to
+ // perform file operations when the data gets uploaded.
net::UploadDataStream* ResolveElementsAndCreateUploadDataStream(
- webkit_blob::BlobStorageController* blob_controller);
+ webkit_blob::BlobStorageController* blob_controller,
+ base::TaskRunner* task_runner);
const std::vector<Element>* elements() const { return &elements_; }
std::vector<Element>* elements_mutable() { return &elements_; }
diff --git a/webkit/glue/resource_request_body_unittest.cc b/webkit/glue/resource_request_body_unittest.cc
index 21342f0..636b56d 100644
--- a/webkit/glue/resource_request_body_unittest.cc
+++ b/webkit/glue/resource_request_body_unittest.cc
@@ -8,6 +8,7 @@
#include "base/file_path.h"
#include "base/file_util.h"
+#include "base/message_loop_proxy.h"
#include "base/time.h"
#include "googleurl/src/gurl.h"
#include "net/base/upload_bytes_element_reader.h"
@@ -68,7 +69,8 @@ TEST(ResourceRequestBodyTest, CreateUploadDataStreamWithoutBlob) {
request_body->set_identifier(kIdentifier);
scoped_ptr<net::UploadDataStream> upload(
- request_body->ResolveElementsAndCreateUploadDataStream(NULL));
+ request_body->ResolveElementsAndCreateUploadDataStream(
+ NULL, base::MessageLoopProxy::current()));
EXPECT_EQ(kIdentifier, upload->identifier());
ASSERT_EQ(request_body->elements()->size(), upload->element_readers().size());
@@ -139,7 +141,7 @@ TEST(ResourceRequestBodyTest, ResolveBlobAndCreateUploadDataStream) {
scoped_ptr<net::UploadDataStream> upload(
request_body->ResolveElementsAndCreateUploadDataStream(
- &blob_storage_controller));
+ &blob_storage_controller, base::MessageLoopProxy::current()));
ASSERT_EQ(2U, upload->element_readers().size());
EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[0], upload_element1));
@@ -150,7 +152,7 @@ TEST(ResourceRequestBodyTest, ResolveBlobAndCreateUploadDataStream) {
request_body->AppendBlob(blob_url0);
upload.reset(request_body->ResolveElementsAndCreateUploadDataStream(
- &blob_storage_controller));
+ &blob_storage_controller, base::MessageLoopProxy::current()));
ASSERT_EQ(0U, upload->element_readers().size());
// Test having only one blob reference.
@@ -158,7 +160,7 @@ TEST(ResourceRequestBodyTest, ResolveBlobAndCreateUploadDataStream) {
request_body->AppendBlob(blob_url1);
upload.reset(request_body->ResolveElementsAndCreateUploadDataStream(
- &blob_storage_controller));
+ &blob_storage_controller, base::MessageLoopProxy::current()));
ASSERT_EQ(2U, upload->element_readers().size());
EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[0], blob_element1));
EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[1], blob_element2));
@@ -173,7 +175,7 @@ TEST(ResourceRequestBodyTest, ResolveBlobAndCreateUploadDataStream) {
upload_element2.expected_modification_time());
upload.reset(request_body->ResolveElementsAndCreateUploadDataStream(
- &blob_storage_controller));
+ &blob_storage_controller, base::MessageLoopProxy::current()));
ASSERT_EQ(4U, upload->element_readers().size());
EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[0], blob_element1));
EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[1], blob_element2));
@@ -190,7 +192,7 @@ TEST(ResourceRequestBodyTest, ResolveBlobAndCreateUploadDataStream) {
request_body->AppendBlob(blob_url1);
upload.reset(request_body->ResolveElementsAndCreateUploadDataStream(
- &blob_storage_controller));
+ &blob_storage_controller, base::MessageLoopProxy::current()));
ASSERT_EQ(4U, upload->element_readers().size());
EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[0], upload_element1));
EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[1], upload_element2));
@@ -207,7 +209,7 @@ TEST(ResourceRequestBodyTest, ResolveBlobAndCreateUploadDataStream) {
upload_element2.expected_modification_time());
upload.reset(request_body->ResolveElementsAndCreateUploadDataStream(
- &blob_storage_controller));
+ &blob_storage_controller, base::MessageLoopProxy::current()));
ASSERT_EQ(4U, upload->element_readers().size());
EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[0], upload_element1));
EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[1], blob_element1));
@@ -226,7 +228,7 @@ TEST(ResourceRequestBodyTest, ResolveBlobAndCreateUploadDataStream) {
upload_element2.expected_modification_time());
upload.reset(request_body->ResolveElementsAndCreateUploadDataStream(
- &blob_storage_controller));
+ &blob_storage_controller, base::MessageLoopProxy::current()));
ASSERT_EQ(8U, upload->element_readers().size());
EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[0], blob_element1));
EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[1], blob_element2));