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

Unified Diff: chrome/browser/chromeos/login/login_utils.cc

Issue 10657009: Removing last usage of default request context. Fixing up login_utils to not need it by allowing ac… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 5 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 | « no previous file | chrome/browser/profiles/profile.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/login/login_utils.cc
===================================================================
--- chrome/browser/chromeos/login/login_utils.cc (revision 145957)
+++ chrome/browser/chromeos/login/login_utils.cc (working copy)
@@ -72,6 +72,7 @@
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/session_manager_client.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_service.h"
#include "googleurl/src/gurl.h"
#include "media/base/media_switches.h"
@@ -226,6 +227,7 @@
public OAuth1TokenFetcher::Delegate,
public OAuthLoginVerifier::Delegate,
public net::NetworkChangeNotifier::ConnectionTypeObserver,
+ public content::NotificationObserver,
public base::SupportsWeakPtr<LoginUtilsImpl> {
public:
LoginUtilsImpl()
@@ -234,8 +236,17 @@
has_cookies_(false),
delegate_(NULL),
job_restart_request_(NULL),
- should_restore_auth_session_(false) {
+ should_restore_auth_session_(false),
+ url_request_context_getter_(NULL) {
net::NetworkChangeNotifier::AddConnectionTypeObserver(this);
+ // During tests, the browser_process may not be initialized yet causing
+ // this to fail.
+ if (g_browser_process) {
Nikita (slow) 2012/07/13 12:08:12 What were those tests when this failed?
+ registrar_.Add(
+ this,
+ chrome::NOTIFICATION_PROFILE_URL_REQUEST_CONTEXT_GETTER_INITIALIZED,
+ content::Source<Profile>(ProfileManager::GetDefaultProfile()));
+ }
}
virtual ~LoginUtilsImpl() {
@@ -286,6 +297,11 @@
virtual void OnConnectionTypeChanged(
net::NetworkChangeNotifier::ConnectionType type) OVERRIDE;
+ // content::NotificationObserver overrides.
+ virtual void Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) OVERRIDE;
+
protected:
virtual std::string GetOffTheRecordCommandLine(
const GURL& start_url,
@@ -354,6 +370,12 @@
// online state change.
bool should_restore_auth_session_;
+ content::NotificationRegistrar registrar_;
+
+ // This is set via a notification after the profile has initialized the
+ // getter.
+ net::URLRequestContextGetter* url_request_context_getter_;
+
DISALLOW_COPY_AND_ASSIGN(LoginUtilsImpl);
};
@@ -862,11 +884,21 @@
// We use a special class for this so that it can be safely leaked if we
// never connect. At shutdown the order is not well defined, and it's possible
// for the infrastructure needed to unregister might be unstable and crash.
-class WarmingObserver : public NetworkLibrary::NetworkManagerObserver {
+class WarmingObserver : public NetworkLibrary::NetworkManagerObserver,
+ public content::NotificationObserver {
public:
- WarmingObserver() {
+ WarmingObserver()
+ : url_request_context_getter_(NULL) {
NetworkLibrary *netlib = CrosLibrary::Get()->GetNetworkLibrary();
netlib->AddNetworkManagerObserver(this);
+ // During tests, the browser_process may not be initialized yet causing
+ // this to fail.
+ if (g_browser_process) {
+ registrar_.Add(
+ this,
+ chrome::NOTIFICATION_PROFILE_URL_REQUEST_CONTEXT_GETTER_INITIALIZED,
+ content::Source<Profile>(ProfileManager::GetDefaultProfile()));
+ }
}
virtual ~WarmingObserver() {}
@@ -879,11 +911,34 @@
GURL(GaiaUrls::GetInstance()->client_login_url()),
chrome_browser_net::UrlInfo::EARLY_LOAD_MOTIVATED,
kConnectionsNeeded,
- make_scoped_refptr(Profile::GetDefaultRequestContextDeprecated()));
+ url_request_context_getter_);
netlib->RemoveNetworkManagerObserver(this);
delete this;
}
}
+
+ // content::NotificationObserver overrides.
+ virtual void Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
+ switch (type) {
+ case chrome::NOTIFICATION_PROFILE_URL_REQUEST_CONTEXT_GETTER_INITIALIZED: {
+ Profile* profile = content::Source<Profile>(source).ptr();
+ url_request_context_getter_ = profile->GetRequestContext();
+ registrar_.Remove(
+ this,
+ chrome::NOTIFICATION_PROFILE_URL_REQUEST_CONTEXT_GETTER_INITIALIZED,
+ content::Source<Profile>(profile));
+
+ break;
+ }
+ default:
+ NOTREACHED();
+ }
+}
+ private:
+ net::URLRequestContextGetter* url_request_context_getter_;
+ content::NotificationRegistrar registrar_;
};
void LoginUtilsImpl::PrewarmAuthentication() {
@@ -894,7 +949,7 @@
GURL(GaiaUrls::GetInstance()->client_login_url()),
chrome_browser_net::UrlInfo::EARLY_LOAD_MOTIVATED,
kConnectionsNeeded,
- make_scoped_refptr(Profile::GetDefaultRequestContextDeprecated()));
+ url_request_context_getter_);
} else {
new WarmingObserver();
}
@@ -1108,6 +1163,24 @@
}
}
+void LoginUtilsImpl::Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
+ switch (type) {
+ case chrome::NOTIFICATION_PROFILE_URL_REQUEST_CONTEXT_GETTER_INITIALIZED: {
+ Profile* profile = content::Source<Profile>(source).ptr();
+ url_request_context_getter_ = profile->GetRequestContext();
+ registrar_.Remove(
+ this,
+ chrome::NOTIFICATION_PROFILE_URL_REQUEST_CONTEXT_GETTER_INITIALIZED,
+ content::Source<Profile>(profile));
+ break;
+ }
+ default:
+ NOTREACHED();
+ }
+}
+
// static
LoginUtils* LoginUtils::Get() {
return LoginUtilsWrapper::GetInstance()->get();
« no previous file with comments | « no previous file | chrome/browser/profiles/profile.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698