Merge "Remove auto sync windows." into jb-ub-mail-ur10

This commit is contained in:
Yu Ping Hu 2013-06-17 16:56:30 +00:00 committed by Android (Google) Code Review
commit e1f0169419
7 changed files with 55 additions and 61 deletions

View File

@ -24,9 +24,7 @@ import android.database.Cursor;
import android.text.TextUtils; import android.text.TextUtils;
import com.android.emailcommon.Logging; import com.android.emailcommon.Logging;
import com.android.emailcommon.provider.Account;
import com.android.emailcommon.provider.EmailContent.MailboxColumns; import com.android.emailcommon.provider.EmailContent.MailboxColumns;
import com.android.emailcommon.provider.Mailbox;
import com.android.mail.utils.LogUtils; import com.android.mail.utils.LogUtils;
import java.util.HashMap; import java.util.HashMap;
@ -43,6 +41,7 @@ public class MailboxUtilities {
* @param context the caller's context * @param context the caller's context
* @param parentCursor a cursor to a mailbox that requires fixup * @param parentCursor a cursor to a mailbox that requires fixup
*/ */
@Deprecated
public static void setFlagsAndChildrensParentKey(Context context, Cursor parentCursor, public static void setFlagsAndChildrensParentKey(Context context, Cursor parentCursor,
String accountSelector) { String accountSelector) {
ContentResolver resolver = context.getContentResolver(); ContentResolver resolver = context.getContentResolver();
@ -103,6 +102,7 @@ public class MailboxUtilities {
* @param accountSelector (see description below in fixupUninitializedParentKeys) * @param accountSelector (see description below in fixupUninitializedParentKeys)
* @param serverId the server id of an individual mailbox * @param serverId the server id of an individual mailbox
*/ */
@Deprecated
public static void setFlagsAndChildrensParentKey(Context context, String accountSelector, public static void setFlagsAndChildrensParentKey(Context context, String accountSelector,
String serverId) { String serverId) {
Cursor cursor = context.getContentResolver().query(Mailbox.CONTENT_URI, Cursor cursor = context.getContentResolver().query(Mailbox.CONTENT_URI,
@ -125,6 +125,7 @@ public class MailboxUtilities {
* @param accountSelector a sqlite WHERE clause expression to be used in determining the * @param accountSelector a sqlite WHERE clause expression to be used in determining the
* mailboxes to be acted upon, e.g. accountKey IN (1, 2), accountKey = 12, etc. * mailboxes to be acted upon, e.g. accountKey IN (1, 2), accountKey = 12, etc.
*/ */
@Deprecated
public static void fixupUninitializedParentKeys(Context context, String accountSelector) { public static void fixupUninitializedParentKeys(Context context, String accountSelector) {
// Sanity check first on our arguments // Sanity check first on our arguments
if (accountSelector == null) throw new IllegalArgumentException(); if (accountSelector == null) throw new IllegalArgumentException();
@ -192,6 +193,7 @@ public class MailboxUtilities {
* @param context the caller's context * @param context the caller's context
* @param accountId the account whose mailboxes are to be checked * @param accountId the account whose mailboxes are to be checked
*/ */
@Deprecated
public static void checkMailboxConsistency(Context context, long accountId) { public static void checkMailboxConsistency(Context context, long accountId) {
// If our temporary flag is set, we were interrupted during an update // If our temporary flag is set, we were interrupted during an update
// First, make sure we're current (really fast w/ caching) // First, make sure we're current (really fast w/ caching)

View File

@ -17,7 +17,6 @@
package com.android.emailcommon.service; package com.android.emailcommon.service;
public class SyncWindow { public class SyncWindow {
public static final int SYNC_WINDOW_AUTO = -2;
public static final int SYNC_WINDOW_USER = -1; public static final int SYNC_WINDOW_USER = -1;
public static final int SYNC_WINDOW_UNKNOWN = 0; public static final int SYNC_WINDOW_UNKNOWN = 0;
public static final int SYNC_WINDOW_1_DAY = 1; public static final int SYNC_WINDOW_1_DAY = 1;
@ -42,7 +41,6 @@ public class SyncWindow {
case SYNC_WINDOW_ALL: case SYNC_WINDOW_ALL:
return 365*10; return 365*10;
case SYNC_WINDOW_UNKNOWN: case SYNC_WINDOW_UNKNOWN:
case SYNC_WINDOW_AUTO:
default: default:
return 14; return 14;
} }

View File

@ -63,7 +63,6 @@
<!-- Mail sync window sizes for EAS accounts --> <!-- Mail sync window sizes for EAS accounts -->
<string-array name="account_settings_mail_window_entries"> <string-array name="account_settings_mail_window_entries">
<item>@string/account_setup_options_mail_window_auto</item>
<item>@string/account_setup_options_mail_window_1day</item> <item>@string/account_setup_options_mail_window_1day</item>
<item>@string/account_setup_options_mail_window_3days</item> <item>@string/account_setup_options_mail_window_3days</item>
<item>@string/account_setup_options_mail_window_1week</item> <item>@string/account_setup_options_mail_window_1week</item>
@ -74,7 +73,6 @@
<!-- Mail sync window size codes for EAS accounts --> <!-- Mail sync window size codes for EAS accounts -->
<string-array name="account_settings_mail_window_values" translatable="false"> <string-array name="account_settings_mail_window_values" translatable="false">
<item>-2</item>
<item>1</item> <item>1</item>
<item>2</item> <item>2</item>
<item>3</item> <item>3</item>
@ -87,7 +85,6 @@
account_settings_mail_window_entries, but has 0=default. --> account_settings_mail_window_entries, but has 0=default. -->
<string-array name="account_settings_mail_window_entries_with_default"> <string-array name="account_settings_mail_window_entries_with_default">
<item>@string/account_setup_options_mail_window_default</item> <item>@string/account_setup_options_mail_window_default</item>
<item>@string/account_setup_options_mail_window_auto</item>
<item>@string/account_setup_options_mail_window_1day</item> <item>@string/account_setup_options_mail_window_1day</item>
<item>@string/account_setup_options_mail_window_3days</item> <item>@string/account_setup_options_mail_window_3days</item>
<item>@string/account_setup_options_mail_window_1week</item> <item>@string/account_setup_options_mail_window_1week</item>
@ -100,7 +97,6 @@
account_settings_mail_window_values, but has 0=default. --> account_settings_mail_window_values, but has 0=default. -->
<string-array name="account_settings_mail_window_values_with_default" translatable="false"> <string-array name="account_settings_mail_window_values_with_default" translatable="false">
<item>0</item> <item>0</item>
<item>-2</item>
<item>1</item> <item>1</item>
<item>2</item> <item>2</item>
<item>3</item> <item>3</item>

View File

@ -652,7 +652,7 @@ public class AccountSettingsFragment extends EmailPreferenceFragment
mSyncWindow.setTitle(R.string.account_setup_options_mail_window_label); mSyncWindow.setTitle(R.string.account_setup_options_mail_window_label);
mSyncWindow.setValue(String.valueOf(mAccount.getSyncLookback())); mSyncWindow.setValue(String.valueOf(mAccount.getSyncLookback()));
mSyncWindow.setSummary(mSyncWindow.getEntry()); mSyncWindow.setSummary(mSyncWindow.getEntry());
MailboxSettings.setupLookbackPreferenceOptions(mContext, mSyncWindow, mAccount); MailboxSettings.setupLookbackPreferenceOptions(mContext, mSyncWindow, mAccount, false);
// Must correspond to the hole in the XML file that's reserved. // Must correspond to the hole in the XML file that's reserved.
mSyncWindow.setOrder(2); mSyncWindow.setOrder(2);

View File

@ -72,7 +72,7 @@ public class AccountSetupOptions extends AccountSetupActivity implements OnClick
public static final int REQUEST_CODE_ACCEPT_POLICIES = 1; public static final int REQUEST_CODE_ACCEPT_POLICIES = 1;
/** Default sync window for new EAS accounts */ /** Default sync window for new EAS accounts */
private static final int SYNC_WINDOW_EAS_DEFAULT = SyncWindow.SYNC_WINDOW_AUTO; private static final int SYNC_WINDOW_EAS_DEFAULT = SyncWindow.SYNC_WINDOW_1_WEEK;
public static void actionOptions(Activity fromActivity) { public static void actionOptions(Activity fromActivity) {
fromActivity.startActivity(new ForwardingIntent(fromActivity, AccountSetupOptions.class)); fromActivity.startActivity(new ForwardingIntent(fromActivity, AccountSetupOptions.class));

View File

@ -44,6 +44,8 @@ import com.android.mail.utils.LogUtils;
import com.google.common.base.Objects; import com.google.common.base.Objects;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import java.util.Arrays;
/** /**
* "Mailbox settings" activity. * "Mailbox settings" activity.
* *
@ -182,30 +184,33 @@ public class MailboxSettings extends PreferenceActivity {
* @param context the caller's context * @param context the caller's context
* @param pref a ListPreference to be set up * @param pref a ListPreference to be set up
* @param account the Account (or owner of a Mailbox) whose preference is being set * @param account the Account (or owner of a Mailbox) whose preference is being set
* @param showWithDefault Whether to show the version with default, or without.
*/ */
public static void setupLookbackPreferenceOptions(Context context, ListPreference pref, public static void setupLookbackPreferenceOptions(final Context context,
Account account) { final ListPreference pref, final Account account, final boolean showWithDefault) {
Resources resources = context.getResources(); final Resources resources = context.getResources();
// Load the complete list of entries/values // Load the complete list of entries/values
CharSequence[] entries = CharSequence[] entries;
resources.getTextArray(R.array.account_settings_mail_window_entries); CharSequence[] values;
CharSequence[] values = final int offset;
resources.getTextArray(R.array.account_settings_mail_window_values); if (showWithDefault) {
entries = resources.getTextArray(
R.array.account_settings_mail_window_entries_with_default);
values = resources.getTextArray(
R.array.account_settings_mail_window_values_with_default);
offset = 1;
} else {
entries = resources.getTextArray(R.array.account_settings_mail_window_entries);
values = resources.getTextArray(R.array.account_settings_mail_window_values);
offset = 0;
}
// If we have a maximum lookback policy, enforce it // If we have a maximum lookback policy, enforce it
if (account.mPolicyKey > 0) { if (account.mPolicyKey > 0) {
Policy policy = Policy.restorePolicyWithId(context, account.mPolicyKey); Policy policy = Policy.restorePolicyWithId(context, account.mPolicyKey);
if (policy != null && (policy.mMaxEmailLookback != 0)) { if (policy != null && (policy.mMaxEmailLookback != 0)) {
int maxEntry = policy.mMaxEmailLookback + 1; final int size = policy.mMaxEmailLookback + offset;
// Copy the proper number of values into new entries/values array entries = Arrays.copyOf(entries, size);
CharSequence[] policyEntries = new CharSequence[maxEntry]; values = Arrays.copyOf(values, size);
CharSequence[] policyValues = new CharSequence[maxEntry];
for (int i = 0; i < maxEntry; i++) {
policyEntries[i] = entries[i];
policyValues[i] = values[i];
}
// Point entries/values to the new arrays
entries = policyEntries;
values = policyValues;
} }
} }
// Set up the preference // Set up the preference
@ -231,7 +236,8 @@ public class MailboxSettings extends PreferenceActivity {
setTitle(getString(R.string.mailbox_settings_activity_title_with_mailbox, mailboxName)); setTitle(getString(R.string.mailbox_settings_activity_title_with_mailbox, mailboxName));
} }
setupLookbackPreferenceOptions(this, mSyncLookbackPref, mAccount); setupLookbackPreferenceOptions(this, mSyncLookbackPref, mAccount,
mMailbox.mType != Mailbox.TYPE_INBOX);
// Set default value & update summary // Set default value & update summary
mSyncIntervalPref.setValue(String.valueOf(getSyncInterval())); mSyncIntervalPref.setValue(String.valueOf(getSyncInterval()));

View File

@ -50,6 +50,7 @@ import com.android.emailcommon.provider.Mailbox;
import com.android.emailcommon.provider.Policy; import com.android.emailcommon.provider.Policy;
import com.android.emailcommon.provider.QuickResponse; import com.android.emailcommon.provider.QuickResponse;
import com.android.emailcommon.service.LegacyPolicySet; import com.android.emailcommon.service.LegacyPolicySet;
import com.android.emailcommon.service.SyncWindow;
import com.android.mail.providers.UIProvider; import com.android.mail.providers.UIProvider;
import com.android.mail.utils.LogUtils; import com.android.mail.utils.LogUtils;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
@ -139,8 +140,10 @@ public final class DBHelper {
// Version 107: Add a SEEN column to the message table // Version 107: Add a SEEN column to the message table
// Version 108: Add a cachedFile column to the attachments table // Version 108: Add a cachedFile column to the attachments table
// Version 109: Migrate the account so they have the correct account manager types // Version 109: Migrate the account so they have the correct account manager types
// Version 110: Stop updating message_count, don't use auto lookback, and don't use
// ping/push_hold sync states.
public static final int DATABASE_VERSION = 109; public static final int DATABASE_VERSION = 110;
// Any changes to the database format *must* include update-in-place code. // Any changes to the database format *must* include update-in-place code.
// Original version: 2 // Original version: 2
@ -272,35 +275,6 @@ public final class DBHelper {
" when 0 then -1 else 1 end" + " when 0 then -1 else 1 end" +
" where " + EmailContent.RECORD_ID + "=OLD." + MessageColumns.MAILBOX_KEY + " where " + EmailContent.RECORD_ID + "=OLD." + MessageColumns.MAILBOX_KEY +
"; end"); "; end");
// Add triggers to update message count per mailbox
// Insert a message.
db.execSQL("create trigger message_count_message_insert after insert on " +
Message.TABLE_NAME +
" begin update " + Mailbox.TABLE_NAME + " set " + MailboxColumns.MESSAGE_COUNT +
'=' + MailboxColumns.MESSAGE_COUNT + "+1" +
" where " + EmailContent.RECORD_ID + "=NEW." + MessageColumns.MAILBOX_KEY +
"; end");
// Delete a message; if flagRead is zero, decrement the unread count of the msg's mailbox
db.execSQL("create trigger message_count_message_delete after delete on " +
Message.TABLE_NAME +
" begin update " + Mailbox.TABLE_NAME + " set " + MailboxColumns.MESSAGE_COUNT +
'=' + MailboxColumns.MESSAGE_COUNT + "-1" +
" where " + EmailContent.RECORD_ID + "=OLD." + MessageColumns.MAILBOX_KEY +
"; end");
// Change a message's mailbox
db.execSQL("create trigger message_count_message_move after update of " +
MessageColumns.MAILBOX_KEY + " on " + Message.TABLE_NAME +
" begin update " + Mailbox.TABLE_NAME + " set " + MailboxColumns.MESSAGE_COUNT +
'=' + MailboxColumns.MESSAGE_COUNT + "-1" +
" where " + EmailContent.RECORD_ID + "=OLD." + MessageColumns.MAILBOX_KEY +
"; update " + Mailbox.TABLE_NAME + " set " + MailboxColumns.MESSAGE_COUNT +
'=' + MailboxColumns.MESSAGE_COUNT + "+1" +
" where " + EmailContent.RECORD_ID + "=NEW." + MessageColumns.MAILBOX_KEY +
"; end");
} }
static void resetMessageTable(SQLiteDatabase db, int oldVersion, int newVersion) { static void resetMessageTable(SQLiteDatabase db, int oldVersion, int newVersion) {
@ -1040,18 +1014,36 @@ public final class DBHelper {
try { try {
db.execSQL("alter table " + Attachment.TABLE_NAME db.execSQL("alter table " + Attachment.TABLE_NAME
+ " add column " + Attachment.CACHED_FILE +" text" + ";"); + " add column " + Attachment.CACHED_FILE +" text" + ";");
oldVersion = 108;
} catch (SQLException e) { } catch (SQLException e) {
// Shouldn't be needed unless we're debugging and interrupt the process // Shouldn't be needed unless we're debugging and interrupt the process
LogUtils.w(TAG, "Exception upgrading EmailProvider.db from v107 to v108", e); LogUtils.w(TAG, "Exception upgrading EmailProvider.db from v107 to v108", e);
} }
oldVersion = 108;
} }
if (oldVersion == 108) { if (oldVersion == 108) {
// Migrate the accounts with the correct account type // Migrate the accounts with the correct account type
migrateLegacyAccounts(db, mContext); migrateLegacyAccounts(db, mContext);
oldVersion = 109; oldVersion = 109;
} }
if (oldVersion == 109) {
// Delete the triggers that maintained message_count.
db.execSQL("drop trigger message_count_message_insert");
db.execSQL("drop trigger message_count_message_delete");
db.execSQL("drop trigger message_count_message_move");
// Fix any mailboxes that have ping or push_hold states.
db.execSQL("update " + Mailbox.TABLE_NAME + " set " + MailboxColumns.SYNC_INTERVAL
+ "=" + Mailbox.CHECK_INTERVAL_PUSH + " where "
+ MailboxColumns.SYNC_INTERVAL + "<" + Mailbox.CHECK_INTERVAL_PUSH);
// Fix invalid syncLookback values.
db.execSQL("update " + Account.TABLE_NAME + " set " + AccountColumns.SYNC_LOOKBACK
+ "=null where " + AccountColumns.SYNC_LOOKBACK +"<"
+ SyncWindow.SYNC_WINDOW_1_DAY);
db.execSQL("update " + Mailbox.TABLE_NAME + " set " + MailboxColumns.SYNC_LOOKBACK
+ "=null where " + MailboxColumns.SYNC_LOOKBACK + "<"
+ SyncWindow.SYNC_WINDOW_1_DAY);
}
} }
@Override @Override