diff options
Diffstat (limited to 'chrome/browser/net/chrome_url_request_context.cc')
-rw-r--r-- | chrome/browser/net/chrome_url_request_context.cc | 37 |
1 files changed, 11 insertions, 26 deletions
diff --git a/chrome/browser/net/chrome_url_request_context.cc b/chrome/browser/net/chrome_url_request_context.cc index d96fbc0..06d1f2c 100644 --- a/chrome/browser/net/chrome_url_request_context.cc +++ b/chrome/browser/net/chrome_url_request_context.cc @@ -50,7 +50,7 @@ class FactoryForMain : public ChromeURLRequestContextFactory { } private: - const scoped_refptr<const ProfileIOData> profile_io_data_; + const ProfileIOData* const profile_io_data_; }; // Factory that creates the ChromeURLRequestContext for extensions. @@ -64,7 +64,7 @@ class FactoryForExtensions : public ChromeURLRequestContextFactory { } private: - const scoped_refptr<const ProfileIOData> profile_io_data_; + const ProfileIOData* const profile_io_data_; }; // Factory that creates the ChromeURLRequestContext for a given isolated app. @@ -84,7 +84,7 @@ class FactoryForIsolatedApp : public ChromeURLRequestContextFactory { } private: - const scoped_refptr<const ProfileIOData> profile_io_data_; + const ProfileIOData* const profile_io_data_; const std::string app_id_; scoped_refptr<ChromeURLRequestContextGetter> main_request_context_getter_; @@ -102,7 +102,7 @@ class FactoryForMedia : public ChromeURLRequestContextFactory { } private: - const scoped_refptr<const ProfileIOData> profile_io_data_; + const ProfileIOData* const profile_io_data_; }; } // namespace @@ -115,8 +115,7 @@ ChromeURLRequestContextGetter::ChromeURLRequestContextGetter( Profile* profile, ChromeURLRequestContextFactory* factory) : io_thread_(g_browser_process->io_thread()), - factory_(factory), - url_request_context_(NULL) { + factory_(factory) { DCHECK(factory); DCHECK(profile); RegisterPrefsObserver(profile); @@ -126,17 +125,6 @@ ChromeURLRequestContextGetter::~ChromeURLRequestContextGetter() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); DCHECK(registrar_.IsEmpty()) << "Probably didn't call CleanupOnUIThread"; - - // Either we already transformed the factory into a net::URLRequestContext, or - // we still have a pending factory. - DCHECK((factory_.get() && !url_request_context_.get()) || - (!factory_.get() && url_request_context_.get())); - - if (url_request_context_) - io_thread_->UnregisterURLRequestContextGetter(this); - - // The scoped_refptr / scoped_ptr destructors take care of releasing - // |factory_| and |url_request_context_| now. } // Lazily create a ChromeURLRequestContext using our factory. @@ -145,17 +133,15 @@ net::URLRequestContext* ChromeURLRequestContextGetter::GetURLRequestContext() { if (!url_request_context_) { DCHECK(factory_.get()); - url_request_context_ = factory_->Create(); + url_request_context_ = factory_->Create()->GetWeakPtr(); factory_.reset(); - io_thread_->RegisterURLRequestContextGetter(this); } - return url_request_context_; -} + // Should not be NULL, unless we're trying to use the URLRequestContextGetter + // after the Profile has already been deleted. + CHECK(url_request_context_.get()); -void ChromeURLRequestContextGetter::ReleaseURLRequestContext() { - DCHECK(url_request_context_); - url_request_context_ = NULL; + return url_request_context_; } net::CookieStore* ChromeURLRequestContextGetter::DONTUSEME_GetCookieStore() { @@ -352,8 +338,7 @@ void ChromeURLRequestContextGetter::GetCookieStoreAsyncHelper( // ---------------------------------------------------------------------------- ChromeURLRequestContext::ChromeURLRequestContext() - : ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)), - is_incognito_(false) { + : is_incognito_(false) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); } |