| Index: google_apis/drive/drive_api_requests_unittest.cc
|
| diff --git a/google_apis/drive/drive_api_requests_unittest.cc b/google_apis/drive/drive_api_requests_unittest.cc
|
| index 234a70f843be5a1cdbfe98c011dbb0065a202865..12af78b0742c7553334e8157900ccf090abebf8f 100644
|
| --- a/google_apis/drive/drive_api_requests_unittest.cc
|
| +++ b/google_apis/drive/drive_api_requests_unittest.cc
|
| @@ -87,14 +87,26 @@ class TestBatchableRequest : public BatchableRequestBase {
|
| upload_content->assign(content_data_);
|
| return true;
|
| }
|
| + void OnURLFetchUploadProgress(const net::URLFetcher* source,
|
| + int64 current,
|
| + int64 total) override {
|
| + progress_values_.push_back(current);
|
| + }
|
| + const std::vector<int64>& progress_values() const { return progress_values_; }
|
|
|
| private:
|
| GURL url_;
|
| std::string content_type_;
|
| std::string content_data_;
|
| base::Closure callback_;
|
| + std::vector<int64> progress_values_;
|
| };
|
|
|
| +void EmptyPreapreCallback(DriveApiErrorCode) {
|
| +}
|
| +void EmptyClosure() {
|
| +}
|
| +
|
| } // namespace
|
|
|
| class DriveApiRequestsTest : public testing::Test {
|
| @@ -2072,8 +2084,7 @@ TEST_F(DriveApiRequestsTest, BatchUploadRequestWithBodyIncludingZero) {
|
| base::RunLoop loop;
|
| TestBatchableRequest* child_request = new TestBatchableRequest(
|
| request_sender_.get(), GURL("http://example.com/test"),
|
| - "application/binary",
|
| - std::string("Apple\0Orange\0", 13),
|
| + "application/binary", std::string("Apple\0Orange\0", 13),
|
| loop.QuitClosure());
|
| request->AddRequest(child_request);
|
| request->Commit();
|
| @@ -2092,12 +2103,78 @@ TEST_F(DriveApiRequestsTest, BatchUploadRequestWithBodyIncludingZero) {
|
| "Host: 127.0.0.1\n"
|
| "X-Goog-Upload-Protocol: multipart\n"
|
| "Content-Type: application/binary\n"
|
| - "\n"
|
| - + std::string("Apple\0Orange\0", 13) + "\n"
|
| - "--OUTERBOUNDARY--",
|
| + "\n" +
|
| + std::string("Apple\0Orange\0", 13) +
|
| + "\n"
|
| + "--OUTERBOUNDARY--",
|
| http_request_.content);
|
| }
|
|
|
| +TEST_F(DriveApiRequestsTest, BatchUploadRequestProgress) {
|
| + // Create batch request.
|
| + drive::BatchUploadRequest* const request =
|
| + new drive::BatchUploadRequest(request_sender_.get(), *url_generator_);
|
| + TestBatchableRequest* requests[] = {
|
| + new TestBatchableRequest(request_sender_.get(),
|
| + GURL("http://example.com/test"),
|
| + "application/binary", std::string(100, 'a'),
|
| + base::Bind(&EmptyClosure)),
|
| + new TestBatchableRequest(request_sender_.get(),
|
| + GURL("http://example.com/test"),
|
| + "application/binary", std::string(50, 'b'),
|
| + base::Bind(&EmptyClosure)),
|
| + new TestBatchableRequest(request_sender_.get(),
|
| + GURL("http://example.com/test"),
|
| + "application/binary", std::string(0, 'c'),
|
| + base::Bind(&EmptyClosure))};
|
| + const size_t kExpectedUploadDataPosition[] = {208, 517, 776};
|
| + const size_t kExpectedUploadDataSize = 851;
|
| + request->AddRequest(requests[0]);
|
| + request->AddRequest(requests[1]);
|
| + request->AddRequest(requests[2]);
|
| + request->Commit();
|
| + request->Prepare(base::Bind(&EmptyPreapreCallback));
|
| +
|
| + request->OnURLFetchUploadProgress(nullptr, 0, kExpectedUploadDataSize);
|
| + request->OnURLFetchUploadProgress(nullptr, 150, kExpectedUploadDataSize);
|
| + EXPECT_EQ(0u, requests[0]->progress_values().size());
|
| + EXPECT_EQ(0u, requests[1]->progress_values().size());
|
| + EXPECT_EQ(0u, requests[2]->progress_values().size());
|
| + request->OnURLFetchUploadProgress(nullptr, kExpectedUploadDataPosition[0],
|
| + kExpectedUploadDataSize);
|
| + EXPECT_EQ(1u, requests[0]->progress_values().size());
|
| + EXPECT_EQ(0u, requests[1]->progress_values().size());
|
| + EXPECT_EQ(0u, requests[2]->progress_values().size());
|
| + request->OnURLFetchUploadProgress(
|
| + nullptr, kExpectedUploadDataPosition[0] + 50, kExpectedUploadDataSize);
|
| + EXPECT_EQ(2u, requests[0]->progress_values().size());
|
| + EXPECT_EQ(0u, requests[1]->progress_values().size());
|
| + EXPECT_EQ(0u, requests[2]->progress_values().size());
|
| + request->OnURLFetchUploadProgress(
|
| + nullptr, kExpectedUploadDataPosition[1] + 20, kExpectedUploadDataSize);
|
| + EXPECT_EQ(3u, requests[0]->progress_values().size());
|
| + EXPECT_EQ(1u, requests[1]->progress_values().size());
|
| + EXPECT_EQ(0u, requests[2]->progress_values().size());
|
| + request->OnURLFetchUploadProgress(nullptr, kExpectedUploadDataPosition[2],
|
| + kExpectedUploadDataSize);
|
| + EXPECT_EQ(3u, requests[0]->progress_values().size());
|
| + EXPECT_EQ(2u, requests[1]->progress_values().size());
|
| + EXPECT_EQ(1u, requests[2]->progress_values().size());
|
| + request->OnURLFetchUploadProgress(nullptr, kExpectedUploadDataSize,
|
| + kExpectedUploadDataSize);
|
| + ASSERT_EQ(3u, requests[0]->progress_values().size());
|
| + EXPECT_EQ(0, requests[0]->progress_values()[0]);
|
| + EXPECT_EQ(50, requests[0]->progress_values()[1]);
|
| + EXPECT_EQ(100, requests[0]->progress_values()[2]);
|
| + ASSERT_EQ(2u, requests[1]->progress_values().size());
|
| + EXPECT_EQ(20, requests[1]->progress_values()[0]);
|
| + EXPECT_EQ(50, requests[1]->progress_values()[1]);
|
| + ASSERT_EQ(1u, requests[2]->progress_values().size());
|
| + EXPECT_EQ(0, requests[2]->progress_values()[0]);
|
| +
|
| + request->Cancel();
|
| +}
|
| +
|
| TEST(ParseMultipartResponseTest, Empty) {
|
| std::vector<drive::MultipartHttpResponse> parts;
|
| EXPECT_FALSE(drive::ParseMultipartResponse(
|
|
|