-keep class com.android.contacts.model.Sources {
  public <init>(...);
}

# 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.**

# Xml files containing onClick (menus and layouts) require that proguard not
# remove their handlers.
-keepclassmembers class * extends android.app.Activity {
  public void *(android.view.View);
  public void *(android.view.MenuItem);
}

# Needed for tests
-keep class com.android.contacts.compat.CompatUtils { *; }
-keep class com.android.contacts.Collapser { *; }
-keep class com.android.contacts.ContactPhotoManager { *; }
-keep class com.android.contacts.ContactsApplication { *; }
-keep class com.android.contacts.ContactsUtils { *; }
-keep class com.android.contacts.ContactSaveService { *; }
-keep class com.android.contacts.ContactSaveService$* { *; }
-keep class com.android.contacts.database.NoNullCursorAsyncQueryHandler { *; }
-keep class com.android.contacts.database.SimContactDao { *; }
-keep class com.android.contacts.database.SimContactDao$* { *; }
-keep class com.android.contacts.database.SimContactDaoImpl { *; }
-keep class com.android.contacts.DynamicShortcuts { *; }
-keep class com.android.contacts.editor.ContactEditorUtils { *; }
-keep class com.android.contacts.editor.EditorUiUtils { *; }
-keep class com.android.contacts.format.FormatUtils { *; }
-keep class com.android.contacts.format.TextHighlighter { *; }
-keep class com.android.contacts.group.GroupUtil { *; }
-keep class com.android.contacts.interactions.ContactDeletionInteraction { *; }
-keep class com.android.contacts.interactions.ContactInteractionUtil { *; }
-keep class com.android.contacts.list.ContactListItemView { *; }
-keep class com.android.contacts.list.ContactsSectionIndexer { *; }
-keep class com.android.contacts.location.CountryDetector { *; }
-keep class com.android.contacts.model.account.AccountDisplayInfo { *; }
-keep class com.android.contacts.model.account.AccountDisplayInfoFactory { *; }
-keep class com.android.contacts.model.account.AccountInfo { *; }
-keep class com.android.contacts.model.account.AccountType { *; }
-keep class com.android.contacts.model.account.AccountType$* { *; }
-keep class com.android.contacts.model.account.AccountTypeWithDataSet { *; }
-keep class com.android.contacts.model.account.AccountWithDataSet { *; }
-keep class com.android.contacts.model.account.BaseAccountType { *; }
-keep class com.android.contacts.model.account.BaseAccountType$* { *; }
-keep class com.android.contacts.model.account.DeviceLocalAccountType { *; }
-keep class com.android.contacts.model.account.ExchangeAccountType { *; }
-keep class com.android.contacts.model.account.ExternalAccountType { *; }
-keep class com.android.contacts.model.account.FallbackAccountType { *; }
-keep class com.android.contacts.model.account.GoogleAccountType { *; }
-keep class com.android.contacts.model.account.SimAccountType { *; }
-keep class com.android.contacts.model.AccountTypeManager { *; }
-keep class com.android.contacts.model.AccountTypeManagerImpl { *; }
-keep class com.android.contacts.model.BuilderWrapper { *; }
-keep class com.android.contacts.model.Contact { *; }
-keep class com.android.contacts.model.ContactLoader { *; }
-keep class com.android.contacts.model.Cp2DeviceLocalAccountLocator { *; }
-keep class com.android.contacts.model.CPOWrapper { *; }
-keep class com.android.contacts.model.dataitem.DataItem { *; }
-keep class com.android.contacts.model.dataitem.DataKind { *; }
-keep class com.android.contacts.model.dataitem.EmailDataItem { *; }
-keep class com.android.contacts.model.dataitem.EventDataItem { *; }
-keep class com.android.contacts.model.dataitem.ImDataItem { *; }
-keep class com.android.contacts.model.dataitem.NicknameDataItem { *; }
-keep class com.android.contacts.model.dataitem.NoteDataItem { *; }
-keep class com.android.contacts.model.dataitem.OrganizationDataItem { *; }
-keep class com.android.contacts.model.dataitem.PhoneDataItem { *; }
-keep class com.android.contacts.model.dataitem.RelationDataItem { *; }
-keep class com.android.contacts.model.dataitem.SipAddressDataItem { *; }
-keep class com.android.contacts.model.dataitem.StructuredNameDataItem { *; }
-keep class com.android.contacts.model.dataitem.StructuredPostalDataItem { *; }
-keep class com.android.contacts.model.dataitem.WebsiteDataItem { *; }
-keep class com.android.contacts.model.DeviceLocalAccountLocator { *; }
-keep class com.android.contacts.model.RawContact { *; }
-keep class com.android.contacts.model.RawContactDelta { *; }
-keep class com.android.contacts.model.RawContactDeltaList { *; }
-keep class com.android.contacts.model.RawContactModifier { *; }
-keep class com.android.contacts.model.SimCard { *; }
-keep class com.android.contacts.model.SimContact { *; }
-keep class com.android.contacts.model.ValuesDelta { *; }
-keep class com.android.contacts.MoreContactUtils { *; }
-keep class com.android.contacts.preference.ContactsPreferences { *; }
-keep class com.android.contacts.SimImportService { *; }
-keep class com.android.contacts.SimImportService$* { *; }
-keep class com.android.contacts.test.mocks.MockContactPhotoManager { *; }
-keep class com.android.contacts.testing.InjectedServices { *; }
-keep class com.android.contacts.util.BitmapUtil { *; }
-keep class com.android.contacts.util.ContactDisplayUtils { *; }
-keep class com.android.contacts.util.DateUtils { *; }
-keep class com.android.contacts.util.DeviceLocalAccountTypeFactory { *; }
-keep class com.android.contacts.util.DeviceLocalAccountTypeFactory$* { *; }
-keep class com.android.contacts.util.NameConverter { *; }
-keep class com.android.contacts.util.PermissionsUtil { *; }
-keep class com.android.contacts.util.SearchUtil { *; }
-keep class com.android.contacts.util.SearchUtil$* { *; }
-keep class com.android.contacts.util.SyncUtil { *; }
-keep class com.android.contacts.widget.CompositeListAdapter { *; }
-keep class com.google.common.base.Function { *; }
-keep class com.google.common.base.Functions { *; }
-keep class com.google.common.base.Objects { *; }
-keep class com.google.common.base.Preconditions { *; }
-keep class com.google.common.collect.** { *; }
-keep class com.google.common.util.concurrent.** { *; }

-keep class com.android.common.widget.CompositeCursorAdapter { *; }

# Any class or method annotated with NeededForReflection.
-keep @com.android.contacts.test.NeededForReflection class *
-keepclassmembers class * {
@com.android.contacts.test.NeededForReflection *;
}

# Keep classes and methods that have the guava @VisibleForTesting annotation
-keep @com.google.common.annotations.VisibleForTesting class *
-keepclassmembers class * {
  @com.google.common.annotations.VisibleForTesting *;
}