DO NOT MERGE: Support email lookback policy

* Requires related CL in Email app
* Clean backport from master I007a022bfec4871ecfde76779e24d26246b651bc

Bug: 5792217
Change-Id: I8a6fb7b46090ee1f2276254e601438c4b36e6306
diff --git a/src/com/android/exchange/adapter/EmailSyncAdapter.java b/src/com/android/exchange/adapter/EmailSyncAdapter.java
index 4c3f8c9..d889bef 100644
--- a/src/com/android/exchange/adapter/EmailSyncAdapter.java
+++ b/src/com/android/exchange/adapter/EmailSyncAdapter.java
@@ -316,6 +316,17 @@
             lookback = SyncWindow.SYNC_WINDOW_1_MONTH;
         }
 
+        // Limit lookback to policy limit
+        if (mAccount.mPolicyKey > 0) {
+            Policy policy = Policy.restorePolicyWithId(mContext, mAccount.mPolicyKey);
+            if (policy != null) {
+                int maxLookback = policy.mMaxEmailLookback;
+                if (maxLookback != 0 && (lookback > policy.mMaxEmailLookback)) {
+                    lookback = policy.mMaxEmailLookback;
+                }
+            }
+        }
+
         // Store the new lookback and persist it
         // TODO Code similar to this is used elsewhere (e.g. MailboxSettings); try to clean this up
         ContentValues cv = new ContentValues();
diff --git a/src/com/android/exchange/adapter/ProvisionParser.java b/src/com/android/exchange/adapter/ProvisionParser.java
index bfbb031..ca71cf9 100644
--- a/src/com/android/exchange/adapter/ProvisionParser.java
+++ b/src/com/android/exchange/adapter/ProvisionParser.java
@@ -316,15 +316,9 @@
                 case Tags.PROVISION_MAX_CALENDAR_AGE_FILTER:
                     policy.mMaxCalendarLookback = getValueInt();
                     break;
-                // We currently reject max email age filter (unless it's 0, i.e. none specified)
+                // We handle max email lookback
                 case Tags.PROVISION_MAX_EMAIL_AGE_FILTER:
-                    max = getValueInt();
-                    policy.mMaxEmailLookback = max;
-                    // 0 indicates no specified filter
-                    if (max != 0) {
-                        unsupportedList.add(R.string.policy_max_email_age);
-                        tagIsSupported = false;
-                    }
+                    policy.mMaxEmailLookback = getValueInt();
                     break;
                 // We currently reject these next two policies
                 case Tags.PROVISION_MAX_EMAIL_BODY_TRUNCATION_SIZE: