# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version.  We know about them, and they are safe.

-dontwarn android.support.v4.**
-dontwarn android.support.v13.**

# keep names that are used by reflection, from javascript or from unit tests

-keepclasseswithmembers class com.android.mail.providers.MockUiProvider {
  *** getAccountsUri(...);
}

-keepclasseswithmembers class com.android.mail.providers.UIProvider {
  *** getAccountsUri(...);
}

-keepclasseswithmembers class com.android.mail.utils.LogUtils {
  public <methods>;
}


-keepclasseswithmembers class com.google.common.collect.Sets {
  *** of(...);
}

-keepclasseswithmembers class com.android.mail.UnifiedEmail {
  public <methods>;
}

-keepclasseswithmembers class com.android.mail.ui.AnimatingItemView {
  *** setAnimatedHeight(...);
}

-keepclasseswithmembers class com.android.mail.ui.ConversationViewFragment$MailJsBridge {
  public <methods>;
}

-keepclasseswithmembers class com.android.mail.ui.TwoPaneLayout {
  *** setFoldersLeft(...);
  *** setListBitmapLeft(...);
  *** setListBitmapAlpha(...);
  *** setListLeft(...);
  *** setListAlpha(...);
  *** setConversationLeft(...);
}

-keepclasseswithmembers class com.android.mail.browse.ConversationItemView {
  *** setAnimatedHeight(...);
  *** setItemAlpha(...);
}