diff options
author | sanjeevr@chromium.org <sanjeevr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-31 18:49:34 +0000 |
---|---|---|
committer | sanjeevr@chromium.org <sanjeevr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-31 18:49:34 +0000 |
commit | abe2c035dd58c29f9c5f00807e502baa2cc462bc (patch) | |
tree | 45c383ddc14968e16e050938f73456e13a3fe980 /net/url_request | |
parent | 6cfef4d1548e36ecff926bdb148d9d497de4176c (diff) | |
download | chromium_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.cc | 34 | ||||
-rw-r--r-- | net/url_request/url_request_context_getter.h | 74 |
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_ |