am b634dbf6: (-s ours) am 20b3ba23: (-s ours) Import revised translations. DO NOT MERGE
Merge commit 'b634dbf618f03eb19801139fed6c8237db0d01d2' into eclair-mr2
* commit 'b634dbf618f03eb19801139fed6c8237db0d01d2':
Import revised translations. DO NOT MERGE
diff --git a/res/values/strings.xml b/res/values/strings.xml
index fc811b9..953414c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -199,14 +199,14 @@
<!-- Version number, shown only on debug screen -->
<string name="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string>
- <!-- Checkbox label, shown only on debug screen -->
- <string name="debug_enable_debug_logging_label">Enable extra debug logging?</string>
- <!-- Checkbox label, shown only on debug screen -->
- <string name="debug_enable_sensitive_logging_label">Enable sensitive information debug logging? (May show passwords in logs.)</string>
- <!-- Checkbox label, shown only on debug screen -->
- <string name="debug_enable_exchange_logging_label">Enable exchange parser logging? (Extremely verbose)</string>
- <!-- Checkbox label, shown only on debug screen -->
- <string name="debug_enable_exchange_file_logging_label">Enable exchange sd card logging?</string>
+ <!-- Do Not Translate. Checkbox label, shown only on debug screen -->
+ <string name="debug_enable_debug_logging_label" translatable="false">Enable extra debug logging?</string>
+ <!-- Do Not Translate. Checkbox label, shown only on debug screen -->
+ <string name="debug_enable_sensitive_logging_label" translatable="false">Enable sensitive information debug logging? (May show passwords in logs.)</string>
+ <!-- Do Not Translate. Checkbox label, shown only on debug screen -->
+ <string name="debug_enable_exchange_logging_label" translatable="false">Enable exchange parser logging? (Extremely verbose)</string>
+ <!-- Do Not Translate. Checkbox label, shown only on debug screen -->
+ <string name="debug_enable_exchange_file_logging_label" translatable="false">Enable exchange sd card logging?</string>
<!-- The text in the small separator between smart folders and the accounts -->
<string name="account_folder_list_separator_accounts">Accounts</string>
diff --git a/src/com/android/exchange/EasSyncService.java b/src/com/android/exchange/EasSyncService.java
index b2532a1..1161980 100644
--- a/src/com/android/exchange/EasSyncService.java
+++ b/src/com/android/exchange/EasSyncService.java
@@ -209,6 +209,12 @@
userLog("Validation (OPTIONS) response: " + code);
if (code == HttpStatus.SC_OK) {
// No exception means successful validation
+ Header commands = resp.getFirstHeader("MS-ASProtocolCommands");
+ Header versions = resp.getFirstHeader("ms-asprotocolversions");
+ if (commands == null || versions == null) {
+ userLog("OPTIONS response without commands or versions; reporting I/O error");
+ throw new MessagingException(MessagingException.IOERROR);
+ }
userLog("Validation successful");
return;
}
diff --git a/src/com/android/exchange/SyncManager.java b/src/com/android/exchange/SyncManager.java
index 21bb315..2e0a226 100644
--- a/src/com/android/exchange/SyncManager.java
+++ b/src/com/android/exchange/SyncManager.java
@@ -1285,13 +1285,16 @@
synchronized (sSyncToken) {
Account acct = Account.restoreAccountWithId(this, m.mAccountKey);
if (acct != null) {
- AbstractSyncService service;
- service = new EasSyncService(this, m);
- service.mSyncReason = reason;
- if (req != null) {
- service.addPartRequest(req);
+ // Always make sure there's not a running instance of this service
+ AbstractSyncService service = mServiceMap.get(m.mId);
+ if (service == null) {
+ service = new EasSyncService(this, m);
+ service.mSyncReason = reason;
+ if (req != null) {
+ service.addPartRequest(req);
+ }
+ startService(service, m);
}
- startService(service, m);
}
}
}
@@ -1480,18 +1483,18 @@
deletedMailboxes.add(mailboxId);
}
}
- }
- // If so, stop them or remove them from the map
- for (Long mailboxId: deletedMailboxes) {
- AbstractSyncService svc = mServiceMap.get(mailboxId);
- if (svc != null) {
- boolean alive = svc.mThread.isAlive();
- log("Deleted mailbox: " + svc.mMailboxName);
- if (alive) {
- stopManualSync(mailboxId);
- } else {
- log("Removing from serviceMap");
- releaseMailbox(mailboxId);
+ // If so, stop them or remove them from the map
+ for (Long mailboxId: deletedMailboxes) {
+ AbstractSyncService svc = mServiceMap.get(mailboxId);
+ if (svc != null) {
+ boolean alive = svc.mThread.isAlive();
+ log("Deleted mailbox: " + svc.mMailboxName);
+ if (alive) {
+ stopManualSync(mailboxId);
+ } else {
+ log("Removing from serviceMap");
+ releaseMailbox(mailboxId);
+ }
}
}
}
@@ -1507,7 +1510,10 @@
try {
while (c.moveToNext()) {
long mid = c.getLong(Mailbox.CONTENT_ID_COLUMN);
- AbstractSyncService service = mServiceMap.get(mid);
+ AbstractSyncService service = null;
+ synchronized (sSyncToken) {
+ service = mServiceMap.get(mid);
+ }
if (service == null) {
// Check whether we're in a hold (temporary or permanent)
SyncError syncError = mSyncErrorMap.get(mid);
diff --git a/src/com/android/exchange/adapter/EmailSyncAdapter.java b/src/com/android/exchange/adapter/EmailSyncAdapter.java
index 6a5d2a5..6838b52 100644
--- a/src/com/android/exchange/adapter/EmailSyncAdapter.java
+++ b/src/com/android/exchange/adapter/EmailSyncAdapter.java
@@ -62,6 +62,9 @@
private static final String[] UPDATES_PROJECTION =
{MessageColumns.FLAG_READ, MessageColumns.MAILBOX_KEY, SyncColumns.SERVER_ID,
MessageColumns.FLAG_FAVORITE};
+
+ private static final int MESSAGE_ID_SUBJECT_ID_COLUMN = 0;
+ private static final int MESSAGE_ID_SUBJECT_SUBJECT_COLUMN = 1;
private static final String[] MESSAGE_ID_SUBJECT_PROJECTION =
new String[] { Message.RECORD_ID, MessageColumns.SUBJECT };
@@ -323,9 +326,10 @@
Cursor c = getServerIdCursor(serverId, MESSAGE_ID_SUBJECT_PROJECTION);
try {
if (c.moveToFirst()) {
- deletes.add(c.getLong(0));
+ deletes.add(c.getLong(MESSAGE_ID_SUBJECT_ID_COLUMN));
if (Eas.USER_LOG) {
- userLog("Deleting ", serverId + ", " + c.getString(1));
+ userLog("Deleting ", serverId + ", "
+ + c.getString(MESSAGE_ID_SUBJECT_SUBJECT_COLUMN));
}
}
} finally {