diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-23 19:15:29 -0400 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-23 19:15:29 -0400 |
commit | 8799b96ea09d5fdd9904dd9de3002c0a9cd28fdc (patch) | |
tree | ebec15a84ad06a36be9c6c9e6a57d86dd23cc7ed /core | |
parent | 8f1e598118d612988ffecfa979778e9aab4ece57 (diff) | |
parent | 50c05f38b3728b7430dd4bb8d98565d9c5e56798 (diff) | |
download | frameworks_base-8799b96ea09d5fdd9904dd9de3002c0a9cd28fdc.zip frameworks_base-8799b96ea09d5fdd9904dd9de3002c0a9cd28fdc.tar.gz frameworks_base-8799b96ea09d5fdd9904dd9de3002c0a9cd28fdc.tar.bz2 |
Merge change 26314 into eclair
* changes:
Delay broadcasting ACCOUNTS_CHANGED until we're certain AndroidId is ready.
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/accounts/AccountManagerService.java | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/core/java/android/accounts/AccountManagerService.java b/core/java/android/accounts/AccountManagerService.java index 32a2997..2d2e75f 100644 --- a/core/java/android/accounts/AccountManagerService.java +++ b/core/java/android/accounts/AccountManagerService.java @@ -73,6 +73,10 @@ import com.android.internal.R; public class AccountManagerService extends IAccountManager.Stub implements RegisteredServicesCacheListener { + private static final String GOOGLE_ACCOUNT_TYPE = "com.google.GAIA"; + + private static final String NO_BROADCAST_FLAG = "nobroadcast"; + private static final String TAG = "AccountManagerService"; private static final int TIMEOUT_DELAY_MS = 1000 * 60; @@ -357,6 +361,14 @@ public class AccountManagerService SQLiteDatabase db = mOpenHelper.getWritableDatabase(); db.beginTransaction(); try { + boolean noBroadcast = false; + if (account.type.equals(GOOGLE_ACCOUNT_TYPE)) { + // Look for the 'nobroadcast' flag and remove it since we don't want it to persist + // in the db. + noBroadcast = extras.getBoolean(NO_BROADCAST_FLAG, false); + extras.remove(NO_BROADCAST_FLAG); + } + long numMatches = DatabaseUtils.longForQuery(db, "select count(*) from " + TABLE_ACCOUNTS + " WHERE " + ACCOUNTS_NAME + "=? AND " + ACCOUNTS_TYPE+ "=?", @@ -381,7 +393,9 @@ public class AccountManagerService } } db.setTransactionSuccessful(); - sendAccountsChangedBroadcast(); + if (!noBroadcast) { + sendAccountsChangedBroadcast(); + } return true; } finally { db.endTransaction(); @@ -608,6 +622,10 @@ public class AccountManagerService public void setUserData(Account account, String key, String value) { checkAuthenticateAccountsPermission(account); long identityToken = clearCallingIdentity(); + if (account.type.equals(GOOGLE_ACCOUNT_TYPE) && key.equals("broadcast")) { + sendAccountsChangedBroadcast(); + return; + } try { writeUserdataIntoDatabase(account, key, value); } finally { |