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

Unified Diff: chrome/browser/signin/android_profile_oauth2_token_service.cc

Issue 23068005: Convert UserPolicySigninService to use OAuth2TokenService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with ToT Created 7 years, 4 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
Index: chrome/browser/signin/android_profile_oauth2_token_service.cc
diff --git a/chrome/browser/signin/android_profile_oauth2_token_service.cc b/chrome/browser/signin/android_profile_oauth2_token_service.cc
index f79eb630dfb3a5b5be7c22ed0a578209491be7ec..42a6516214644c8ef7ad350e8ea526da60a7d465 100644
--- a/chrome/browser/signin/android_profile_oauth2_token_service.cc
+++ b/chrome/browser/signin/android_profile_oauth2_token_service.cc
@@ -36,6 +36,16 @@ std::string CombineScopes(const OAuth2TokenService::ScopeSet& scopes) {
return scope;
}
+// Callback from FetchOAuth2TokenWithUsername().
+// Arguments:
+// - the error, or NONE if the token fetch was successful.
+// - the OAuth2 access token.
+// - the expiry time of the token (may be null, indicating that the expiry
+// time is unknown.
+typedef base::Callback<void(
+ const GoogleServiceAuthError&, const std::string&, const base::Time&)>
+ FetchOAuth2TokenCallback;
+
} // namespace
AndroidProfileOAuth2TokenService::AndroidProfileOAuth2TokenService() {
@@ -45,18 +55,6 @@ AndroidProfileOAuth2TokenService::~AndroidProfileOAuth2TokenService() {
}
scoped_ptr<OAuth2TokenService::Request>
- AndroidProfileOAuth2TokenService::StartRequest(
- const OAuth2TokenService::ScopeSet& scopes,
- OAuth2TokenService::Consumer* consumer) {
- const std::string& sync_username =
- SigninManagerFactory::GetForProfile(profile())->
- GetAuthenticatedUsername();
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- DCHECK(!sync_username.empty());
- return StartRequestForUsername(sync_username, scopes, consumer);
-}
-
-scoped_ptr<OAuth2TokenService::Request>
AndroidProfileOAuth2TokenService::StartRequestForUsername(
const std::string& username,
const OAuth2TokenService::ScopeSet& scopes,
@@ -64,10 +62,7 @@ scoped_ptr<OAuth2TokenService::Request>
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
scoped_ptr<RequestImpl> request(new RequestImpl(consumer));
- FetchOAuth2Token(
- username,
- CombineScopes(scopes),
- base::Bind(&RequestImpl::InformConsumer, request->AsWeakPtr()));
+ FetchOAuth2TokenWithUsername(request.get(), username, scopes);
return request.PassAs<Request>();
}
@@ -91,20 +86,36 @@ void AndroidProfileOAuth2TokenService::InvalidateToken(
}
void AndroidProfileOAuth2TokenService::FetchOAuth2Token(
+ RequestImpl* request,
+ net::URLRequestContextGetter* getter,
+ const std::string& client_id,
+ const std::string& client_secret,
+ const OAuth2TokenService::ScopeSet& scopes) {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ std::string username = SigninManagerFactory::GetForProfile(profile())->
+ GetAuthenticatedUsername();
+ DCHECK(!username.empty());
+ // Just ignore client_id, getter, etc since we don't use them on Android.
+ FetchOAuth2TokenWithUsername(request, username, scopes);
+}
+
+void AndroidProfileOAuth2TokenService::FetchOAuth2TokenWithUsername(
+ RequestImpl* request,
const std::string& username,
- const std::string& scope,
- const FetchOAuth2TokenCallback& callback) {
+ const OAuth2TokenService::ScopeSet& scopes) {
JNIEnv* env = AttachCurrentThread();
+ std::string scope = CombineScopes(scopes);
ScopedJavaLocalRef<jstring> j_username =
ConvertUTF8ToJavaString(env, username);
ScopedJavaLocalRef<jstring> j_scope =
ConvertUTF8ToJavaString(env, scope);
- // Allocate a copy of the callback on the heap, because the callback
+ // Allocate a copy of the request WeakPtr on the heap, because the object
// needs to be passed through JNI as an int.
// It will be passed back to OAuth2TokenFetched(), where it will be freed.
scoped_ptr<FetchOAuth2TokenCallback> heap_callback(
- new FetchOAuth2TokenCallback(callback));
+ new FetchOAuth2TokenCallback(base::Bind(&RequestImpl::InformConsumer,
+ request->AsWeakPtr())));
// Call into Java to get a new token.
Java_AndroidProfileOAuth2TokenServiceHelper_getOAuth2AuthToken(
@@ -121,11 +132,8 @@ void OAuth2TokenFetched(JNIEnv* env, jclass clazz,
jboolean result,
jint nativeCallback) {
std::string token = ConvertJavaStringToUTF8(env, authToken);
- scoped_ptr<AndroidProfileOAuth2TokenService::FetchOAuth2TokenCallback>
- heap_callback(
- reinterpret_cast<
- AndroidProfileOAuth2TokenService::FetchOAuth2TokenCallback*>(
- nativeCallback));
+ scoped_ptr<FetchOAuth2TokenCallback> heap_callback(
+ reinterpret_cast<FetchOAuth2TokenCallback*>(nativeCallback));
GoogleServiceAuthError err(result ?
GoogleServiceAuthError::NONE :
GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS);

Powered by Google App Engine
This is Rietveld 408576698