| Index: chrome/browser/google_apis/base_requests.cc
|
| diff --git a/chrome/browser/google_apis/base_requests.cc b/chrome/browser/google_apis/base_requests.cc
|
| index 49a5f07325c3c8141a87e753642c0ddd2ca40be6..8963eb994f8242815283d714e1e73e3f0c6139fb 100644
|
| --- a/chrome/browser/google_apis/base_requests.cc
|
| +++ b/chrome/browser/google_apis/base_requests.cc
|
| @@ -5,13 +5,12 @@
|
| #include "chrome/browser/google_apis/base_requests.h"
|
|
|
| #include "base/json/json_reader.h"
|
| +#include "base/location.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/task_runner_util.h"
|
| -#include "base/threading/sequenced_worker_pool.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/google_apis/request_sender.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| #include "net/base/load_flags.h"
|
| #include "net/base/net_errors.h"
|
| #include "net/http/http_byte_range.h"
|
| @@ -20,7 +19,6 @@
|
| #include "net/url_request/url_fetcher.h"
|
| #include "net/url_request/url_request_status.h"
|
|
|
| -using content::BrowserThread;
|
| using net::URLFetcher;
|
|
|
| namespace {
|
| @@ -80,9 +78,11 @@ std::string GetResponseHeadersAsString(
|
|
|
| namespace google_apis {
|
|
|
| -void ParseJson(const std::string& json, const ParseJsonCallback& callback) {
|
| +void ParseJson(base::TaskRunner* blocking_task_runner,
|
| + const std::string& json,
|
| + const ParseJsonCallback& callback) {
|
| base::PostTaskAndReplyWithResult(
|
| - BrowserThread::GetBlockingPool(),
|
| + blocking_task_runner,
|
| FROM_HERE,
|
| base::Bind(&ParseJsonOnBlockingPool, json),
|
| callback);
|
| @@ -131,7 +131,7 @@ void UrlFetchRequestBase::Start(const std::string& access_token,
|
| if (GetOutputFilePath(&output_file_path)) {
|
| url_fetcher_->SaveResponseToFileAtPath(
|
| output_file_path,
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE));
|
| + blocking_task_runner());
|
| }
|
|
|
| // Add request headers.
|
| @@ -165,7 +165,7 @@ void UrlFetchRequestBase::Start(const std::string& access_token,
|
| local_file_path,
|
| range_offset,
|
| range_length,
|
| - BrowserThread::GetBlockingPool());
|
| + blocking_task_runner());
|
| } else {
|
| // Even if there is no content data, UrlFetcher requires to set empty
|
| // upload data string for POST, PUT and PATCH methods, explicitly.
|
| @@ -233,6 +233,10 @@ bool UrlFetchRequestBase::CalledOnValidThread() {
|
| return thread_checker_.CalledOnValidThread();
|
| }
|
|
|
| +base::TaskRunner* UrlFetchRequestBase::blocking_task_runner() const {
|
| + return sender_->blocking_task_runner();
|
| +}
|
| +
|
| void UrlFetchRequestBase::OnProcessURLFetchResultsComplete(bool result) {
|
| sender_->RequestFinished(this);
|
| }
|
| @@ -308,7 +312,8 @@ void GetDataRequest::ParseResponse(GDataErrorCode fetch_error_code,
|
|
|
| VLOG(1) << "JSON received from " << GetURL().spec() << ": "
|
| << data.size() << " bytes";
|
| - ParseJson(data,
|
| + ParseJson(blocking_task_runner(),
|
| + data,
|
| base::Bind(&GetDataRequest::OnDataParsed,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| fetch_error_code));
|
| @@ -490,7 +495,8 @@ void UploadRangeRequestBase::ProcessURLFetchResults(
|
| std::string response_content;
|
| source->GetResponseAsString(&response_content);
|
|
|
| - ParseJson(response_content,
|
| + ParseJson(blocking_task_runner(),
|
| + response_content,
|
| base::Bind(&UploadRangeRequestBase::OnDataParsed,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| code));
|
|
|