OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "chrome/browser/signin/oauth2_token_service_delegate_android.h" | 5 #include "chrome/browser/signin/oauth2_token_service_delegate_android.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_array.h" | 8 #include "base/android/jni_array.h" |
9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 scope += " "; | 124 scope += " "; |
125 scope += *it; | 125 scope += *it; |
126 } | 126 } |
127 return scope; | 127 return scope; |
128 } | 128 } |
129 | 129 |
130 } // namespace | 130 } // namespace |
131 | 131 |
132 bool OAuth2TokenServiceDelegateAndroid::is_testing_profile_ = false; | 132 bool OAuth2TokenServiceDelegateAndroid::is_testing_profile_ = false; |
133 | 133 |
| 134 OAuth2TokenServiceDelegateAndroid::ErrorInfo::ErrorInfo() |
| 135 : error(GoogleServiceAuthError::NONE) {} |
| 136 |
| 137 OAuth2TokenServiceDelegateAndroid::ErrorInfo::ErrorInfo( |
| 138 const GoogleServiceAuthError& error) |
| 139 : error(error) {} |
| 140 |
134 OAuth2TokenServiceDelegateAndroid::OAuth2TokenServiceDelegateAndroid() { | 141 OAuth2TokenServiceDelegateAndroid::OAuth2TokenServiceDelegateAndroid() { |
135 DVLOG(1) << "OAuth2TokenServiceDelegateAndroid::ctor"; | 142 DVLOG(1) << "OAuth2TokenServiceDelegateAndroid::ctor"; |
136 JNIEnv* env = AttachCurrentThread(); | 143 JNIEnv* env = AttachCurrentThread(); |
137 base::android::ScopedJavaLocalRef<jobject> local_java_ref = | 144 base::android::ScopedJavaLocalRef<jobject> local_java_ref = |
138 Java_OAuth2TokenService_create(env, reinterpret_cast<intptr_t>(this)); | 145 Java_OAuth2TokenService_create(env, reinterpret_cast<intptr_t>(this)); |
139 java_ref_.Reset(env, local_java_ref.obj()); | 146 java_ref_.Reset(env, local_java_ref.obj()); |
140 } | 147 } |
141 | 148 |
142 OAuth2TokenServiceDelegateAndroid::~OAuth2TokenServiceDelegateAndroid() { | 149 OAuth2TokenServiceDelegateAndroid::~OAuth2TokenServiceDelegateAndroid() { |
143 } | 150 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 const std::string& account_id) const { | 182 const std::string& account_id) const { |
176 JNIEnv* env = AttachCurrentThread(); | 183 JNIEnv* env = AttachCurrentThread(); |
177 ScopedJavaLocalRef<jstring> j_account_id = | 184 ScopedJavaLocalRef<jstring> j_account_id = |
178 ConvertUTF8ToJavaString(env, account_id); | 185 ConvertUTF8ToJavaString(env, account_id); |
179 jboolean refresh_token_is_available = | 186 jboolean refresh_token_is_available = |
180 Java_OAuth2TokenService_hasOAuth2RefreshToken( | 187 Java_OAuth2TokenService_hasOAuth2RefreshToken( |
181 env, base::android::GetApplicationContext(), j_account_id.obj()); | 188 env, base::android::GetApplicationContext(), j_account_id.obj()); |
182 return refresh_token_is_available == JNI_TRUE; | 189 return refresh_token_is_available == JNI_TRUE; |
183 } | 190 } |
184 | 191 |
| 192 bool OAuth2TokenServiceDelegateAndroid::RefreshTokenHasError( |
| 193 const std::string& account_id) const { |
| 194 auto it = errors_.find(account_id); |
| 195 // TODO(rogerta): should we distinguish between transient and persistent? |
| 196 return it == errors_.end() ? false : IsError(it->second.error); |
| 197 } |
| 198 |
185 void OAuth2TokenServiceDelegateAndroid::UpdateAuthError( | 199 void OAuth2TokenServiceDelegateAndroid::UpdateAuthError( |
186 const std::string& account_id, | 200 const std::string& account_id, |
187 const GoogleServiceAuthError& error) { | 201 const GoogleServiceAuthError& error) { |
188 // TODO(rogerta): do we need to update anything, or does the system handle it? | 202 if (error.state() == GoogleServiceAuthError::NONE) { |
| 203 errors_.erase(account_id); |
| 204 } else { |
| 205 // TODO(rogerta): should we distinguish between transient and persistent? |
| 206 errors_[account_id] = ErrorInfo(error); |
| 207 } |
189 } | 208 } |
190 | 209 |
191 std::vector<std::string> OAuth2TokenServiceDelegateAndroid::GetAccounts() { | 210 std::vector<std::string> OAuth2TokenServiceDelegateAndroid::GetAccounts() { |
192 std::vector<std::string> accounts; | 211 std::vector<std::string> accounts; |
193 JNIEnv* env = AttachCurrentThread(); | 212 JNIEnv* env = AttachCurrentThread(); |
194 ScopedJavaLocalRef<jobjectArray> j_accounts = | 213 ScopedJavaLocalRef<jobjectArray> j_accounts = |
195 Java_OAuth2TokenService_getAccounts( | 214 Java_OAuth2TokenService_getAccounts( |
196 env, base::android::GetApplicationContext()); | 215 env, base::android::GetApplicationContext()); |
197 // TODO(fgorski): We may decide to filter out some of the accounts. | 216 // TODO(fgorski): We may decide to filter out some of the accounts. |
198 base::android::AppendJavaStringArrayToStringVector(env, j_accounts.obj(), | 217 base::android::AppendJavaStringArrayToStringVector(env, j_accounts.obj(), |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 GoogleServiceAuthError err(authToken | 467 GoogleServiceAuthError err(authToken |
449 ? GoogleServiceAuthError::NONE | 468 ? GoogleServiceAuthError::NONE |
450 : GoogleServiceAuthError::CONNECTION_FAILED); | 469 : GoogleServiceAuthError::CONNECTION_FAILED); |
451 heap_callback->Run(err, token, base::Time()); | 470 heap_callback->Run(err, token, base::Time()); |
452 } | 471 } |
453 | 472 |
454 // static | 473 // static |
455 bool OAuth2TokenServiceDelegateAndroid::Register(JNIEnv* env) { | 474 bool OAuth2TokenServiceDelegateAndroid::Register(JNIEnv* env) { |
456 return RegisterNativesImpl(env); | 475 return RegisterNativesImpl(env); |
457 } | 476 } |
OLD | NEW |