summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKen Shirriff <kens@google.com>2009-07-20 14:57:24 -0700
committerKen Shirriff <kens@google.com>2009-07-20 15:36:56 -0700
commitc1f2836796a7dfc679547689ee8124ae0b09b60e (patch)
tree9ca3c28ebff221323d44a464f99acc97c872e2f1
parent5f6133a100d4477dfcea919e81ff301f9352cd32 (diff)
downloadframeworks_base-c1f2836796a7dfc679547689ee8124ae0b09b60e.zip
frameworks_base-c1f2836796a7dfc679547689ee8124ae0b09b60e.tar.gz
frameworks_base-c1f2836796a7dfc679547689ee8124ae0b09b60e.tar.bz2
Fix updates from read-only calendar.
Change 2934 introduced a bug that causes updates to an event on a read-only shared calendar to be discarded by the device. The issue is the server version is null for a read-only calendar. bug=1990826
-rw-r--r--core/java/android/content/AbstractTableMerger.java49
1 files changed, 26 insertions, 23 deletions
diff --git a/core/java/android/content/AbstractTableMerger.java b/core/java/android/content/AbstractTableMerger.java
index 9c760d9..9f609a3 100644
--- a/core/java/android/content/AbstractTableMerger.java
+++ b/core/java/android/content/AbstractTableMerger.java
@@ -369,30 +369,33 @@ public abstract class AbstractTableMerger
// An existing server item has changed
// If serverSyncVersion is null, there is no edit URL;
// server won't let this change be written.
- // Just hold onto it, I guess, in case the server permissions
- // change later.
- if (serverSyncVersion != null) {
- boolean recordChanged = (localSyncVersion == null) ||
- !serverSyncVersion.equals(localSyncVersion);
- if (recordChanged) {
- if (localSyncDirty) {
- if (Log.isLoggable(TAG, Log.VERBOSE)) {
- Log.v(TAG, "remote record " + serverSyncId
- + " conflicts with local _sync_id " + localSyncID
- + ", local _id " + localRowId);
- }
- conflict = true;
- } else {
- if (Log.isLoggable(TAG, Log.VERBOSE)) {
- Log.v(TAG,
- "remote record " +
- serverSyncId +
- " updates local _sync_id " +
- localSyncID + ", local _id " +
- localRowId);
- }
- update = true;
+ boolean recordChanged = (localSyncVersion == null) ||
+ (serverSyncVersion == null) ||
+ !serverSyncVersion.equals(localSyncVersion);
+ if (recordChanged) {
+ if (localSyncDirty) {
+ if (Log.isLoggable(TAG, Log.VERBOSE)) {
+ Log.v(TAG, "remote record " + serverSyncId
+ + " conflicts with local _sync_id " + localSyncID
+ + ", local _id " + localRowId);
}
+ conflict = true;
+ } else {
+ if (Log.isLoggable(TAG, Log.VERBOSE)) {
+ Log.v(TAG,
+ "remote record " +
+ serverSyncId +
+ " updates local _sync_id " +
+ localSyncID + ", local _id " +
+ localRowId);
+ }
+ update = true;
+ }
+ } else {
+ if (Log.isLoggable(TAG, Log.VERBOSE)) {
+ Log.v(TAG,
+ "Skipping update: localSyncVersion: " + localSyncVersion +
+ ", serverSyncVersion: " + serverSyncVersion);
}
}
} else {