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

Unified Diff: chrome/browser/google_apis/gdata_wapi_operations.cc

Issue 11577002: Converted ResumeUploadOperation to use JSON in response instead of XML. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 8 years 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
Index: chrome/browser/google_apis/gdata_wapi_operations.cc
diff --git a/chrome/browser/google_apis/gdata_wapi_operations.cc b/chrome/browser/google_apis/gdata_wapi_operations.cc
index aa682192859951725268bc900b22013c40e20f56..a9aa3ca0e5fb38f013c9221c794db35e68a7987c 100644
--- a/chrome/browser/google_apis/gdata_wapi_operations.cc
+++ b/chrome/browser/google_apis/gdata_wapi_operations.cc
@@ -17,6 +17,7 @@
#include "net/http/http_util.h"
#include "third_party/libxml/chromium/libxml_utils.h"
+using content::BrowserThread;
using net::URLFetcher;
namespace {
@@ -575,7 +576,7 @@ InitiateUploadOperation::InitiateUploadOperation(
InitiateUploadOperation::~InitiateUploadOperation() {}
GURL InitiateUploadOperation::GetURL() const {
- return initiate_upload_url_;
+ return GDataWapiUrlGenerator::AddStandardUrlParams(initiate_upload_url_);
}
void InitiateUploadOperation::ProcessURLFetchResults(
@@ -671,25 +672,27 @@ ResumeUploadOperation::ResumeUploadOperation(
params.drive_file_path),
callback_(callback),
params_(params),
- last_chunk_completed_(false) {
+ last_chunk_completed_(false),
+ ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
DCHECK(!callback_.is_null());
}
ResumeUploadOperation::~ResumeUploadOperation() {}
GURL ResumeUploadOperation::GetURL() const {
+ // This is very tricky to get json from this operation. To do that, &alt=json
+ // has to be appended not here but in InitiateUploadOperation::GetURL().
return params_.upload_location;
}
void ResumeUploadOperation::ProcessURLFetchResults(const URLFetcher* source) {
GDataErrorCode code = GetErrorCode(source);
net::HttpResponseHeaders* hdrs = source->GetResponseHeaders();
- int64 start_position_received = -1;
- int64 end_position_received = -1;
- scoped_ptr<ResourceEntry> entry;
if (code == HTTP_RESUME_INCOMPLETE) {
// Retrieve value of the first "Range" header.
+ int64 start_position_received = -1;
+ int64 end_position_received = -1;
std::string range_received;
hdrs->EnumerateHeader(NULL, kUploadResponseRange, &range_received);
if (!range_received.empty()) { // Parse the range header.
@@ -710,6 +713,13 @@ void ResumeUploadOperation::ProcessURLFetchResults(const URLFetcher* source) {
<< ", range_hdr=[" << range_received
<< "], range_parsed=" << start_position_received
<< "," << end_position_received;
+
+ callback_.Run(ResumeUploadResponse(code,
+ start_position_received,
+ end_position_received),
+ scoped_ptr<ResourceEntry>());
+
+ OnProcessURLFetchResultsComplete(true);
} else {
// There might be explanation of unexpected error code in response.
std::string response_content;
@@ -718,24 +728,16 @@ void ResumeUploadOperation::ProcessURLFetchResults(const URLFetcher* source) {
<< "]: code=" << code
<< ", content=[\n" << response_content << "\n]";
- // Parse entry XML.
- XmlReader xml_reader;
- if (xml_reader.Load(response_content)) {
- while (xml_reader.Read()) {
- if (xml_reader.NodeName() == ResourceEntry::GetEntryNodeName()) {
- entry = ResourceEntry::CreateFromXml(&xml_reader);
- break;
- }
- }
- }
- if (!entry.get())
- LOG(WARNING) << "Invalid entry received on upload:\n" << response_content;
+ ParseJson(response_content,
+ base::Bind(&ResumeUploadOperation::OnDataParsed,
+ weak_ptr_factory_.GetWeakPtr(),
+ code));
}
+}
- callback_.Run(ResumeUploadResponse(code,
- start_position_received,
- end_position_received),
- entry.Pass());
+void ResumeUploadOperation::OnDataParsed(GDataErrorCode code,
+ scoped_ptr<base::Value> value) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// For a new file, HTTP_CREATED is returned.
// For an existing file, HTTP_SUCCESS is returned.
@@ -744,8 +746,15 @@ void ResumeUploadOperation::ProcessURLFetchResults(const URLFetcher* source) {
last_chunk_completed_ = true;
}
- OnProcessURLFetchResultsComplete(
- last_chunk_completed_ || code == HTTP_RESUME_INCOMPLETE);
+ scoped_ptr<ResourceEntry> entry;
+ if (value.get())
+ entry = ResourceEntry::ExtractAndParse(*(value.get()));
+
+ if (!entry.get())
+ LOG(WARNING) << "Invalid entry received on upload.";
+
+ callback_.Run(ResumeUploadResponse(code, -1, -1), entry.Pass());
+ OnProcessURLFetchResultsComplete(last_chunk_completed_);
}
void ResumeUploadOperation::NotifyStartToOperationRegistry() {
« no previous file with comments | « chrome/browser/google_apis/gdata_wapi_operations.h ('k') | chrome/browser/google_apis/gdata_wapi_operations_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698