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

Side by Side Diff: trunk/src/google_apis/drive/gdata_wapi_requests.cc

Issue 449323002: Revert 288017 "Parse Drive API responses all at once in the bloc..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
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/gdata_wapi_requests.h" 5 #include "google_apis/drive/gdata_wapi_requests.h"
6 6
7 #include "base/location.h"
8 #include "base/sequenced_task_runner.h"
9 #include "base/task_runner_util.h"
10 #include "base/values.h"
11 #include "google_apis/drive/gdata_wapi_parser.h"
12 #include "google_apis/drive/gdata_wapi_url_generator.h" 7 #include "google_apis/drive/gdata_wapi_url_generator.h"
13 8
14 namespace google_apis { 9 namespace google_apis {
15 10
16 namespace { 11 //============================ GetResourceEntryRequest =======================
17
18 scoped_ptr<ResourceEntry> ParseResourceEntry(const std::string& json) {
19 scoped_ptr<base::Value> value = ParseJson(json);
20 return value ? ResourceEntry::ExtractAndParse(*value) :
21 scoped_ptr<ResourceEntry>();
22 }
23
24 } // namespace
25 12
26 GetResourceEntryRequest::GetResourceEntryRequest( 13 GetResourceEntryRequest::GetResourceEntryRequest(
27 RequestSender* sender, 14 RequestSender* sender,
28 const GDataWapiUrlGenerator& url_generator, 15 const GDataWapiUrlGenerator& url_generator,
29 const std::string& resource_id, 16 const std::string& resource_id,
30 const GURL& embed_origin, 17 const GURL& embed_origin,
31 const GetResourceEntryCallback& callback) 18 const GetDataCallback& callback)
32 : UrlFetchRequestBase(sender), 19 : GetDataRequest(sender, callback),
33 url_generator_(url_generator), 20 url_generator_(url_generator),
34 resource_id_(resource_id), 21 resource_id_(resource_id),
35 embed_origin_(embed_origin), 22 embed_origin_(embed_origin) {
36 callback_(callback),
37 weak_ptr_factory_(this) {
38 DCHECK(!callback.is_null()); 23 DCHECK(!callback.is_null());
39 } 24 }
40 25
41 GetResourceEntryRequest::~GetResourceEntryRequest() {} 26 GetResourceEntryRequest::~GetResourceEntryRequest() {}
42 27
43 GURL GetResourceEntryRequest::GetURL() const { 28 GURL GetResourceEntryRequest::GetURL() const {
44 return url_generator_.GenerateEditUrlWithEmbedOrigin( 29 return url_generator_.GenerateEditUrlWithEmbedOrigin(
45 resource_id_, embed_origin_); 30 resource_id_, embed_origin_);
46 } 31 }
47 32
48 void GetResourceEntryRequest::ProcessURLFetchResults(
49 const net::URLFetcher* source) {
50 GDataErrorCode error = GetErrorCode();
51 switch (error) {
52 case HTTP_SUCCESS:
53 case HTTP_CREATED:
54 base::PostTaskAndReplyWithResult(
55 blocking_task_runner(),
56 FROM_HERE,
57 base::Bind(&ParseResourceEntry, response_writer()->data()),
58 base::Bind(&GetResourceEntryRequest::OnDataParsed,
59 weak_ptr_factory_.GetWeakPtr(), error));
60 break;
61 default:
62 RunCallbackOnPrematureFailure(error);
63 OnProcessURLFetchResultsComplete();
64 break;
65 }
66 }
67
68 void GetResourceEntryRequest::RunCallbackOnPrematureFailure(
69 GDataErrorCode error) {
70 callback_.Run(error, scoped_ptr<ResourceEntry>());
71 }
72
73 void GetResourceEntryRequest::OnDataParsed(GDataErrorCode error,
74 scoped_ptr<ResourceEntry> entry) {
75 callback_.Run(entry ? error : GDATA_PARSE_ERROR, entry.Pass());
76 OnProcessURLFetchResultsComplete();
77 }
78
79 } // namespace google_apis 33 } // namespace google_apis
OLDNEW
« no previous file with comments | « trunk/src/google_apis/drive/gdata_wapi_requests.h ('k') | trunk/src/google_apis/drive/gdata_wapi_requests_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698