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

Unified Diff: chrome/browser/sync/glue/http_bridge.cc

Issue 306032: Simplify threading in browser thread by making only ChromeThread deal with di... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: a few more simplifications Created 11 years, 2 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
Index: chrome/browser/sync/glue/http_bridge.cc
===================================================================
--- chrome/browser/sync/glue/http_bridge.cc (revision 30037)
+++ chrome/browser/sync/glue/http_bridge.cc (working copy)
@@ -10,6 +10,7 @@
#include "base/string_util.h"
#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/profile.h"
+#include "chrome/browser/chrome_thread.h"
#include "net/base/cookie_monster.h"
#include "net/base/load_flags.h"
#include "net/http/http_cache.h"
@@ -53,15 +54,15 @@
HttpBridgeFactory::~HttpBridgeFactory() {
if (request_context_getter_) {
// Clean up request context getter on IO thread.
- ChromeThread::GetMessageLoop(ChromeThread::IO)->ReleaseSoon(FROM_HERE,
- request_context_getter_);
+ bool posted = ChromeThread::ReleaseSoon(
+ ChromeThread::IO, FROM_HERE, request_context_getter_);
+ DCHECK(posted);
request_context_getter_ = NULL;
}
}
sync_api::HttpPostProviderInterface* HttpBridgeFactory::Create() {
- HttpBridge* http = new HttpBridge(request_context_getter_,
- ChromeThread::GetMessageLoop(ChromeThread::IO));
+ HttpBridge* http = new HttpBridge(request_context_getter_);
http->AddRef();
return http;
}
@@ -109,22 +110,21 @@
delete http_transaction_factory_;
}
-HttpBridge::HttpBridge(HttpBridge::RequestContextGetter* context_getter,
- MessageLoop* io_loop)
+HttpBridge::HttpBridge(HttpBridge::RequestContextGetter* context_getter)
: context_getter_for_request_(context_getter),
url_poster_(NULL),
created_on_loop_(MessageLoop::current()),
- io_loop_(io_loop),
request_completed_(false),
request_succeeded_(false),
http_response_code_(-1),
- http_post_completed_(false, false),
- use_io_loop_for_testing_(false) {
+ http_post_completed_(false, false) {
context_getter_for_request_->AddRef();
}
HttpBridge::~HttpBridge() {
- io_loop_->ReleaseSoon(FROM_HERE, context_getter_for_request_);
+ bool posted = ChromeThread::ReleaseSoon(
+ ChromeThread::IO, FROM_HERE, context_getter_for_request_);
+ DCHECK(posted);
}
void HttpBridge::SetUserAgent(const char* user_agent) {
@@ -176,8 +176,9 @@
DCHECK(url_for_request_.is_valid()) << "Invalid URL for request";
DCHECK(!content_type_.empty()) << "Payload not set";
- io_loop_->PostTask(FROM_HERE, NewRunnableMethod(this,
- &HttpBridge::CallMakeAsynchronousPost));
+ ChromeThread::PostTask(
+ ChromeThread::IO, FROM_HERE,
+ NewRunnableMethod(this, &HttpBridge::CallMakeAsynchronousPost));
if (!http_post_completed_.Wait()) // Block until network request completes.
NOTREACHED(); // See OnURLFetchComplete.
@@ -189,17 +190,13 @@
}
void HttpBridge::MakeAsynchronousPost() {
- DCHECK_EQ(MessageLoop::current(), io_loop_);
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
DCHECK(!request_completed_);
url_poster_ = new URLFetcher(url_for_request_, URLFetcher::POST, this);
url_poster_->set_request_context(context_getter_for_request_);
url_poster_->set_upload_data(content_type_, request_content_);
url_poster_->set_extra_request_headers(extra_headers_);
-
- if (use_io_loop_for_testing_)
- url_poster_->set_io_loop(io_loop_);
-
url_poster_->Start();
}
@@ -220,7 +217,7 @@
int response_code,
const ResponseCookies &cookies,
const std::string &data) {
- DCHECK_EQ(MessageLoop::current(), io_loop_);
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
request_completed_ = true;
request_succeeded_ = (URLRequestStatus::SUCCESS == status.status());
@@ -229,10 +226,10 @@
response_content_ = data;
- // End of the line for url_poster_. It lives only on the io_loop.
+ // End of the line for url_poster_. It lives only on the IO loop.
// We defer deletion because we're inside a callback from a component of the
// URLFetcher, so it seems most natural / "polite" to let the stack unwind.
- io_loop_->DeleteSoon(FROM_HERE, url_poster_);
+ MessageLoop::current()->DeleteSoon(FROM_HERE, url_poster_);
url_poster_ = NULL;
// Wake the blocked syncer thread in MakeSynchronousPost.

Powered by Google App Engine
This is Rietveld 408576698