Index: net/url_request/url_fetcher_impl_unittest.cc |
diff --git a/net/url_request/url_fetcher_impl_unittest.cc b/net/url_request/url_fetcher_impl_unittest.cc |
index c8cbd1ac6f6c4389c8f52a4c74b338569a0434f7..768ad9551a101c6db030c252fb212469b063cf9e 100644 |
--- a/net/url_request/url_fetcher_impl_unittest.cc |
+++ b/net/url_request/url_fetcher_impl_unittest.cc |
@@ -4,6 +4,7 @@ |
#include "net/url_request/url_fetcher_impl.h" |
+#include <algorithm> |
#include <string> |
#include "base/bind.h" |
@@ -243,6 +244,11 @@ class URLFetcherPostFileTest : public URLFetcherTest { |
public: |
URLFetcherPostFileTest(); |
+ void SetUploadRange(uint64 range_offset, uint64 range_length) { |
+ range_offset_ = range_offset; |
+ range_length_ = range_length; |
+ } |
+ |
// URLFetcherTest: |
virtual void CreateFetcher(const GURL& url) OVERRIDE; |
@@ -251,6 +257,8 @@ class URLFetcherPostFileTest : public URLFetcherTest { |
private: |
base::FilePath path_; |
+ uint64 range_offset_; |
+ uint64 range_length_; |
}; |
// Version of URLFetcherTest that does a POST instead with empty upload body |
@@ -524,7 +532,9 @@ void URLFetcherPostTest::OnURLFetchComplete(const URLFetcher* source) { |
URLFetcherTest::OnURLFetchComplete(source); |
} |
-URLFetcherPostFileTest::URLFetcherPostFileTest() { |
+URLFetcherPostFileTest::URLFetcherPostFileTest() |
+ : range_offset_(0), |
+ range_length_(kuint64max) { |
PathService::Get(base::DIR_SOURCE_ROOT, &path_); |
path_ = path_.Append(FILE_PATH_LITERAL("net")); |
path_ = path_.Append(FILE_PATH_LITERAL("data")); |
@@ -538,19 +548,22 @@ void URLFetcherPostFileTest::CreateFetcher(const GURL& url) { |
io_message_loop_proxy(), request_context())); |
fetcher_->SetUploadFilePath("application/x-www-form-urlencoded", |
path_, |
+ range_offset_, |
+ range_length_, |
base::MessageLoopProxy::current()); |
fetcher_->Start(); |
} |
void URLFetcherPostFileTest::OnURLFetchComplete(const URLFetcher* source) { |
- int64 size = 0; |
- ASSERT_EQ(true, file_util::GetFileSize(path_, &size)); |
- scoped_ptr<char[]> expected(new char[size]); |
- ASSERT_EQ(size, file_util::ReadFile(path_, expected.get(), size)); |
+ std::string expected; |
+ ASSERT_TRUE(file_util::ReadFileToString(path_, &expected)); |
+ ASSERT_LE(range_offset_, expected.size()); |
+ uint64 expected_size = |
+ std::min(range_length_, expected.size() - range_offset_); |
std::string data; |
EXPECT_TRUE(source->GetResponseAsString(&data)); |
- EXPECT_EQ(std::string(&expected[0], size), data); |
+ EXPECT_EQ(expected.substr(range_offset_, expected_size), data); |
URLFetcherTest::OnURLFetchComplete(source); |
} |
@@ -1063,6 +1076,18 @@ TEST_F(URLFetcherPostFileTest, Basic) { |
MessageLoop::current()->Run(); |
} |
+TEST_F(URLFetcherPostFileTest, Range) { |
+ TestServer test_server(TestServer::TYPE_HTTP, |
+ TestServer::kLocalhost, |
+ base::FilePath(kDocRoot)); |
+ ASSERT_TRUE(test_server.Start()); |
+ |
+ SetUploadRange(30, 100); |
+ |
+ CreateFetcher(test_server.GetURL("echo")); |
+ MessageLoop::current()->Run(); |
+} |
+ |
TEST_F(URLFetcherEmptyPostTest, Basic) { |
TestServer test_server(TestServer::TYPE_HTTP, |
TestServer::kLocalhost, |