diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-09 06:13:40 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-09 06:13:40 +0000 |
commit | 0ee7a3bc23a95b316f82b3f558a0d74f5067dae9 (patch) | |
tree | 97be74bba1fe6adfa4d18e836ad24b7c7fd7d3ee /chrome/browser/io_thread.h | |
parent | 40aa07af9babb4073a6e59c05d40b00561ccb091 (diff) | |
download | chromium_src-0ee7a3bc23a95b316f82b3f558a0d74f5067dae9.zip chromium_src-0ee7a3bc23a95b316f82b3f558a0d74f5067dae9.tar.gz chromium_src-0ee7a3bc23a95b316f82b3f558a0d74f5067dae9.tar.bz2 |
Reland r63578 - Release ChromeURLRequestContextGetters' references on IO thread shutdown."
Should be safe to reland after r65479.
BUG=58859
TEST=none
Review URL: http://codereview.chromium.org/4672005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65504 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/io_thread.h')
-rw-r--r-- | chrome/browser/io_thread.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/chrome/browser/io_thread.h b/chrome/browser/io_thread.h index 09f4df4..99cb281 100644 --- a/chrome/browser/io_thread.h +++ b/chrome/browser/io_thread.h @@ -6,8 +6,8 @@ #define CHROME_BROWSER_IO_THREAD_H_ #pragma once +#include <list> #include <set> - #include "base/basictypes.h" #include "base/ref_counted.h" #include "base/scoped_ptr.h" @@ -17,6 +17,7 @@ #include "net/base/network_change_notifier.h" class ChromeNetLog; +class ChromeURLRequestContextGetter; class ListValue; class URLRequestContext; @@ -66,6 +67,21 @@ class IOThread : public BrowserProcessSubThread { ListValue* referral_list, bool preconnect_enabled); + // Registers |url_request_context_getter| into the IO thread. During + // IOThread::CleanUp(), IOThread will iterate through known getters and + // release their URLRequestContexts. Only called on the IO thread. It does + // not acquire a refcount for |url_request_context_getter|. If + // |url_request_context_getter| is being deleted before IOThread::CleanUp() is + // invoked, then this needs to be balanced with a call to + // UnregisterURLRequestContextGetter(). + void RegisterURLRequestContextGetter( + ChromeURLRequestContextGetter* url_request_context_getter); + + // Unregisters |url_request_context_getter| from the IO thread. Only called + // on the IO thread. + void UnregisterURLRequestContextGetter( + ChromeURLRequestContextGetter* url_request_context_getter); + // Handles changing to On The Record mode. Posts a task for this onto the // IOThread's message loop. void ChangedToOnTheRecord(); @@ -131,6 +147,11 @@ class IOThread : public BrowserProcessSubThread { // List of live ProxyScriptFetchers. ProxyScriptFetchers fetchers_; + // Keeps track of all live ChromeURLRequestContextGetters, so the + // ChromeURLRequestContexts can be released during + // IOThread::CleanUpAfterMessageLoopDestruction(). + std::list<ChromeURLRequestContextGetter*> url_request_context_getters_; + DISALLOW_COPY_AND_ASSIGN(IOThread); }; |