diff options
author | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-27 08:00:47 +0000 |
---|---|---|
committer | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-27 08:00:47 +0000 |
commit | 748b0ad3c5c63638ec75f20ffa8fdaf8bf973488 (patch) | |
tree | b699ea9624c98a4480a10d524c10bb5527aeb5ce /webkit/glue | |
parent | fe352a0590f75d503eecd8f788b7b80acf511c6d (diff) | |
download | chromium_src-748b0ad3c5c63638ec75f20ffa8fdaf8bf973488.zip chromium_src-748b0ad3c5c63638ec75f20ffa8fdaf8bf973488.tar.gz chromium_src-748b0ad3c5c63638ec75f20ffa8fdaf8bf973488.tar.bz2 |
Move some classes out of webkit/glue/.
Review URL: https://chromiumcodereview.appspot.com/16831010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@208865 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r-- | webkit/glue/resource_loader_bridge.cc | 19 | ||||
-rw-r--r-- | webkit/glue/resource_loader_bridge.h | 109 | ||||
-rw-r--r-- | webkit/glue/resource_request_body.cc | 174 | ||||
-rw-r--r-- | webkit/glue/resource_request_body.h | 93 | ||||
-rw-r--r-- | webkit/glue/resource_request_body_unittest.cc | 248 | ||||
-rw-r--r-- | webkit/glue/webkit_glue.gypi | 2 | ||||
-rw-r--r-- | webkit/glue/weburlloader_impl.cc | 2 |
7 files changed, 2 insertions, 645 deletions
diff --git a/webkit/glue/resource_loader_bridge.cc b/webkit/glue/resource_loader_bridge.cc index f3b89b3..4d8eabe 100644 --- a/webkit/glue/resource_loader_bridge.cc +++ b/webkit/glue/resource_loader_bridge.cc @@ -9,25 +9,6 @@ namespace webkit_glue { -ResourceDevToolsInfo::ResourceDevToolsInfo() - : http_status_code(0) { -} - -ResourceDevToolsInfo::~ResourceDevToolsInfo() {} - -ResourceResponseInfo::ResourceResponseInfo() - : content_length(-1), - encoded_data_length(-1), - appcache_id(appcache::kNoCacheId), - was_fetched_via_spdy(false), - was_npn_negotiated(false), - was_alternate_protocol_available(false), - connection_info(net::HttpResponseInfo::CONNECTION_INFO_UNKNOWN), - was_fetched_via_proxy(false) { -} - -ResourceResponseInfo::~ResourceResponseInfo() {} - ResourceLoaderBridge::RequestInfo::RequestInfo() : referrer_policy(WebKit::WebReferrerPolicyDefault), load_flags(0), diff --git a/webkit/glue/resource_loader_bridge.h b/webkit/glue/resource_loader_bridge.h index 5f1aee6..2536c47 100644 --- a/webkit/glue/resource_loader_bridge.h +++ b/webkit/glue/resource_loader_bridge.h @@ -17,132 +17,25 @@ #define WEBKIT_GLUE_RESOURCE_LOADER_BRIDGE_H_ #include <utility> -#include <vector> #include "build/build_config.h" #if defined(OS_POSIX) #include "base/file_descriptor_posix.h" #endif -#include "base/files/file_path.h" #include "base/memory/ref_counted.h" #include "base/platform_file.h" -#include "base/time.h" #include "base/values.h" #include "googleurl/src/gurl.h" -#include "net/base/host_port_pair.h" -#include "net/base/load_timing_info.h" #include "net/base/request_priority.h" -#include "net/http/http_response_info.h" -#include "net/url_request/url_request_status.h" #include "third_party/WebKit/public/platform/WebReferrerPolicy.h" #include "third_party/WebKit/public/platform/WebURLRequest.h" +#include "webkit/common/resource_response_info.h" #include "webkit/glue/resource_type.h" #include "webkit/glue/webkit_glue_export.h" -namespace net { -class HttpResponseHeaders; -} - namespace webkit_glue { class ResourceRequestBody; -struct ResourceDevToolsInfo : base::RefCounted<ResourceDevToolsInfo> { - typedef std::vector<std::pair<std::string, std::string> > - HeadersVector; - - WEBKIT_GLUE_EXPORT ResourceDevToolsInfo(); - - int32 http_status_code; - std::string http_status_text; - HeadersVector request_headers; - HeadersVector response_headers; - std::string request_headers_text; - std::string response_headers_text; - - private: - friend class base::RefCounted<ResourceDevToolsInfo>; - WEBKIT_GLUE_EXPORT ~ResourceDevToolsInfo(); -}; - -struct ResourceResponseInfo { - WEBKIT_GLUE_EXPORT ResourceResponseInfo(); - WEBKIT_GLUE_EXPORT ~ResourceResponseInfo(); - - // The time at which the request was made that resulted in this response. - // For cached responses, this time could be "far" in the past. - base::Time request_time; - - // The time at which the response headers were received. For cached - // responses, this time could be "far" in the past. - base::Time response_time; - - // The response headers or NULL if the URL type does not support headers. - scoped_refptr<net::HttpResponseHeaders> headers; - - // The mime type of the response. This may be a derived value. - std::string mime_type; - - // The character encoding of the response or none if not applicable to the - // response's mime type. This may be a derived value. - std::string charset; - - // An opaque string carrying security information pertaining to this - // response. This may include information about the SSL connection used. - std::string security_info; - - // Content length if available. -1 if not available - int64 content_length; - - // Length of the encoded data transferred over the network. In case there is - // no data, contains -1. - int64 encoded_data_length; - - // The appcache this response was loaded from, or kNoCacheId. - int64 appcache_id; - - // The manifest url of the appcache this response was loaded from. - // Note: this value is only populated for main resource requests. - GURL appcache_manifest_url; - - // Detailed timing information used by the WebTiming, HAR and Developer - // Tools. Includes socket ID and socket reuse information. - net::LoadTimingInfo load_timing; - - // Actual request and response headers, as obtained from the network stack. - // Only present if request had LOAD_REPORT_RAW_HEADERS in load_flags, and - // requesting renderer had CanReadRowCookies permission. - scoped_refptr<ResourceDevToolsInfo> devtools_info; - - // The path to a file that will contain the response body. It may only - // contain a portion of the response body at the time that the ResponseInfo - // becomes available. - base::FilePath download_file_path; - - // True if the response was delivered using SPDY. - bool was_fetched_via_spdy; - - // True if the response was delivered after NPN is negotiated. - bool was_npn_negotiated; - - // True if response could use alternate protocol. However, browser will - // ignore the alternate protocol when spdy is not enabled on browser side. - bool was_alternate_protocol_available; - - // Information about the type of connection used to fetch this response. - net::HttpResponseInfo::ConnectionInfo connection_info; - - // True if the response was fetched via an explicit proxy (as opposed to a - // transparent proxy). The proxy could be any type of proxy, HTTP or SOCKS. - // Note: we cannot tell if a transparent proxy may have been involved. - bool was_fetched_via_proxy; - - // NPN protocol negotiated with the server. - std::string npn_negotiated_protocol; - - // Remote address of the socket which fetched this resource. - net::HostPortPair socket_address; -}; - class ResourceLoaderBridge { public: // Structure used when calling diff --git a/webkit/glue/resource_request_body.cc b/webkit/glue/resource_request_body.cc deleted file mode 100644 index 2bde26d..0000000 --- a/webkit/glue/resource_request_body.cc +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "webkit/glue/resource_request_body.h" - -#include "base/logging.h" -#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/browser/blob/blob_storage_controller.h" -#include "webkit/browser/fileapi/upload_file_system_file_element_reader.h" - -using webkit_blob::BlobData; -using webkit_blob::BlobStorageController; - -namespace webkit_glue { - -namespace { - -// A subclass of net::UploadBytesElementReader which owns ResourceRequestBody. -class BytesElementReader : public net::UploadBytesElementReader { - public: - BytesElementReader(ResourceRequestBody* resource_request_body, - const ResourceRequestBody::Element& element) - : net::UploadBytesElementReader(element.bytes(), element.length()), - resource_request_body_(resource_request_body) { - DCHECK_EQ(ResourceRequestBody::Element::TYPE_BYTES, element.type()); - } - - virtual ~BytesElementReader() {} - - private: - scoped_refptr<ResourceRequestBody> resource_request_body_; - - DISALLOW_COPY_AND_ASSIGN(BytesElementReader); -}; - -// A subclass of net::UploadFileElementReader which owns ResourceRequestBody. -// This class is necessary to ensure the BlobData and any attached shareable -// files survive until upload completion. -class FileElementReader : public net::UploadFileElementReader { - public: - FileElementReader(ResourceRequestBody* resource_request_body, - base::TaskRunner* task_runner, - const ResourceRequestBody::Element& element) - : net::UploadFileElementReader(task_runner, - element.path(), - element.offset(), - element.length(), - element.expected_modification_time()), - resource_request_body_(resource_request_body) { - DCHECK_EQ(ResourceRequestBody::Element::TYPE_FILE, element.type()); - } - - virtual ~FileElementReader() {} - - private: - scoped_refptr<ResourceRequestBody> resource_request_body_; - - DISALLOW_COPY_AND_ASSIGN(FileElementReader); -}; - -} // namespace - -ResourceRequestBody::ResourceRequestBody() : identifier_(0) {} - -void ResourceRequestBody::AppendBytes(const char* bytes, int bytes_len) { - if (bytes_len > 0) { - elements_.push_back(Element()); - elements_.back().SetToBytes(bytes, bytes_len); - } -} - -void ResourceRequestBody::AppendFileRange( - const base::FilePath& file_path, - uint64 offset, uint64 length, - const base::Time& expected_modification_time) { - elements_.push_back(Element()); - elements_.back().SetToFilePathRange(file_path, offset, length, - expected_modification_time); -} - -void ResourceRequestBody::AppendBlob(const GURL& blob_url) { - elements_.push_back(Element()); - elements_.back().SetToBlobUrl(blob_url); -} - -void ResourceRequestBody::AppendFileSystemFileRange( - const GURL& url, uint64 offset, uint64 length, - const base::Time& expected_modification_time) { - elements_.push_back(Element()); - elements_.back().SetToFileSystemUrlRange(url, offset, length, - expected_modification_time); -} - -net::UploadDataStream* -ResourceRequestBody::ResolveElementsAndCreateUploadDataStream( - BlobStorageController* blob_controller, - fileapi::FileSystemContext* file_system_context, - base::TaskRunner* file_task_runner) { - // Resolve all blob elements. - std::vector<const Element*> resolved_elements; - 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); - } else { - // No need to resolve, just append the element. - resolved_elements.push_back(&element); - } - } - - ScopedVector<net::UploadElementReader> element_readers; - for (size_t i = 0; i < resolved_elements.size(); ++i) { - const Element& element = *resolved_elements[i]; - switch (element.type()) { - case Element::TYPE_BYTES: - element_readers.push_back(new BytesElementReader(this, element)); - break; - case Element::TYPE_FILE: - element_readers.push_back( - new FileElementReader(this, file_task_runner, element)); - break; - case Element::TYPE_FILE_FILESYSTEM: - element_readers.push_back( - new fileapi::UploadFileSystemFileElementReader( - file_system_context, - element.url(), - element.offset(), - element.length(), - element.expected_modification_time())); - break; - case Element::TYPE_BLOB: - // Blob elements should be resolved beforehand. - NOTREACHED(); - break; - case Element::TYPE_UNKNOWN: - NOTREACHED(); - break; - } - } - return new net::UploadDataStream(&element_readers, identifier_); -} - -ResourceRequestBody::~ResourceRequestBody() {} - -void ResourceRequestBody::ResolveBlobReference( - webkit_blob::BlobStorageController* blob_controller, - const GURL& blob_url, - std::vector<const Element*>* resolved_elements) { - DCHECK(blob_controller); - BlobData* blob_data = blob_controller->GetBlobDataFromUrl(blob_url); - DCHECK(blob_data); - if (!blob_data) - return; - - // If there is no element in the referred blob data, just return. - if (blob_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); - DCHECK_NE(BlobData::Item::TYPE_BLOB, item.type()); - resolved_elements->push_back(&item); - } -} - -} // namespace webkit_glue diff --git a/webkit/glue/resource_request_body.h b/webkit/glue/resource_request_body.h deleted file mode 100644 index 71a0495..0000000 --- a/webkit/glue/resource_request_body.h +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef WEBKIT_GLUE_RESOURCE_REQUEST_BODY_H_ -#define WEBKIT_GLUE_RESOURCE_REQUEST_BODY_H_ - -#include <vector> - -#include "base/basictypes.h" -#include "base/memory/ref_counted.h" -#include "base/supports_user_data.h" -#include "webkit/base/data_element.h" -#include "webkit/glue/webkit_glue_export.h" - -namespace base { -class FilePath; -class TaskRunner; -} - -namespace fileapi { -class FileSystemContext; -} - -namespace net { -class UploadDataStream; -} - -namespace webkit_blob { -class BlobStorageController; -} - -namespace webkit_glue { - -// A struct used to represent upload data. The data field is populated by -// WebURLLoader from the data given as WebHTTPBody. -class WEBKIT_GLUE_EXPORT ResourceRequestBody - : public base::RefCounted<ResourceRequestBody>, - public base::SupportsUserData { - public: - typedef webkit_base::DataElement Element; - - ResourceRequestBody(); - - void AppendBytes(const char* bytes, int bytes_len); - void AppendFileRange(const base::FilePath& file_path, - uint64 offset, uint64 length, - const base::Time& expected_modification_time); - void AppendBlob(const GURL& blob_url); - void AppendFileSystemFileRange(const GURL& url, uint64 offset, uint64 length, - const base::Time& expected_modification_time); - - // Creates a new UploadDataStream from this request body. This also resolves - // any blob references using given |blob_controller|. |file_system_context| is - // used to create FileStreamReader for files with filesystem URLs. - // |file_task_runner| is used to perform file operations when the data gets - // uploaded. - net::UploadDataStream* ResolveElementsAndCreateUploadDataStream( - webkit_blob::BlobStorageController* blob_controller, - fileapi::FileSystemContext* file_system_context, - base::TaskRunner* file_task_runner); - - const std::vector<Element>* elements() const { return &elements_; } - std::vector<Element>* elements_mutable() { return &elements_; } - void swap_elements(std::vector<Element>* elements) { - elements_.swap(*elements); - } - - // Identifies a particular upload instance, which is used by the cache to - // formulate a cache key. This value should be unique across browser - // sessions. A value of 0 is used to indicate an unspecified identifier. - void set_identifier(int64 id) { identifier_ = id; } - int64 identifier() const { return identifier_; } - - private: - friend class base::RefCounted<ResourceRequestBody>; - virtual ~ResourceRequestBody(); - - // Resolves the |blob_url| using |blob_controller| and appends resolved - // items to |resolved_elements|. - void ResolveBlobReference(webkit_blob::BlobStorageController* blob_controller, - const GURL& blob_url, - std::vector<const Element*>* resolved_elements); - - std::vector<Element> elements_; - int64 identifier_; - - DISALLOW_COPY_AND_ASSIGN(ResourceRequestBody); -}; - -} // namespace webkit_glue - -#endif // WEBKIT_GLUE_RESOURCE_REQUEST_BODY_H_ diff --git a/webkit/glue/resource_request_body_unittest.cc b/webkit/glue/resource_request_body_unittest.cc deleted file mode 100644 index 523b7dc..0000000 --- a/webkit/glue/resource_request_body_unittest.cc +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "webkit/glue/resource_request_body.h" - -#include <algorithm> - -#include "base/file_util.h" -#include "base/files/file_path.h" -#include "base/message_loop.h" -#include "base/message_loop/message_loop_proxy.h" -#include "base/time.h" -#include "googleurl/src/gurl.h" -#include "net/base/upload_bytes_element_reader.h" -#include "net/base/upload_data_stream.h" -#include "net/base/upload_file_element_reader.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "webkit/browser/blob/blob_storage_controller.h" - -using webkit_blob::BlobData; -using webkit_blob::BlobStorageController; - -namespace webkit_glue { - -namespace { - -bool AreElementsEqual(const net::UploadElementReader& reader, - const ResourceRequestBody::Element& element) { - switch(element.type()) { - case ResourceRequestBody::Element::TYPE_BYTES: { - const net::UploadBytesElementReader* bytes_reader = - reader.AsBytesReader(); - return bytes_reader && - element.length() == bytes_reader->length() && - std::equal(element.bytes(), element.bytes() + element.length(), - bytes_reader->bytes()); - } - case ResourceRequestBody::Element::TYPE_FILE: { - const net::UploadFileElementReader* file_reader = reader.AsFileReader(); - return file_reader && - file_reader->path() == element.path() && - file_reader->range_offset() == element.offset() && - file_reader->range_length() == element.length() && - file_reader->expected_modification_time() == - element.expected_modification_time(); - break; - } - default: - NOTREACHED(); - } - return false; -} - -} // namespace - -TEST(ResourceRequestBodyTest, CreateUploadDataStreamWithoutBlob) { - base::MessageLoop message_loop; - scoped_refptr<ResourceRequestBody> request_body = new ResourceRequestBody; - - const char kData[] = "123"; - const base::FilePath::StringType kFilePath = FILE_PATH_LITERAL("abc"); - const uint64 kFileOffset = 10U; - const uint64 kFileLength = 100U; - const base::Time kFileTime = base::Time::FromDoubleT(999); - const int64 kIdentifier = 12345; - - request_body->AppendBytes(kData, arraysize(kData) - 1); - request_body->AppendFileRange(base::FilePath(kFilePath), - kFileOffset, kFileLength, kFileTime); - request_body->set_identifier(kIdentifier); - - scoped_ptr<net::UploadDataStream> upload( - request_body->ResolveElementsAndCreateUploadDataStream( - NULL, NULL, base::MessageLoopProxy::current().get())); - - EXPECT_EQ(kIdentifier, upload->identifier()); - ASSERT_EQ(request_body->elements()->size(), upload->element_readers().size()); - - const net::UploadBytesElementReader* r1 = - upload->element_readers()[0]->AsBytesReader(); - ASSERT_TRUE(r1); - EXPECT_EQ(kData, std::string(r1->bytes(), r1->length())); - - const net::UploadFileElementReader* r2 = - upload->element_readers()[1]->AsFileReader(); - ASSERT_TRUE(r2); - EXPECT_EQ(kFilePath, r2->path().value()); - EXPECT_EQ(kFileOffset, r2->range_offset()); - EXPECT_EQ(kFileLength, r2->range_length()); - EXPECT_EQ(kFileTime, r2->expected_modification_time()); -} - -TEST(ResourceRequestBodyTest, ResolveBlobAndCreateUploadDataStream) { - base::MessageLoop message_loop; - // Setup blob data for testing. - base::Time time1, time2; - base::Time::FromString("Tue, 15 Nov 1994, 12:45:26 GMT", &time1); - base::Time::FromString("Mon, 14 Nov 1994, 11:30:49 GMT", &time2); - - BlobStorageController blob_storage_controller; - scoped_refptr<BlobData> blob_data(new BlobData()); - - GURL blob_url0("blob://url_0"); - blob_storage_controller.AddFinishedBlob(blob_url0, blob_data.get()); - - blob_data->AppendData("BlobData"); - blob_data->AppendFile( - base::FilePath(FILE_PATH_LITERAL("BlobFile.txt")), 0, 20, time1); - - GURL blob_url1("blob://url_1"); - blob_storage_controller.AddFinishedBlob(blob_url1, blob_data.get()); - - GURL blob_url2("blob://url_2"); - blob_storage_controller.CloneBlob(blob_url2, blob_url1); - - GURL blob_url3("blob://url_3"); - blob_storage_controller.CloneBlob(blob_url3, blob_url2); - - // Setup upload data elements for comparison. - ResourceRequestBody::Element blob_element1, blob_element2; - blob_element1.SetToBytes( - blob_data->items().at(0).bytes() + - static_cast<int>(blob_data->items().at(0).offset()), - static_cast<int>(blob_data->items().at(0).length())); - blob_element2.SetToFilePathRange( - blob_data->items().at(1).path(), - blob_data->items().at(1).offset(), - blob_data->items().at(1).length(), - blob_data->items().at(1).expected_modification_time()); - - ResourceRequestBody::Element upload_element1, upload_element2; - upload_element1.SetToBytes("Hello", 5); - upload_element2.SetToFilePathRange( - base::FilePath(FILE_PATH_LITERAL("foo1.txt")), 0, 20, time2); - - // Test no blob reference. - scoped_refptr<ResourceRequestBody> request_body(new ResourceRequestBody()); - request_body->AppendBytes(upload_element1.bytes(), upload_element1.length()); - request_body->AppendFileRange(upload_element2.path(), - upload_element2.offset(), - upload_element2.length(), - upload_element2.expected_modification_time()); - - scoped_ptr<net::UploadDataStream> upload( - request_body->ResolveElementsAndCreateUploadDataStream( - &blob_storage_controller, - NULL, - base::MessageLoopProxy::current().get())); - - ASSERT_EQ(2U, upload->element_readers().size()); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[0], upload_element1)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[1], upload_element2)); - - // Test having only one blob reference that refers to empty blob data. - request_body = new ResourceRequestBody(); - request_body->AppendBlob(blob_url0); - - upload.reset(request_body->ResolveElementsAndCreateUploadDataStream( - &blob_storage_controller, NULL, base::MessageLoopProxy::current().get())); - ASSERT_EQ(0U, upload->element_readers().size()); - - // Test having only one blob reference. - request_body = new ResourceRequestBody(); - request_body->AppendBlob(blob_url1); - - upload.reset(request_body->ResolveElementsAndCreateUploadDataStream( - &blob_storage_controller, NULL, base::MessageLoopProxy::current().get())); - 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)); - - // Test having one blob reference at the beginning. - request_body = new ResourceRequestBody(); - request_body->AppendBlob(blob_url1); - request_body->AppendBytes(upload_element1.bytes(), upload_element1.length()); - request_body->AppendFileRange(upload_element2.path(), - upload_element2.offset(), - upload_element2.length(), - upload_element2.expected_modification_time()); - - upload.reset(request_body->ResolveElementsAndCreateUploadDataStream( - &blob_storage_controller, NULL, base::MessageLoopProxy::current().get())); - 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)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[2], upload_element1)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[3], upload_element2)); - - // Test having one blob reference at the end. - request_body = new ResourceRequestBody(); - request_body->AppendBytes(upload_element1.bytes(), upload_element1.length()); - request_body->AppendFileRange(upload_element2.path(), - upload_element2.offset(), - upload_element2.length(), - upload_element2.expected_modification_time()); - request_body->AppendBlob(blob_url1); - - upload.reset(request_body->ResolveElementsAndCreateUploadDataStream( - &blob_storage_controller, NULL, base::MessageLoopProxy::current().get())); - 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)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[2], blob_element1)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[3], blob_element2)); - - // Test having one blob reference in the middle. - request_body = new ResourceRequestBody(); - request_body->AppendBytes(upload_element1.bytes(), upload_element1.length()); - request_body->AppendBlob(blob_url1); - request_body->AppendFileRange(upload_element2.path(), - upload_element2.offset(), - upload_element2.length(), - upload_element2.expected_modification_time()); - - upload.reset(request_body->ResolveElementsAndCreateUploadDataStream( - &blob_storage_controller, NULL, base::MessageLoopProxy::current().get())); - 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)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[2], blob_element2)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[3], upload_element2)); - - // Test having multiple blob references. - request_body = new ResourceRequestBody(); - request_body->AppendBlob(blob_url1); - request_body->AppendBytes(upload_element1.bytes(), upload_element1.length()); - request_body->AppendBlob(blob_url2); - request_body->AppendBlob(blob_url3); - request_body->AppendFileRange(upload_element2.path(), - upload_element2.offset(), - upload_element2.length(), - upload_element2.expected_modification_time()); - - upload.reset(request_body->ResolveElementsAndCreateUploadDataStream( - &blob_storage_controller, NULL, base::MessageLoopProxy::current().get())); - 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)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[2], upload_element1)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[3], blob_element1)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[4], blob_element2)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[5], blob_element1)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[6], blob_element2)); - EXPECT_TRUE(AreElementsEqual(*upload->element_readers()[7], upload_element2)); -} - -} // namespace webkit_glue diff --git a/webkit/glue/webkit_glue.gypi b/webkit/glue/webkit_glue.gypi index aabdebf..4b764a0 100644 --- a/webkit/glue/webkit_glue.gypi +++ b/webkit/glue/webkit_glue.gypi @@ -278,8 +278,6 @@ 'network_list_observer.h', 'resource_loader_bridge.cc', 'resource_loader_bridge.h', - 'resource_request_body.cc', - 'resource_request_body.h', 'resource_type.cc', 'resource_type.h', 'simple_webmimeregistry_impl.cc', diff --git a/webkit/glue/weburlloader_impl.cc b/webkit/glue/weburlloader_impl.cc index 3d701c7..e8a3eae 100644 --- a/webkit/glue/weburlloader_impl.cc +++ b/webkit/glue/weburlloader_impl.cc @@ -29,10 +29,10 @@ #include "third_party/WebKit/public/platform/WebURLRequest.h" #include "third_party/WebKit/public/platform/WebURLResponse.h" #include "third_party/WebKit/public/web/WebSecurityPolicy.h" +#include "webkit/common/resource_request_body.h" #include "webkit/glue/ftp_directory_listing_response_delegate.h" #include "webkit/glue/multipart_response_delegate.h" #include "webkit/glue/resource_loader_bridge.h" -#include "webkit/glue/resource_request_body.h" #include "webkit/glue/webkitplatformsupport_impl.h" #include "webkit/glue/weburlrequest_extradata_impl.h" #include "webkit/glue/weburlresponse_extradata_impl.h" |