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

Unified Diff: sync/internal_api/http_bridge.cc

Issue 10645004: [Sync] Move HttpBridge to sync/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync to head Created 8 years, 6 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 | « sync/internal_api/DEPS ('k') | sync/internal_api/http_bridge_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/internal_api/http_bridge.cc
diff --git a/chrome/browser/sync/glue/http_bridge.cc b/sync/internal_api/http_bridge.cc
similarity index 85%
rename from chrome/browser/sync/glue/http_bridge.cc
rename to sync/internal_api/http_bridge.cc
index dfaf81c6b8fc630a0540adef1582c65b4d8bf80d..6aa6c4abb4a96be7b52a7493aed3e972d041f2ba 100644
--- a/chrome/browser/sync/glue/http_bridge.cc
+++ b/sync/internal_api/http_bridge.cc
@@ -2,13 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/sync/glue/http_bridge.h"
+#include "sync/internal_api/public/http_bridge.h"
#include "base/message_loop.h"
#include "base/message_loop_proxy.h"
#include "base/string_number_conversions.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/common/content_client.h"
#include "net/base/host_resolver.h"
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
@@ -21,13 +19,18 @@
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_status.h"
-using content::BrowserThread;
-
namespace browser_sync {
HttpBridge::RequestContextGetter::RequestContextGetter(
- net::URLRequestContextGetter* baseline_context_getter)
- : baseline_context_getter_(baseline_context_getter) {
+ net::URLRequestContextGetter* baseline_context_getter,
+ const std::string& user_agent)
+ : baseline_context_getter_(baseline_context_getter),
+ network_task_runner_(
+ baseline_context_getter_->GetNetworkTaskRunner()),
+ user_agent_(user_agent) {
+ DCHECK(baseline_context_getter_);
+ DCHECK(network_task_runner_);
+ DCHECK(!user_agent_.empty());
}
HttpBridge::RequestContextGetter::~RequestContextGetter() {}
@@ -38,28 +41,26 @@ HttpBridge::RequestContextGetter::GetURLRequestContext() {
if (!context_.get()) {
net::URLRequestContext* baseline_context =
baseline_context_getter_->GetURLRequestContext();
- context_.reset(new RequestContext(baseline_context));
+ context_.reset(
+ new RequestContext(baseline_context, GetNetworkTaskRunner(),
+ user_agent_));
baseline_context_getter_ = NULL;
}
- // Apply the user agent which was set earlier.
- if (is_user_agent_set())
- context_->set_user_agent(user_agent_);
-
return context_.get();
}
scoped_refptr<base::SingleThreadTaskRunner>
HttpBridge::RequestContextGetter::GetNetworkTaskRunner() const {
- return BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO);
+ return network_task_runner_;
}
HttpBridgeFactory::HttpBridgeFactory(
- net::URLRequestContextGetter* baseline_context_getter) {
- DCHECK(baseline_context_getter != NULL);
- request_context_getter_ =
- new HttpBridge::RequestContextGetter(baseline_context_getter);
-}
+ net::URLRequestContextGetter* baseline_context_getter,
+ const std::string& user_agent)
+ : request_context_getter_(
+ new HttpBridge::RequestContextGetter(
+ baseline_context_getter, user_agent)) {}
HttpBridgeFactory::~HttpBridgeFactory() {
}
@@ -75,8 +76,14 @@ void HttpBridgeFactory::Destroy(csync::HttpPostProviderInterface* http) {
}
HttpBridge::RequestContext::RequestContext(
- net::URLRequestContext* baseline_context)
- : baseline_context_(baseline_context) {
+ net::URLRequestContext* baseline_context,
+ const scoped_refptr<base::SingleThreadTaskRunner>&
+ network_task_runner,
+ const std::string& user_agent)
+ : baseline_context_(baseline_context),
+ network_task_runner_(network_task_runner),
+ user_agent_(user_agent) {
+ DCHECK(!user_agent_.empty());
// Create empty, in-memory cookie store.
set_cookie_store(new net::CookieMonster(NULL, NULL));
@@ -105,18 +112,19 @@ HttpBridge::RequestContext::RequestContext(
set_accept_language(baseline_context->accept_language());
set_accept_charset(baseline_context->accept_charset());
- // We default to the browser's user agent. This can (and should) be overridden
- // with set_user_agent.
- set_user_agent(content::GetUserAgent(GURL()));
-
set_net_log(baseline_context->net_log());
}
HttpBridge::RequestContext::~RequestContext() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(network_task_runner_->BelongsToCurrentThread());
delete http_transaction_factory();
}
+const std::string& HttpBridge::RequestContext::GetUserAgent(
+ const GURL& url) const {
+ return user_agent_;
+}
+
HttpBridge::URLFetchState::URLFetchState() : url_poster(NULL),
aborted(false),
request_completed(false),
@@ -127,6 +135,8 @@ HttpBridge::URLFetchState::~URLFetchState() {}
HttpBridge::HttpBridge(HttpBridge::RequestContextGetter* context_getter)
: context_getter_for_request_(context_getter),
+ network_task_runner_(
+ context_getter_for_request_->GetNetworkTaskRunner()),
created_on_loop_(MessageLoop::current()),
http_post_completed_(false, false) {
}
@@ -134,15 +144,6 @@ HttpBridge::HttpBridge(HttpBridge::RequestContextGetter* context_getter)
HttpBridge::~HttpBridge() {
}
-void HttpBridge::SetUserAgent(const char* user_agent) {
- DCHECK_EQ(MessageLoop::current(), created_on_loop_);
- if (DCHECK_IS_ON()) {
- base::AutoLock lock(fetch_state_lock_);
- DCHECK(!fetch_state_.request_completed);
- }
- context_getter_for_request_->set_user_agent(user_agent);
-}
-
void HttpBridge::SetExtraRequestHeaders(const char * headers) {
DCHECK(extra_headers_.empty())
<< "HttpBridge::SetExtraRequestHeaders called twice.";
@@ -195,8 +196,8 @@ bool HttpBridge::MakeSynchronousPost(int* error_code, int* response_code) {
DCHECK(url_for_request_.is_valid()) << "Invalid URL for request";
DCHECK(!content_type_.empty()) << "Payload not set";
- if (!BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
+ if (!network_task_runner_->PostTask(
+ FROM_HERE,
base::Bind(&HttpBridge::CallMakeAsynchronousPost, this))) {
// This usually happens when we're in a unit test.
LOG(WARNING) << "Could not post CallMakeAsynchronousPost task";
@@ -215,7 +216,7 @@ bool HttpBridge::MakeSynchronousPost(int* error_code, int* response_code) {
}
void HttpBridge::MakeAsynchronousPost() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(network_task_runner_->BelongsToCurrentThread());
base::AutoLock lock(fetch_state_lock_);
DCHECK(!fetch_state_.request_completed);
if (fetch_state_.aborted)
@@ -263,8 +264,8 @@ void HttpBridge::Abort() {
return;
fetch_state_.aborted = true;
- if (!BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
+ if (!network_task_runner_->PostTask(
+ FROM_HERE,
base::Bind(&HttpBridge::DestroyURLFetcherOnIOThread, this,
fetch_state_.url_poster))) {
// Madness ensues.
@@ -277,12 +278,12 @@ void HttpBridge::Abort() {
}
void HttpBridge::DestroyURLFetcherOnIOThread(net::URLFetcher* fetcher) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(network_task_runner_->BelongsToCurrentThread());
delete fetcher;
}
void HttpBridge::OnURLFetchComplete(const net::URLFetcher* source) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(network_task_runner_->BelongsToCurrentThread());
base::AutoLock lock(fetch_state_lock_);
if (fetch_state_.aborted)
return;
« no previous file with comments | « sync/internal_api/DEPS ('k') | sync/internal_api/http_bridge_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698