summaryrefslogtreecommitdiffstats
path: root/chrome/browser/signin/oauth2_token_service_delegate_android.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/signin/oauth2_token_service_delegate_android.cc')
-rw-r--r--chrome/browser/signin/oauth2_token_service_delegate_android.cc21
1 files changed, 14 insertions, 7 deletions
diff --git a/chrome/browser/signin/oauth2_token_service_delegate_android.cc b/chrome/browser/signin/oauth2_token_service_delegate_android.cc
index bad1a24..6b88c6e 100644
--- a/chrome/browser/signin/oauth2_token_service_delegate_android.cc
+++ b/chrome/browser/signin/oauth2_token_service_delegate_android.cc
@@ -305,7 +305,8 @@ void OAuth2TokenServiceDelegateAndroid::ValidateAccounts(
void OAuth2TokenServiceDelegateAndroid::ValidateAccounts(
const std::string& signed_in_account,
bool force_notifications) {
- std::vector<std::string> prev_ids = GetAccounts();
+ std::vector<std::string> prev_stored_ids = GetAccounts();
+ std::vector<std::string> prev_ids;
std::vector<std::string> curr_ids = GetSystemAccountNames();
std::vector<std::string> refreshed_ids;
std::vector<std::string> revoked_ids;
@@ -314,8 +315,10 @@ void OAuth2TokenServiceDelegateAndroid::ValidateAccounts(
for (size_t i = 0; i < curr_ids.size(); ++i)
curr_ids[i] = MapAccountNameToAccountId(curr_ids[i]);
- for (size_t i = 0; i < prev_ids.size(); ++i)
- ValidateAccountId(prev_ids[i]);
+ for (size_t i = 0; i < prev_stored_ids.size(); ++i) {
+ if (ValidateAccountId(prev_stored_ids[i]))
+ prev_ids.push_back(prev_stored_ids[i]);
+ }
DVLOG(1) << "OAuth2TokenServiceDelegateAndroid::ValidateAccounts:"
<< " sigined_in_account=" << signed_in_account
@@ -481,10 +484,14 @@ void OAuth2TokenServiceDelegateAndroid::FireRefreshTokenRevoked(
DVLOG(1) << "OAuth2TokenServiceDelegateAndroid::FireRefreshTokenRevoked id="
<< account_id;
JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jstring> account_name =
- ConvertUTF8ToJavaString(env, MapAccountIdToAccountName(account_id));
- Java_OAuth2TokenService_notifyRefreshTokenRevoked(env, java_ref_.obj(),
- account_name.obj());
+ std::string account_name = MapAccountIdToAccountName(account_id);
+ // Do not crash in case of missed information.
+ if (!account_name.empty()) {
+ ScopedJavaLocalRef<jstring> account =
+ ConvertUTF8ToJavaString(env, account_name);
+ Java_OAuth2TokenService_notifyRefreshTokenRevoked(env, java_ref_.obj(),
+ account.obj());
+ }
OAuth2TokenServiceDelegate::FireRefreshTokenRevoked(account_id);
}