diff options
author | Ken Shirriff <kens@google.com> | 2009-07-20 14:57:24 -0700 |
---|---|---|
committer | Ken Shirriff <kens@google.com> | 2009-07-20 15:36:56 -0700 |
commit | c1f2836796a7dfc679547689ee8124ae0b09b60e (patch) | |
tree | 9ca3c28ebff221323d44a464f99acc97c872e2f1 /core/java/android/content/AbstractTableMerger.java | |
parent | 5f6133a100d4477dfcea919e81ff301f9352cd32 (diff) | |
download | frameworks_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
Diffstat (limited to 'core/java/android/content/AbstractTableMerger.java')
-rw-r--r-- | core/java/android/content/AbstractTableMerger.java | 49 |
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 { |