Chromium Code Reviews| Index: net/url_request/url_request_file_job_unittest.cc |
| diff --git a/net/url_request/url_request_file_job_unittest.cc b/net/url_request/url_request_file_job_unittest.cc |
| index 23ded74576470dd28d704281b29aaced0cc801e5..376faa6c420a03ee61a7b4bef1f59c0af8151789 100644 |
| --- a/net/url_request/url_request_file_job_unittest.cc |
| +++ b/net/url_request/url_request_file_job_unittest.cc |
| @@ -16,6 +16,10 @@ |
| #include "net/url_request/url_request_test_util.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +#if defined(OS_ANDROID) |
| +#include "base/test/test_file_util.h" |
| +#endif |
| + |
| namespace net { |
| namespace { |
| @@ -96,6 +100,9 @@ class CallbacksJobFactory : public URLRequestJobFactory { |
| } |
| bool IsHandledProtocol(const std::string& scheme) const override { |
| +#if defined(OS_ANDROID) |
| + return scheme == "file" || scheme == "content"; |
| +#endif |
| return scheme == "file"; |
| } |
| @@ -172,6 +179,14 @@ class URLRequestFileJobEventsTest : public testing::Test { |
| // observed. |
| void RunRequest(const std::string& content, const Range* range); |
| + |
| + // Helper methods called by RunRequest to run the url request and verify |
| + // the returned results. |
| + void RunRequestInternal(const base::FilePath& path, |
| + const Range* range); |
| + void VerifyResult(const std::string& content, |
| + const Range* range); |
| + |
| JobObserverImpl observer_; |
| TestURLRequestContext context_; |
| TestDelegate delegate_; |
| @@ -185,6 +200,15 @@ void URLRequestFileJobEventsTest::RunRequest(const std::string& content, |
| ASSERT_TRUE(directory.CreateUniqueTempDir()); |
| base::FilePath path; |
| ASSERT_TRUE(CreateTempFileWithContent(content, directory, &path)); |
| + if (range) |
| + ASSERT_LT(static_cast<unsigned int>(range->end), content.length()); |
|
asanka
2014/11/21 02:22:02
Why not test the behavior when a range request ext
|
| + RunRequestInternal(path, range); |
| + VerifyResult(content, range); |
| +} |
| + |
| +void URLRequestFileJobEventsTest::RunRequestInternal( |
| + const base::FilePath& path, |
| + const Range* range) { |
| CallbacksJobFactory factory(path, &observer_); |
| context_.set_job_factory(&factory); |
| @@ -194,7 +218,6 @@ void URLRequestFileJobEventsTest::RunRequest(const std::string& content, |
| ASSERT_GE(range->start, 0); |
| ASSERT_GE(range->end, 0); |
| ASSERT_LE(range->start, range->end); |
| - ASSERT_LT(static_cast<unsigned int>(range->end), content.length()); |
| std::string range_value = |
| base::StringPrintf("bytes=%d-%d", range->start, range->end); |
| request->SetExtraRequestHeaderByName( |
| @@ -204,6 +227,10 @@ void URLRequestFileJobEventsTest::RunRequest(const std::string& content, |
| base::RunLoop loop; |
| loop.Run(); |
| +} |
| + |
| +void URLRequestFileJobEventsTest::VerifyResult(const std::string& content, |
| + const Range* range) { |
|
asanka
2014/11/21 02:22:02
extra whitespace.
|
| EXPECT_FALSE(delegate_.request_failed()); |
| int expected_length = |
| @@ -264,6 +291,31 @@ TEST_F(URLRequestFileJobEventsTest, Range) { |
| RunRequest(MakeContentOfSize(size), &range); |
| } |
| +#if defined(OS_ANDROID) |
| +TEST_F(URLRequestFileJobEventsTest, ContentUriFile) { |
| + base::FilePath test_dir; |
| + PathService::Get(base::DIR_SOURCE_ROOT, &test_dir); |
| + test_dir = test_dir.AppendASCII("net"); |
| + test_dir = test_dir.AppendASCII("data"); |
| + test_dir = test_dir.AppendASCII("url_request_unittest"); |
| + ASSERT_TRUE(base::PathExists(test_dir)); |
| + base::FilePath image_file = test_dir.Append(FILE_PATH_LITERAL("red.png")); |
| + |
| + // Insert the image into MediaStore. MediaStore will do some conversions, and |
| + // return the content URI. |
| + base::FilePath path = base::InsertImageIntoMediaStore(image_file); |
| + EXPECT_TRUE(path.IsContentUri()); |
| + EXPECT_TRUE(base::PathExists(path)); |
| + int64 file_size; |
| + EXPECT_TRUE(base::GetFileSize(path, &file_size)); |
| + EXPECT_LT(0, file_size); |
| + |
| + RunRequestInternal(path, NULL); |
|
asanka
2014/11/21 02:22:02
This doesn't run the test with a content:// URI, d
|
| + EXPECT_FALSE(delegate_.request_failed()); |
| + EXPECT_EQ(delegate_.bytes_received(), file_size); |
|
asanka
2014/11/21 02:22:02
Assuming the test will still look like this, the r
|
| +} |
| +#endif |
| + |
| } // namespace |
| } // namespace net |