Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Side by Side Diff: google_apis/drive/base_requests_unittest.cc

Issue 1132693006: Drive API: Simplify lifetime management of child requests in BatchUploadRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Improve comment. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « google_apis/drive/base_requests.cc ('k') | google_apis/drive/drive_api_requests.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "google_apis/drive/base_requests.h" 5 #include "google_apis/drive/base_requests.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "google_apis/drive/drive_api_parser.h" 12 #include "google_apis/drive/drive_api_parser.h"
13 #include "google_apis/drive/drive_api_requests.h"
13 #include "google_apis/drive/dummy_auth_service.h" 14 #include "google_apis/drive/dummy_auth_service.h"
14 #include "google_apis/drive/request_sender.h" 15 #include "google_apis/drive/request_sender.h"
15 #include "google_apis/drive/test_util.h" 16 #include "google_apis/drive/test_util.h"
16 #include "net/test/embedded_test_server/embedded_test_server.h" 17 #include "net/test/embedded_test_server/embedded_test_server.h"
17 #include "net/test/embedded_test_server/http_request.h" 18 #include "net/test/embedded_test_server/http_request.h"
18 #include "net/test/embedded_test_server/http_response.h" 19 #include "net/test/embedded_test_server/http_response.h"
19 #include "net/url_request/url_request_test_util.h" 20 #include "net/url_request/url_request_test_util.h"
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 22
22 namespace google_apis { 23 namespace google_apis {
(...skipping 24 matching lines...) Expand all
47 callback_.Run(code); 48 callback_.Run(code);
48 } 49 }
49 50
50 EntryActionCallback callback_; 51 EntryActionCallback callback_;
51 GURL url_; 52 GURL url_;
52 }; 53 };
53 54
54 class FakeMultipartUploadRequest : public MultipartUploadRequestBase { 55 class FakeMultipartUploadRequest : public MultipartUploadRequestBase {
55 public: 56 public:
56 FakeMultipartUploadRequest( 57 FakeMultipartUploadRequest(
57 RequestSender* sender, 58 base::SequencedTaskRunner* blocking_task_runner,
58 const std::string& metadata_json, 59 const std::string& metadata_json,
59 const std::string& content_type, 60 const std::string& content_type,
60 int64 content_length, 61 int64 content_length,
61 const base::FilePath& local_file_path, 62 const base::FilePath& local_file_path,
62 const FileResourceCallback& callback, 63 const FileResourceCallback& callback,
63 const google_apis::ProgressCallback& progress_callback, 64 const google_apis::ProgressCallback& progress_callback,
64 const GURL& url, 65 const GURL& url,
65 std::string* upload_content_type, 66 std::string* upload_content_type,
66 std::string* upload_content_data) 67 std::string* upload_content_data)
67 : MultipartUploadRequestBase(sender, 68 : MultipartUploadRequestBase(blocking_task_runner,
68 metadata_json, 69 metadata_json,
69 content_type, 70 content_type,
70 content_length, 71 content_length,
71 local_file_path, 72 local_file_path,
72 callback, 73 callback,
73 progress_callback), 74 progress_callback),
74 url_(url), 75 url_(url),
75 upload_content_type_(upload_content_type), 76 upload_content_type_(upload_content_type),
76 upload_content_data_(upload_content_data) {} 77 upload_content_data_(upload_content_data) {}
77 78
78 ~FakeMultipartUploadRequest() override {} 79 ~FakeMultipartUploadRequest() override {}
79 80
81 net::URLFetcher::RequestType GetRequestType() const override {
82 return net::URLFetcher::POST;
83 }
84
80 bool GetContentData(std::string* content_type, 85 bool GetContentData(std::string* content_type,
81 std::string* content_data) override { 86 std::string* content_data) override {
82 const bool result = 87 const bool result =
83 MultipartUploadRequestBase::GetContentData(content_type, content_data); 88 MultipartUploadRequestBase::GetContentData(content_type, content_data);
84 *upload_content_type_ = *content_type; 89 *upload_content_type_ = *content_type;
85 *upload_content_data_ = *content_data; 90 *upload_content_data_ = *content_data;
86 return result; 91 return result;
87 } 92 }
88 93
89 base::SequencedTaskRunner* blocking_task_runner() const {
90 return MultipartUploadRequestBase::blocking_task_runner();
91 }
92
93 protected: 94 protected:
94 GURL GetURL() const override { return url_; } 95 GURL GetURL() const override { return url_; }
95 96
96 private: 97 private:
97 const GURL url_; 98 const GURL url_;
98 std::string* const upload_content_type_; 99 std::string* const upload_content_type_;
99 std::string* const upload_content_data_; 100 std::string* const upload_content_data_;
100 }; 101 };
101 102
102 } // namespace 103 } // namespace
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 TEST_F(MultipartUploadRequestBaseTest, Basic) { 190 TEST_F(MultipartUploadRequestBaseTest, Basic) {
190 response_code_ = net::HTTP_OK; 191 response_code_ = net::HTTP_OK;
191 response_body_ = "{\"kind\": \"drive#file\", \"id\": \"file_id\"}"; 192 response_body_ = "{\"kind\": \"drive#file\", \"id\": \"file_id\"}";
192 scoped_ptr<google_apis::FileResource> file; 193 scoped_ptr<google_apis::FileResource> file;
193 DriveApiErrorCode error = DRIVE_OTHER_ERROR; 194 DriveApiErrorCode error = DRIVE_OTHER_ERROR;
194 base::RunLoop run_loop; 195 base::RunLoop run_loop;
195 const base::FilePath source_path = 196 const base::FilePath source_path =
196 google_apis::test_util::GetTestFilePath("chromeos/file_manager/text.txt"); 197 google_apis::test_util::GetTestFilePath("chromeos/file_manager/text.txt");
197 std::string upload_content_type; 198 std::string upload_content_type;
198 std::string upload_content_data; 199 std::string upload_content_data;
199 scoped_ptr<FakeMultipartUploadRequest> request(new FakeMultipartUploadRequest( 200 FakeMultipartUploadRequest* const multipart_request =
200 sender_.get(), "{json:\"test\"}", "text/plain", 10, source_path, 201 new FakeMultipartUploadRequest(
201 test_util::CreateQuitCallback( 202 sender_->blocking_task_runner(), "{json:\"test\"}", "text/plain", 10,
202 &run_loop, test_util::CreateCopyResultCallback(&error, &file)), 203 source_path,
203 ProgressCallback(), test_server_.base_url(), &upload_content_type, 204 test_util::CreateQuitCallback(
204 &upload_content_data)); 205 &run_loop, test_util::CreateCopyResultCallback(&error, &file)),
205 request->SetBoundaryForTesting("TESTBOUNDARY"); 206 ProgressCallback(), test_server_.base_url(), &upload_content_type,
207 &upload_content_data);
208 multipart_request->SetBoundaryForTesting("TESTBOUNDARY");
209 scoped_ptr<drive::SingleBatchableDelegateRequest> request(
210 new drive::SingleBatchableDelegateRequest(
211 sender_.get(), multipart_request));
206 sender_->StartRequestWithRetry(request.release()); 212 sender_->StartRequestWithRetry(request.release());
207 run_loop.Run(); 213 run_loop.Run();
208 EXPECT_EQ("multipart/related; boundary=TESTBOUNDARY", upload_content_type); 214 EXPECT_EQ("multipart/related; boundary=TESTBOUNDARY", upload_content_type);
209 EXPECT_EQ( 215 EXPECT_EQ(
210 "--TESTBOUNDARY\n" 216 "--TESTBOUNDARY\n"
211 "Content-Type: application/json\n" 217 "Content-Type: application/json\n"
212 "\n" 218 "\n"
213 "{json:\"test\"}\n" 219 "{json:\"test\"}\n"
214 "--TESTBOUNDARY\n" 220 "--TESTBOUNDARY\n"
215 "Content-Type: text/plain\n" 221 "Content-Type: text/plain\n"
216 "\n" 222 "\n"
217 "This is a sample file. I like chocolate and chips.\n" 223 "This is a sample file. I like chocolate and chips.\n"
218 "\n" 224 "\n"
219 "--TESTBOUNDARY--", 225 "--TESTBOUNDARY--",
220 upload_content_data); 226 upload_content_data);
221 ASSERT_EQ(HTTP_SUCCESS, error); 227 ASSERT_EQ(HTTP_SUCCESS, error);
222 EXPECT_EQ("file_id", file->file_id()); 228 EXPECT_EQ("file_id", file->file_id());
223 } 229 }
224 230
225 } // Namespace google_apis 231 } // Namespace google_apis
OLDNEW
« no previous file with comments | « google_apis/drive/base_requests.cc ('k') | google_apis/drive/drive_api_requests.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698