summaryrefslogtreecommitdiffstats
path: root/net/url_request
diff options
context:
space:
mode:
authorsanjeevr@chromium.org <sanjeevr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-31 18:49:34 +0000
committersanjeevr@chromium.org <sanjeevr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-31 18:49:34 +0000
commitabe2c035dd58c29f9c5f00807e502baa2cc462bc (patch)
tree45c383ddc14968e16e050938f73456e13a3fe980 /net/url_request
parent6cfef4d1548e36ecff926bdb148d9d497de4176c (diff)
downloadchromium_src-abe2c035dd58c29f9c5f00807e502baa2cc462bc.zip
chromium_src-abe2c035dd58c29f9c5f00807e502baa2cc462bc.tar.gz
chromium_src-abe2c035dd58c29f9c5f00807e502baa2cc462bc.tar.bz2
Moved URLRequestContextGetter to net/ so it can be used by projects such as jingle.
BUG=None TEST=Build. Review URL: http://codereview.chromium.org/6778025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80033 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/url_request')
-rw-r--r--net/url_request/url_request_context_getter.cc34
-rw-r--r--net/url_request/url_request_context_getter.h74
2 files changed, 108 insertions, 0 deletions
diff --git a/net/url_request/url_request_context_getter.cc b/net/url_request/url_request_context_getter.cc
new file mode 100644
index 0000000..2313c23
--- /dev/null
+++ b/net/url_request/url_request_context_getter.cc
@@ -0,0 +1,34 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/url_request/url_request_context_getter.h"
+
+#include "base/message_loop_proxy.h"
+#include "net/url_request/url_request_context.h"
+
+namespace net {
+CookieStore* URLRequestContextGetter::DONTUSEME_GetCookieStore() {
+ return NULL;
+}
+
+URLRequestContextGetter::URLRequestContextGetter() : is_main_(false) {}
+
+URLRequestContextGetter::~URLRequestContextGetter() {}
+
+void URLRequestContextGetter::OnDestruct() const {
+ scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy =
+ GetIOMessageLoopProxy();
+ DCHECK(io_message_loop_proxy);
+ if (io_message_loop_proxy) {
+ if (io_message_loop_proxy->BelongsToCurrentThread()) {
+ delete this;
+ } else {
+ io_message_loop_proxy->DeleteSoon(FROM_HERE, this);
+ }
+ }
+ // If no IO message loop proxy was available, we will just leak memory.
+ // This is also true if the IO thread is gone.
+}
+
+} // namespace net
diff --git a/net/url_request/url_request_context_getter.h b/net/url_request/url_request_context_getter.h
new file mode 100644
index 0000000..b6c5464
--- /dev/null
+++ b/net/url_request/url_request_context_getter.h
@@ -0,0 +1,74 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_COMMON_NET_URL_REQUEST_CONTEXT_GETTER_H_
+#define CHROME_COMMON_NET_URL_REQUEST_CONTEXT_GETTER_H_
+#pragma once
+
+#include "base/memory/ref_counted.h"
+#include "base/task.h"
+
+namespace base {
+class MessageLoopProxy;
+}
+
+namespace net {
+class CookieStore;
+class URLRequestContext;
+
+struct URLRequestContextGetterTraits;
+
+// Interface for retrieving an net::URLRequestContext.
+class URLRequestContextGetter
+ : public base::RefCountedThreadSafe<URLRequestContextGetter,
+ URLRequestContextGetterTraits> {
+ public:
+ virtual URLRequestContext* GetURLRequestContext() = 0;
+
+ // See http://crbug.com/77835 for why this shouldn't be used. Instead use
+ // GetURLRequestContext()->cookie_store();
+ virtual CookieStore* DONTUSEME_GetCookieStore();
+
+ // Returns a MessageLoopProxy corresponding to the thread on which the
+ // request IO happens (the thread on which the returned net::URLRequestContext
+ // may be used).
+ virtual scoped_refptr<base::MessageLoopProxy>
+ GetIOMessageLoopProxy() const = 0;
+
+ // Controls whether or not the URLRequestContextGetter considers itself to be
+ // the the "main" URLRequestContextGetter. Note that each Profile will have a
+ // "default" URLRequestContextGetter. Therefore, "is_main" refers to the
+ // default URLRequestContextGetter for the "main" Profile.
+ // TODO(willchan): Move this code to ChromeURLRequestContextGetter, since this
+ // ia a browser process specific concept.
+ void set_is_main(bool is_main) { is_main_ = is_main; }
+
+ protected:
+ friend class DeleteTask<const URLRequestContextGetter>;
+ friend struct URLRequestContextGetterTraits;
+
+ URLRequestContextGetter();
+ virtual ~URLRequestContextGetter();
+
+ bool is_main() const { return is_main_; }
+
+ private:
+ // OnDestruct is meant to ensure deletion on the thread on which the request
+ // IO happens.
+ void OnDestruct() const;
+
+ // Indicates whether or not this is the default URLRequestContextGetter for
+ // the main Profile.
+ bool is_main_;
+};
+
+struct URLRequestContextGetterTraits {
+ static void Destruct(const URLRequestContextGetter* context_getter) {
+ context_getter->OnDestruct();
+ }
+};
+
+} // namespace net
+
+#endif // CHROME_COMMON_NET_URL_REQUEST_CONTEXT_GETTER_H_