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

Unified Diff: google_apis/drive/base_requests.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « google_apis/drive/base_requests.h ('k') | google_apis/drive/base_requests_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: google_apis/drive/base_requests.cc
diff --git a/google_apis/drive/base_requests.cc b/google_apis/drive/base_requests.cc
index 6a485e621d8262344bce1ac8611cfde967b550d5..757b2de8ad78b81d7389aff5f6a9d1672e587fce 100644
--- a/google_apis/drive/base_requests.cc
+++ b/google_apis/drive/base_requests.cc
@@ -561,31 +561,6 @@ UrlFetchRequestBase::GetWeakPtr() {
return weak_ptr_factory_.GetWeakPtr();
}
-//============================ BatchableRequestBase ============================
-
-net::URLFetcher::RequestType BatchableRequestBase::GetRequestType() const {
- return UrlFetchRequestBase::GetRequestType();
-}
-
-std::vector<std::string> BatchableRequestBase::GetExtraRequestHeaders() const {
- return UrlFetchRequestBase::GetExtraRequestHeaders();
-}
-
-void BatchableRequestBase::Prepare(const PrepareCallback& callback) {
- return UrlFetchRequestBase::Prepare(callback);
-}
-
-bool BatchableRequestBase::GetContentData(
- std::string* upload_content_type, std::string* upload_content) {
- return UrlFetchRequestBase::GetContentData(
- upload_content_type, upload_content);
-}
-
-void BatchableRequestBase::ProcessURLFetchResults(
- const net::URLFetcher* source) {
- ProcessURLFetchResults(GetErrorCode(), response_writer()->data());
-}
-
//============================ EntryActionRequest ============================
EntryActionRequest::EntryActionRequest(RequestSender* sender,
@@ -855,14 +830,14 @@ GetUploadStatusRequestBase::GetExtraRequestHeaders() const {
//========================= MultipartUploadRequestBase ========================
MultipartUploadRequestBase::MultipartUploadRequestBase(
- RequestSender* sender,
+ base::SequencedTaskRunner* blocking_task_runner,
const std::string& metadata_json,
const std::string& content_type,
int64 content_length,
const base::FilePath& local_file_path,
const FileResourceCallback& callback,
const ProgressCallback& progress_callback)
- : BatchableRequestBase(sender),
+ : blocking_task_runner_(blocking_task_runner),
metadata_json_(metadata_json),
content_type_(content_type),
local_path_(local_file_path),
@@ -878,13 +853,18 @@ MultipartUploadRequestBase::MultipartUploadRequestBase(
MultipartUploadRequestBase::~MultipartUploadRequestBase() {
}
+std::vector<std::string> MultipartUploadRequestBase::GetExtraRequestHeaders()
+ const {
+ return std::vector<std::string>();
+}
+
void MultipartUploadRequestBase::Prepare(const PrepareCallback& callback) {
// If the request is cancelled, the request instance will be deleted in
// |UrlFetchRequestBase::Cancel| and OnPrepareUploadContent won't be called.
std::string* const upload_content_type = new std::string();
std::string* const upload_content_data = new std::string();
PostTaskAndReplyWithResult(
- blocking_task_runner(), FROM_HERE,
+ blocking_task_runner_.get(), FROM_HERE,
base::Bind(&GetMultipartContent, boundary_, metadata_json_, content_type_,
local_path_, base::Unretained(upload_content_type),
base::Unretained(upload_content_data)),
@@ -922,26 +902,29 @@ bool MultipartUploadRequestBase::GetContentData(
return true;
}
-void MultipartUploadRequestBase::ProcessURLFetchResults(
- DriveApiErrorCode code, const std::string& body) {
+void MultipartUploadRequestBase::NotifyResult(
+ DriveApiErrorCode code,
+ const std::string& body,
+ const base::Closure& notify_complete_callback) {
// The upload is successfully done. Parse the response which should be
// the entry's metadata.
if (code == HTTP_CREATED || code == HTTP_SUCCESS) {
ParseJsonOnBlockingPool(
- blocking_task_runner(), body,
+ blocking_task_runner_.get(), body,
base::Bind(&MultipartUploadRequestBase::OnDataParsed,
- weak_ptr_factory_.GetWeakPtr(), code));
+ weak_ptr_factory_.GetWeakPtr(), code,
+ notify_complete_callback));
} else {
- OnDataParsed(code, scoped_ptr<base::Value>());
+ NotifyError(code);
+ notify_complete_callback.Run();
}
}
-void MultipartUploadRequestBase::RunCallbackOnPrematureFailure(
- DriveApiErrorCode code) {
+void MultipartUploadRequestBase::NotifyError(DriveApiErrorCode code) {
callback_.Run(code, scoped_ptr<FileResource>());
}
-void MultipartUploadRequestBase::OnURLFetchUploadProgress(
+void MultipartUploadRequestBase::NotifyUploadProgress(
const net::URLFetcher* source,
int64 current,
int64 total) {
@@ -949,14 +932,16 @@ void MultipartUploadRequestBase::OnURLFetchUploadProgress(
progress_callback_.Run(current, total);
}
-void MultipartUploadRequestBase::OnDataParsed(DriveApiErrorCode code,
- scoped_ptr<base::Value> value) {
- DCHECK(CalledOnValidThread());
+void MultipartUploadRequestBase::OnDataParsed(
+ DriveApiErrorCode code,
+ const base::Closure& notify_complete_callback,
+ scoped_ptr<base::Value> value) {
+ DCHECK(thread_checker_.CalledOnValidThread());
if (value)
callback_.Run(code, google_apis::FileResource::CreateFrom(*value));
else
- callback_.Run(DRIVE_PARSE_ERROR, scoped_ptr<FileResource>());
- OnProcessURLFetchResultsComplete();
+ NotifyError(DRIVE_PARSE_ERROR);
+ notify_complete_callback.Run();
}
//============================ DownloadFileRequestBase =========================
« no previous file with comments | « google_apis/drive/base_requests.h ('k') | google_apis/drive/base_requests_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698