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

Side by Side Diff: chrome/browser/signin/signin_manager.h

Issue 216493003: Abstract most Profile knowledge from SigninManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix after rebase Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/signin/fake_signin_manager.cc ('k') | chrome/browser/signin/signin_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 13 matching lines...) Expand all
24 #include <set> 24 #include <set>
25 #include <string> 25 #include <string>
26 26
27 #include "base/compiler_specific.h" 27 #include "base/compiler_specific.h"
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"
35 #include "components/keyed_service/core/keyed_service.h" 34 #include "components/keyed_service/core/keyed_service.h"
36 #include "components/signin/core/browser/signin_internals_util.h" 35 #include "components/signin/core/browser/signin_internals_util.h"
37 #include "components/signin/core/browser/signin_manager_base.h" 36 #include "components/signin/core/browser/signin_manager_base.h"
38 #include "google_apis/gaia/google_service_auth_error.h" 37 #include "google_apis/gaia/google_service_auth_error.h"
39 #include "google_apis/gaia/merge_session_helper.h" 38 #include "google_apis/gaia/merge_session_helper.h"
40 #include "net/cookies/canonical_cookie.h" 39 #include "net/cookies/canonical_cookie.h"
41 40
42 class PrefService; 41 class PrefService;
42 class ProfileOAuth2TokenService;
43 class SigninAccountIdHelper; 43 class SigninAccountIdHelper;
44 class SigninClient; 44 class SigninClient;
45 45
46 class SigninManager : public SigninManagerBase { 46 class SigninManager : public SigninManagerBase {
47 public: 47 public:
48 // 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,
49 // 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
50 // callers to load policy and prompt the user appropriately before completing 50 // callers to load policy and prompt the user appropriately before completing
51 // 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.
52 typedef base::Callback<void(const std::string&)> OAuthTokenFetchedCallback; 52 typedef base::Callback<void(const std::string&)> OAuthTokenFetchedCallback;
53 53
54 // 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
55 // isolated, privileged signin process. 55 // isolated, privileged signin process.
56 static bool IsWebBasedSigninFlowURL(const GURL& url); 56 static bool IsWebBasedSigninFlowURL(const GURL& url);
57 57
58 // This is used to distinguish URLs belonging to the special web signin flow 58 // This is used to distinguish URLs belonging to the special web signin flow
59 // running in the special signin process from other URLs on the same domain. 59 // running in the special signin process from other URLs on the same domain.
60 // We do not grant WebUI privilieges / bindings to this process or to URLs of 60 // We do not grant WebUI privilieges / bindings to this process or to URLs of
61 // this scheme; enforcement of privileges is handled separately by 61 // this scheme; enforcement of privileges is handled separately by
62 // OneClickSigninHelper. 62 // OneClickSigninHelper.
63 static const char kChromeSigninEffectiveSite[]; 63 static const char kChromeSigninEffectiveSite[];
64 64
65 explicit SigninManager(SigninClient* client); 65 SigninManager(SigninClient* client, ProfileOAuth2TokenService* token_service);
66 virtual ~SigninManager(); 66 virtual ~SigninManager();
67 67
68 // Returns true if the username is allowed based on the policy string. 68 // Returns true if the username is allowed based on the policy string.
69 static bool IsUsernameAllowedByPolicy(const std::string& username, 69 static bool IsUsernameAllowedByPolicy(const std::string& username,
70 const std::string& policy); 70 const std::string& policy);
71 71
72 // Attempt to sign in this user with a refresh token. 72 // Attempt to sign in this user with a refresh token.
73 // If non-null, the passed |oauth_fetched_callback| callback is invoked once 73 // If non-null, the passed |oauth_fetched_callback| callback is invoked once
74 // signin has been completed. 74 // signin has been completed.
75 // The callback should invoke SignOut() or CompletePendingSignin() to either 75 // The callback should invoke SignOut() or CompletePendingSignin() to either
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 virtual bool IsSigninAllowed() const OVERRIDE; 108 virtual bool IsSigninAllowed() const OVERRIDE;
109 109
110 // Returns true if the passed username is allowed by policy. Virtual for 110 // Returns true if the passed username is allowed by policy. Virtual for
111 // mocking in tests. 111 // mocking in tests.
112 virtual bool IsAllowedUsername(const std::string& username) const; 112 virtual bool IsAllowedUsername(const std::string& username) const;
113 113
114 // If an authentication is in progress, return the username being 114 // If an authentication is in progress, return the username being
115 // authenticated. Returns an empty string if no auth is in progress. 115 // authenticated. Returns an empty string if no auth is in progress.
116 const std::string& GetUsernameForAuthInProgress() const; 116 const std::string& GetUsernameForAuthInProgress() const;
117 117
118 // Set the profile preference to turn off one-click sign-in so that it won't 118 // Set the preference to turn off one-click sign-in so that it won't ever
119 // ever show it again in this profile (even if the user tries a new account). 119 // show it again for the user associated with |prefs| (even if the user tries
120 static void DisableOneClickSignIn(Profile* profile); 120 // a new account).
121 static void DisableOneClickSignIn(PrefService* prefs);
121 122
122 // Tells the SigninManager whether to prohibit signout for this profile. 123 // Tells the SigninManager whether to prohibit signout for this profile.
123 // If |prohibit_signout| is true, then signout will be prohibited. 124 // If |prohibit_signout| is true, then signout will be prohibited.
124 void ProhibitSignout(bool prohibit_signout); 125 void ProhibitSignout(bool prohibit_signout);
125 126
126 // If true, signout is prohibited for this profile (calls to SignOut() are 127 // If true, signout is prohibited for this profile (calls to SignOut() are
127 // ignored). 128 // ignored).
128 bool IsSignoutProhibited() const; 129 bool IsSignoutProhibited() const;
129 130
130 // Add or remove observers for the merge session notification. 131 // Add or remove observers for the merge session notification.
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 // Temporarily saves the oauth2 refresh token. It will be passed to the 196 // Temporarily saves the oauth2 refresh token. It will be passed to the
196 // token service so that it does not need to mint new ones. 197 // token service so that it does not need to mint new ones.
197 std::string temp_refresh_token_; 198 std::string temp_refresh_token_;
198 199
199 base::WeakPtrFactory<SigninManager> weak_pointer_factory_; 200 base::WeakPtrFactory<SigninManager> weak_pointer_factory_;
200 201
201 // The SigninClient object associated with this object. Must outlive this 202 // The SigninClient object associated with this object. Must outlive this
202 // object. 203 // object.
203 SigninClient* client_; 204 SigninClient* client_;
204 205
206 // The ProfileOAuth2TokenService instance associated with this object. Must
207 // outlive this object.
208 ProfileOAuth2TokenService* token_service_;
209
205 // Helper object to listen for changes to signin preferences stored in non- 210 // Helper object to listen for changes to signin preferences stored in non-
206 // profile-specific local prefs (like kGoogleServicesUsernamePattern). 211 // profile-specific local prefs (like kGoogleServicesUsernamePattern).
207 PrefChangeRegistrar local_state_pref_registrar_; 212 PrefChangeRegistrar local_state_pref_registrar_;
208 213
209 // Helper object to listen for changes to the signin allowed preference. 214 // Helper object to listen for changes to the signin allowed preference.
210 BooleanPrefMember signin_allowed_; 215 BooleanPrefMember signin_allowed_;
211 216
212 // Helper to merge signed in account into the content area. 217 // Helper to merge signed in account into the content area.
213 scoped_ptr<MergeSessionHelper> merge_session_helper_; 218 scoped_ptr<MergeSessionHelper> merge_session_helper_;
214 219
215 DISALLOW_COPY_AND_ASSIGN(SigninManager); 220 DISALLOW_COPY_AND_ASSIGN(SigninManager);
216 }; 221 };
217 222
218 #endif // !defined(OS_CHROMEOS) 223 #endif // !defined(OS_CHROMEOS)
219 224
220 #endif // CHROME_BROWSER_SIGNIN_SIGNIN_MANAGER_H_ 225 #endif // CHROME_BROWSER_SIGNIN_SIGNIN_MANAGER_H_
OLDNEW
« no previous file with comments | « chrome/browser/signin/fake_signin_manager.cc ('k') | chrome/browser/signin/signin_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698