#Email-specific proguard flags that are not covered by UnifiedEmail go here

-keep class com.android.emailcommon.provider.Account

-keepclasseswithmembers class * {
  public static void actionEditIncomingSettings(android.app.Activity, int, com.android.emailcommon.provider.Account);
}

-keepclasseswithmembers class * {
  public static void actionEditOutgoingSettings(android.app.Activity, int, com.android.emailcommon.provider.Account);
}

-keepclasseswithmembers class * {
  public *** newInstance(com.android.emailcommon.provider.Account, android.content.Context);
}

-keepclasseswithmembers class * {
  public *** newInstance(com.android.emailcommon.provider.Account, android.content.Context);
}

-keepclasseswithmembers class android.content.SharedPreferences$Editor {
  *** apply();
}

-keepclasseswithmembers class com.android.emailcommon.utility.Utility$CloseTraceCursorWrapper {
  *** getTraceIfAvailable(android.database.Cursor);
  *** log(android.database.Cursor);
}

-keep class * extends org.apache.james.mime4j.util.TempStorage

# Keep names that are used only by unit tests or by animators
-keep class ** {
  *** *ForTest(...);
  *** *Anim(...);
}

-keepclasseswithmembers class com.android.email.activity.RecentMailboxManager {
  *** touch(long);
  *** getInstance(android.content.Context);
  *** getMostRecent(long, boolean);
}

-keepclasseswithmembers class com.android.email.activity.setup.AccountSetupAccountType {
  *** checkAccountInstanceLimit(com.android.email.mail.Store$StoreInfo);
}

-keepclasseswithmembers class com.android.email.GroupMessagingListener {
  *** removeListener(com.android.email.MessagingListener);
}

-keepclasseswithmembers class com.android.email.Controller {
  *** setProviderContext(android.content.Context);
}

-keepclasseswithmembers class com.android.emailcommon.internet.Rfc822Output {
  *** getHtmlBody(java.lang.String);
  *** buildBodyText(android.content.Context, com.android.emailcommon.provider.EmailContent$Message, boolean);
}

-keepclasseswithmembers class com.android.emailcommon.mail.Address {
  <init>(java.lang.String);
  <init>(java.lang.String,java.lang.String);
  *** parseAndPack(java.lang.String);
}

-keepclasseswithmembers class com.android.email.SecurityPolicy {
  *** setContext(android.content.Context);
}

-keepclasseswithmembers class com.android.email.MessagingController {
  *** injectMockController(com.android.email.MessagingController);
}

-keepclasseswithmembers class com.android.emailcommon.utility.Utility {
  *** dumpCursor(android.database.Cursor);
  *** fromUtf8(byte[]);
  *** isFirstUtf8Byte(byte);
  *** replaceBareLfWithCrlf(java.lang.String);
}
-keepclasseswithmembers class com.android.emailcommon.utility.Utility$CloseTraceCursorWrapper {
  *** getTraceIfAvailable(android.database.Cursor);
  *** log(android.database.Cursor);
}

-keepclasseswithmembers class com.android.email.provider.EmailProvider {
  *** getReadableDatabase(android.content.Context);
}

-keepclasseswithmembers class com.android.emailcommon.provider.EmailContent$Attachment {
  *** createUniqueFile(java.lang.String);
}

-keepclasseswithmembers class com.android.email.service.AttachmentDownloadService {
  *** addServiceClass(long, java.lang.Class);
}

-keepclasseswithmembers class com.android.email.service.AttachmentDownloadService$AccountManagerStub {
  *** setNumberOfAccounts(int);
}

-keepclasseswithmembers class com.android.email.Preferences {
  *** getAccountByContentUri(android.net.Uri);
}

-keep class com.android.emailcommon.mail.Message$RecipientType

-keepclasseswithmembers class com.android.emailcommon.mail.Message {
  *** setRecipient(com.android.emailcommon.mail.Message$RecipientType, com.android.emailcommon.mail.Address);
}

-keepclasseswithmembers class com.android.emailcommon.internet.MimeHeader {
  *** writeToString();
}

-keepclasseswithmembers class com.android.emailcommon.internet.MimeMessage {
  <init>();
  <init>(java.io.InputStream);
  *** getExtendedHeader(java.lang.String);
  *** setExtendedHeader(java.lang.String, java.lang.String);
  *** getExtendedHeaders();
  *** setExtendedHeaders(java.lang.String);
}

-keepclasseswithmembers class com.android.emailcommon.internet.MimeUtility {
  *** foldAndEncode(java.lang.String);
  *** findPartByContentId(com.android.emailcommon.mail.Part, java.lang.String);
  *** findFirstPartByMimeType(com.android.emailcommon.mail.Part, java.lang.String);
}

-keepclasseswithmembers class com.android.email.mail.transport.SmtpSender {
  *** setTransport(com.android.email.mail.Transport);
}

-keepclasseswithmembers class com.android.email.mail.Store {
  *** requireStructurePrefetch();
}

-keepclasseswithmembers class com.android.email.mail.store.ImapStore {
  *** setTransport(com.android.email.mail.Transport);
}

-keepclasseswithmembers class com.android.email.mail.store.ImapFolder {
  *** getMessages(int, int, com.android.emailcommon.mail.Folder$MessageRetrievalListener);
  *** getMessages(com.android.emailcommon.mail.Folder$MessageRetrievalListener);
  *** getMessages(java.lang.String[], com.android.emailcommon.mail.Folder$MessageRetrievalListener);
  *** getUnreadMessageCount();
}

-keepclasseswithmembers class com.android.email.mail.store.Pop3Store {
  *** setTransport(com.android.email.mail.Transport);
}

-keepclasseswithmembers class com.android.email.mail.store.Pop3Store$Pop3Folder {
  *** getMessages(int, int, com.android.emailcommon.mail.Folder$MessageRetrievalListener);
  *** getMessages(com.android.emailcommon.mail.Folder$MessageRetrievalListener);
  *** getMessages(java.lang.String[], com.android.emailcommon.mail.Folder$MessageRetrievalListener);
  *** getUnreadMessageCount();
  *** isOpen();
}

-keep class com.android.emailcommon.mail.Flag

-keepclasseswithmembers class com.android.emailcommon.mail.Folder {
  *** getUnreadMessageCount();
  *** delete(boolean);
  *** getRole();
}

-keep class com.android.emailcommon.mail.Folder$FolderRole

-keepclasseswithmembers class com.android.emailcommon.mail.PackedString$Builder {
  <init>();
  <init>(java.lang.String);
  *** get(java.lang.String);
  *** put(java.lang.String, java.lang.String);
}

-keepclasseswithmembers class com.android.email.provider.ContentCache$CounterMap {
  *** getCount(...);
  *** size();
}

-keepclasseswithmembers class com.android.emailcommon.provider.Account {
  *** getShortcutSafeUri();
  *** refresh(android.content.Context);
}

-keepclasseswithmembers class com.android.emailcommon.provider.Policy {
  *** setAttachmentFlagsForNewPolicy(android.content.Context,
    com.android.emailcommon.provider.Account,
    com.android.emailcommon.provider.Policy);
  *** clearAccountPolicy(android.content.Context,
    com.android.emailcommon.provider.Account);
}

-keep class org.apache.james.mime4j.field.Field {
  *** getBody();
}

-keepclasseswithmembers class com.android.email.FolderProperties {
  *** getDisplayName(int);
}

# The following classes are used only by unit tests.
# We should move them into tests/ if possible.

-keep class org.apache.james.mime4j.message.Message {
  *;
}

-keepclasseswithmembers class org.apache.commons.io.IOUtils {
  *** toByteArray(java.io.InputStream);
  *** toByteArray(java.io.Reader);
  *** toByteArray(java.io.Reader, java.lang.String);
  *** toByteArray(java.lang.String);
}

-keepclasseswithmembers class com.android.email.activity.ThreePaneLayout {
  *** setMessageListWidthAnim(...);
  *** setMailboxListLeftAnim(...);
}