| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // The signin manager encapsulates some functionality tracking | 5 // The signin manager encapsulates some functionality tracking |
| 6 // which user is signed in. See SigninManagerBase for full description of | 6 // which user is signed in. See SigninManagerBase for full description of |
| 7 // responsibilities. The class defined in this file provides functionality | 7 // responsibilities. The class defined in this file provides functionality |
| 8 // required by all platforms except Chrome OS. | 8 // required by all platforms except Chrome OS. |
| 9 // | 9 // |
| 10 // When a user is signed in, a ClientLogin request is run on their behalf. | 10 // When a user is signed in, a ClientLogin request is run on their behalf. |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 #include "base/gtest_prod_util.h" | 28 #include "base/gtest_prod_util.h" |
| 29 #include "base/logging.h" | 29 #include "base/logging.h" |
| 30 #include "base/memory/scoped_ptr.h" | 30 #include "base/memory/scoped_ptr.h" |
| 31 #include "base/observer_list.h" | 31 #include "base/observer_list.h" |
| 32 #include "base/prefs/pref_change_registrar.h" | 32 #include "base/prefs/pref_change_registrar.h" |
| 33 #include "base/prefs/pref_member.h" | 33 #include "base/prefs/pref_member.h" |
| 34 #include "chrome/browser/profiles/profile.h" | 34 #include "chrome/browser/profiles/profile.h" |
| 35 #include "components/keyed_service/core/keyed_service.h" | 35 #include "components/keyed_service/core/keyed_service.h" |
| 36 #include "components/signin/core/browser/signin_internals_util.h" | 36 #include "components/signin/core/browser/signin_internals_util.h" |
| 37 #include "components/signin/core/browser/signin_manager_base.h" | 37 #include "components/signin/core/browser/signin_manager_base.h" |
| 38 #include "content/public/browser/render_process_host_observer.h" | |
| 39 #include "google_apis/gaia/google_service_auth_error.h" | 38 #include "google_apis/gaia/google_service_auth_error.h" |
| 40 #include "google_apis/gaia/merge_session_helper.h" | 39 #include "google_apis/gaia/merge_session_helper.h" |
| 41 #include "net/cookies/canonical_cookie.h" | 40 #include "net/cookies/canonical_cookie.h" |
| 42 | 41 |
| 43 class PrefService; | 42 class PrefService; |
| 44 class SigninAccountIdHelper; | 43 class SigninAccountIdHelper; |
| 45 class SigninClient; | 44 class SigninClient; |
| 46 | 45 |
| 47 class SigninManager : public SigninManagerBase, | 46 class SigninManager : public SigninManagerBase { |
| 48 public content::RenderProcessHostObserver { | |
| 49 public: | 47 public: |
| 50 // The callback invoked once the OAuth token has been fetched during signin, | 48 // The callback invoked once the OAuth token has been fetched during signin, |
| 51 // but before the profile transitions to the "signed-in" state. This allows | 49 // but before the profile transitions to the "signed-in" state. This allows |
| 52 // callers to load policy and prompt the user appropriately before completing | 50 // callers to load policy and prompt the user appropriately before completing |
| 53 // signin. The callback is passed the just-fetched OAuth login refresh token. | 51 // signin. The callback is passed the just-fetched OAuth login refresh token. |
| 54 typedef base::Callback<void(const std::string&)> OAuthTokenFetchedCallback; | 52 typedef base::Callback<void(const std::string&)> OAuthTokenFetchedCallback; |
| 55 | 53 |
| 56 // Returns true if |url| is a web signin URL and should be hosted in an | 54 // Returns true if |url| is a web signin URL and should be hosted in an |
| 57 // isolated, privileged signin process. | 55 // isolated, privileged signin process. |
| 58 static bool IsWebBasedSigninFlowURL(const GURL& url); | 56 static bool IsWebBasedSigninFlowURL(const GURL& url); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 virtual bool IsAllowedUsername(const std::string& username) const; | 112 virtual bool IsAllowedUsername(const std::string& username) const; |
| 115 | 113 |
| 116 // If an authentication is in progress, return the username being | 114 // If an authentication is in progress, return the username being |
| 117 // authenticated. Returns an empty string if no auth is in progress. | 115 // authenticated. Returns an empty string if no auth is in progress. |
| 118 const std::string& GetUsernameForAuthInProgress() const; | 116 const std::string& GetUsernameForAuthInProgress() const; |
| 119 | 117 |
| 120 // Set the profile preference to turn off one-click sign-in so that it won't | 118 // Set the profile preference to turn off one-click sign-in so that it won't |
| 121 // ever show it again in this profile (even if the user tries a new account). | 119 // ever show it again in this profile (even if the user tries a new account). |
| 122 static void DisableOneClickSignIn(Profile* profile); | 120 static void DisableOneClickSignIn(Profile* profile); |
| 123 | 121 |
| 124 // content::RenderProcessHostObserver | |
| 125 virtual void RenderProcessHostDestroyed( | |
| 126 content::RenderProcessHost* host) OVERRIDE; | |
| 127 | |
| 128 // Tells the SigninManager whether to prohibit signout for this profile. | 122 // Tells the SigninManager whether to prohibit signout for this profile. |
| 129 // If |prohibit_signout| is true, then signout will be prohibited. | 123 // If |prohibit_signout| is true, then signout will be prohibited. |
| 130 void ProhibitSignout(bool prohibit_signout); | 124 void ProhibitSignout(bool prohibit_signout); |
| 131 | 125 |
| 132 // If true, signout is prohibited for this profile (calls to SignOut() are | 126 // If true, signout is prohibited for this profile (calls to SignOut() are |
| 133 // ignored). | 127 // ignored). |
| 134 bool IsSignoutProhibited() const; | 128 bool IsSignoutProhibited() const; |
| 135 | 129 |
| 136 // Allows the SigninManager to track the privileged signin process | |
| 137 // identified by |host_id| so that we can later ask (via IsSigninProcess) | |
| 138 // if it is safe to sign the user in from the current context (see | |
| 139 // OneClickSigninHelper). All of this tracking state is reset once the | |
| 140 // renderer process terminates. | |
| 141 // | |
| 142 // N.B. This is the id returned by RenderProcessHost::GetID(). | |
| 143 void SetSigninProcess(int host_id); | |
| 144 void ClearSigninProcess(); | |
| 145 bool IsSigninProcess(int host_id) const; | |
| 146 bool HasSigninProcess() const; | |
| 147 | |
| 148 // Add or remove observers for the merge session notification. | 130 // Add or remove observers for the merge session notification. |
| 149 void AddMergeSessionObserver(MergeSessionHelper::Observer* observer); | 131 void AddMergeSessionObserver(MergeSessionHelper::Observer* observer); |
| 150 void RemoveMergeSessionObserver(MergeSessionHelper::Observer* observer); | 132 void RemoveMergeSessionObserver(MergeSessionHelper::Observer* observer); |
| 151 | 133 |
| 152 protected: | 134 protected: |
| 153 // Pointer to parent profile (protected so FakeSigninManager can access | 135 // Pointer to parent profile (protected so FakeSigninManager can access |
| 154 // it). | 136 // it). |
| 155 Profile* profile_; | 137 Profile* profile_; |
| 156 | 138 |
| 157 // Flag saying whether signing out is allowed. | 139 // Flag saying whether signing out is allowed. |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 // to one of the StartSigninXXX methods and when the sign in is either | 191 // to one of the StartSigninXXX methods and when the sign in is either |
| 210 // successful or not. | 192 // successful or not. |
| 211 SigninType type_; | 193 SigninType type_; |
| 212 | 194 |
| 213 // Temporarily saves the oauth2 refresh token. It will be passed to the | 195 // Temporarily saves the oauth2 refresh token. It will be passed to the |
| 214 // token service so that it does not need to mint new ones. | 196 // token service so that it does not need to mint new ones. |
| 215 std::string temp_refresh_token_; | 197 std::string temp_refresh_token_; |
| 216 | 198 |
| 217 base::WeakPtrFactory<SigninManager> weak_pointer_factory_; | 199 base::WeakPtrFactory<SigninManager> weak_pointer_factory_; |
| 218 | 200 |
| 219 // See SetSigninProcess. Tracks the currently active signin process | |
| 220 // by ID, if there is one. | |
| 221 int signin_host_id_; | |
| 222 | |
| 223 // The RenderProcessHosts being observed. | |
| 224 std::set<content::RenderProcessHost*> signin_hosts_observed_; | |
| 225 | |
| 226 // The SigninClient object associated with this object. Must outlive this | 201 // The SigninClient object associated with this object. Must outlive this |
| 227 // object. | 202 // object. |
| 228 SigninClient* client_; | 203 SigninClient* client_; |
| 229 | 204 |
| 230 // Helper object to listen for changes to signin preferences stored in non- | 205 // Helper object to listen for changes to signin preferences stored in non- |
| 231 // profile-specific local prefs (like kGoogleServicesUsernamePattern). | 206 // profile-specific local prefs (like kGoogleServicesUsernamePattern). |
| 232 PrefChangeRegistrar local_state_pref_registrar_; | 207 PrefChangeRegistrar local_state_pref_registrar_; |
| 233 | 208 |
| 234 // Helper object to listen for changes to the signin allowed preference. | 209 // Helper object to listen for changes to the signin allowed preference. |
| 235 BooleanPrefMember signin_allowed_; | 210 BooleanPrefMember signin_allowed_; |
| 236 | 211 |
| 237 // Helper to merge signed in account into the content area. | 212 // Helper to merge signed in account into the content area. |
| 238 scoped_ptr<MergeSessionHelper> merge_session_helper_; | 213 scoped_ptr<MergeSessionHelper> merge_session_helper_; |
| 239 | 214 |
| 240 DISALLOW_COPY_AND_ASSIGN(SigninManager); | 215 DISALLOW_COPY_AND_ASSIGN(SigninManager); |
| 241 }; | 216 }; |
| 242 | 217 |
| 243 #endif // !defined(OS_CHROMEOS) | 218 #endif // !defined(OS_CHROMEOS) |
| 244 | 219 |
| 245 #endif // CHROME_BROWSER_SIGNIN_SIGNIN_MANAGER_H_ | 220 #endif // CHROME_BROWSER_SIGNIN_SIGNIN_MANAGER_H_ |
| OLD | NEW |