am cde6eb0e: Don\'t show an "Archive" option for non-Gmail accounts

* commit 'cde6eb0eb380f6212b7091d9381b3fec5006f6a8':
  Don't show an "Archive" option for non-Gmail accounts
diff --git a/src/com/android/mail/preferences/FolderPreferences.java b/src/com/android/mail/preferences/FolderPreferences.java
index c62f3c6..37618c3 100644
--- a/src/com/android/mail/preferences/FolderPreferences.java
+++ b/src/com/android/mail/preferences/FolderPreferences.java
@@ -26,7 +26,9 @@
 import android.provider.Settings;
 
 import com.android.mail.MailIntentService;
+import com.android.mail.providers.Account;
 import com.android.mail.providers.Folder;
+import com.android.mail.providers.UIProvider.AccountCapabilities;
 import com.android.mail.providers.UIProvider.FolderCapabilities;
 import com.android.mail.utils.NotificationActionUtils.NotificationActionType;
 
@@ -250,17 +252,19 @@
         MailIntentService.broadcastBackupDataChanged(getContext());
     }
 
-    private Set<String> getDefaultNotificationActions(final Context context) {
-        final boolean supportsArchive = mFolder.supportsCapability(FolderCapabilities.ARCHIVE);
-        final boolean supportsRemoveLabel =
-                mFolder.supportsCapability(FolderCapabilities.ALLOWS_REMOVE_CONVERSATION);
+    private Set<String> getDefaultNotificationActions(final Context context,
+            final Account account) {
+        final boolean supportsArchiveRemoveLabel =
+                account.supportsCapability(AccountCapabilities.ARCHIVE)
+                && (mFolder.supportsCapability(FolderCapabilities.ARCHIVE)
+                || mFolder.supportsCapability(FolderCapabilities.ALLOWS_REMOVE_CONVERSATION));
         // Use the swipe setting, since it is essentially a way to allow the user to specify
         // whether they prefer archive or delete, without adding another setting
         final boolean preferDelete =
                 MailPrefs.ConversationListSwipeActions.DELETE.equals(MailPrefs.get(context)
                         .getConversationListSwipeAction(true /* supportsArchive */));
         final NotificationActionType destructiveActionType =
-                (supportsArchive || supportsRemoveLabel) && !preferDelete ?
+                supportsArchiveRemoveLabel && !preferDelete ?
                         NotificationActionType.ARCHIVE_REMOVE_LABEL : NotificationActionType.DELETE;
         final String destructiveAction = destructiveActionType.getPersistedValue();
 
@@ -280,8 +284,8 @@
      * Gets the notification settings configured for this account and label, or the default if none
      * have been set.
      */
-    public Set<String> getNotificationActions() {
-        return getSharedPreferences().getStringSet(
-                PreferenceKeys.NOTIFICATION_ACTIONS, getDefaultNotificationActions(getContext()));
+    public Set<String> getNotificationActions(final Account account) {
+        return getSharedPreferences().getStringSet(PreferenceKeys.NOTIFICATION_ACTIONS,
+                getDefaultNotificationActions(getContext(), account));
     }
 }
diff --git a/src/com/android/mail/utils/NotificationUtils.java b/src/com/android/mail/utils/NotificationUtils.java
index dbc0113..0ed2a49 100644
--- a/src/com/android/mail/utils/NotificationUtils.java
+++ b/src/com/android/mail/utils/NotificationUtils.java
@@ -851,7 +851,7 @@
 
                     if (message != null) {
                         final Set<String> notificationActions =
-                                folderPreferences.getNotificationActions();
+                                folderPreferences.getNotificationActions(account);
 
                         final int notificationId = getNotificationId(notificationAccount, folder);