summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-09-23 19:15:29 -0400
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-09-23 19:15:29 -0400
commit8799b96ea09d5fdd9904dd9de3002c0a9cd28fdc (patch)
treeebec15a84ad06a36be9c6c9e6a57d86dd23cc7ed /core
parent8f1e598118d612988ffecfa979778e9aab4ece57 (diff)
parent50c05f38b3728b7430dd4bb8d98565d9c5e56798 (diff)
downloadframeworks_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.java20
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 {