# keep names that are used by reflection.
-keep class com.android.email.provider.EmailContent$Account
-keepclasseswithmembers class * {
  public static void actionEditIncomingSettings(android.app.Activity, com.android.email.provider.EmailContent$Account);
}

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

-keepclasseswithmembers class * {
  public *** newInstance(android.content.Context, java.lang.String);
}

-keep class com.android.email.mail.Store$PersistentDataCallbacks {
  *** getPersistentString(...);
  *** setPersistentString(...);
}

-keepclasseswithmembers class * {
  public *** newInstance(java.lang.String, android.content.Context, com.android.email.mail.Store$PersistentDataCallbacks);
}

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


# Keep names that are used only by unit tests

-keep class ** {
  *** *ForTest(...);
}

-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.email.mail.Address {
  <init>(...);
  *** parseAndPack(java.lang.String);
  *** legacyUnpack(java.lang.String);
}

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

-keepclasseswithmembers class com.android.email.SecurityPolicy$PolicySet {
  <init>(...);
}

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

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

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

-keepclasseswithmembers class com.android.email.Account {
  *** getContentUri();
}

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

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

-keepclasseswithmembers class com.android.email.mail.Message {
  *** setRecipient(...);
}

-keepclasseswithmembers class com.android.email.mail.internet.MimeMessage {
  <init>(...);
  *** getExtendedHeader(java.lang.String);
  *** setExtendedHeader(java.lang.String, java.lang.String);
}

-keep class com.android.email.mail.Part

-keepclasseswithmembers class com.android.email.mail.internet.MimeUtility {
  *** foldAndEncode(...);
  *** findPartByContentId(...);
  *** findFirstPartByMimeType(...);
}

-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.ImapStore$ImapFolder {
  *** getUnreadMessageCount(...);
  *** getRole(...);
}

-keepclasseswithmembers class com.android.email.mail.store.LocalStore {
  *** resetVisibleLimits(...);
  *** getPersistentCallbacks(...);
  *** getPersistentString(...);
  *** setPersistentString(...);
}

-keepclasseswithmembers class com.android.email.mail.store.LocalStore$LocalFolder {
  *** updateMessage(...);
  *** getMessages(...);
  *** getPersistentCallbacks(...);
  *** getVisibleLimit(...);
  *** setVisibleLimit(...);
  *** getId(...);
  *** getPersistentString(...);
}

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

-keepclasseswithmembers class com.android.email.mail.store.Pop3Store$Pop3Folder {
  *** getUnreadMessageCount(...);
  *** isOpen(...);
}

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

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

-keepclasseswithmembers class com.android.email.mail.Folder$PersistentDataCallbacks {
  *** getPersistentString(...);
  *** setPersistentString(...);
  *** setPersistentStringAndMessageFlags(...);
}

-keep class com.android.email.mail.MessageRetrievalListener

-keepclasseswithmembers class com.android.exchange.adapter.Parser {
  *** resetInput(...);
}

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

-keepclasseswithmembers class com.android.email.mail.PackedString$Builder {
  <init>(...);
  *** get(...);
}

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

# 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 {
  *;
}