diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2021-11-12 11:02:20 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-11-12 11:02:20 +0000 |
commit | cf2fde9ba2a538c8687783e22241d9b482a90d32 (patch) | |
tree | 8789eb5831bfc1b90dc98d2789fdcfe979fd2f11 | |
parent | a6ccd460eb779f3ca8b42719db37fdbbeee6eddc (diff) | |
parent | f9eab84d18c0e25918d8cb4cc5e9c99c113d4938 (diff) | |
download | vcard-cf2fde9ba2a538c8687783e22241d9b482a90d32.tar.gz |
Merge "Adding refrain flags for VCard properties." am: 538cd98b88 am: 8163809dc4 am: 209122f2be am: f9eab84d18
Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/vcard/+/1882473
Change-Id: I561671d075971ba90041ef50142403c57b776a89
-rw-r--r-- | java/com/android/vcard/VCardComposer.java | 40 | ||||
-rw-r--r-- | java/com/android/vcard/VCardConfig.java | 64 | ||||
-rw-r--r-- | tests/src/com/android/vcard/tests/VCardExporterTests.java | 56 | ||||
-rw-r--r-- | tests/src/com/android/vcard/tests/testutils/VCardVerifier.java | 24 |
4 files changed, 173 insertions, 11 deletions
diff --git a/java/com/android/vcard/VCardComposer.java b/java/com/android/vcard/VCardComposer.java index 7b59c7d..ac278c3 100644 --- a/java/com/android/vcard/VCardComposer.java +++ b/java/com/android/vcard/VCardComposer.java @@ -599,22 +599,40 @@ public class VCardComposer { return ""; } else { final VCardBuilder builder = new VCardBuilder(mVCardType, mCharset); - builder.appendNameProperties(contentValuesListMap.get(StructuredName.CONTENT_ITEM_TYPE)) - .appendNickNames(contentValuesListMap.get(Nickname.CONTENT_ITEM_TYPE)) + builder.appendNameProperties(contentValuesListMap.get( + StructuredName.CONTENT_ITEM_TYPE)) .appendPhones(contentValuesListMap.get(Phone.CONTENT_ITEM_TYPE), mPhoneTranslationCallback) - .appendEmails(contentValuesListMap.get(Email.CONTENT_ITEM_TYPE)) - .appendPostals(contentValuesListMap.get(StructuredPostal.CONTENT_ITEM_TYPE)) - .appendOrganizations(contentValuesListMap.get(Organization.CONTENT_ITEM_TYPE)) - .appendWebsites(contentValuesListMap.get(Website.CONTENT_ITEM_TYPE)); + .appendRelation(contentValuesListMap.get(Relation.CONTENT_ITEM_TYPE)) + .appendIms(contentValuesListMap.get(Im.CONTENT_ITEM_TYPE)) + .appendSipAddresses(contentValuesListMap.get(SipAddress.CONTENT_ITEM_TYPE)); + + if ((mVCardType & VCardConfig.FLAG_REFRAIN_NICKNAME_EXPORT) == 0) { + builder.appendNickNames(contentValuesListMap.get(Nickname.CONTENT_ITEM_TYPE)); + } + if ((mVCardType & VCardConfig.FLAG_REFRAIN_EMAIL_EXPORT) == 0) { + builder.appendEmails(contentValuesListMap.get(Email.CONTENT_ITEM_TYPE)); + } + if ((mVCardType & VCardConfig.FLAG_REFRAIN_ADDRESS_EXPORT) == 0) { + builder.appendPostals(contentValuesListMap.get( + StructuredPostal.CONTENT_ITEM_TYPE)); + } + if ((mVCardType & VCardConfig.FLAG_REFRAIN_ORGANIZATION_EXPORT) == 0) { + builder.appendOrganizations(contentValuesListMap.get( + Organization.CONTENT_ITEM_TYPE)); + } + if ((mVCardType & VCardConfig.FLAG_REFRAIN_WEBSITES_EXPORT) == 0) { + builder.appendWebsites(contentValuesListMap.get(Website.CONTENT_ITEM_TYPE)); + } if ((mVCardType & VCardConfig.FLAG_REFRAIN_IMAGE_EXPORT) == 0) { builder.appendPhotos(contentValuesListMap.get(Photo.CONTENT_ITEM_TYPE)); } - builder.appendNotes(contentValuesListMap.get(Note.CONTENT_ITEM_TYPE)) - .appendEvents(contentValuesListMap.get(Event.CONTENT_ITEM_TYPE)) - .appendIms(contentValuesListMap.get(Im.CONTENT_ITEM_TYPE)) - .appendSipAddresses(contentValuesListMap.get(SipAddress.CONTENT_ITEM_TYPE)) - .appendRelation(contentValuesListMap.get(Relation.CONTENT_ITEM_TYPE)); + if ((mVCardType & VCardConfig.FLAG_REFRAIN_NOTES_EXPORT) == 0) { + builder.appendNotes(contentValuesListMap.get(Note.CONTENT_ITEM_TYPE)); + } + if ((mVCardType & VCardConfig.FLAG_REFRAIN_EVENTS_EXPORT) == 0) { + builder.appendEvents(contentValuesListMap.get(Event.CONTENT_ITEM_TYPE)); + } return builder.toString(); } } diff --git a/java/com/android/vcard/VCardConfig.java b/java/com/android/vcard/VCardConfig.java index 006241e..675880e 100644 --- a/java/com/android/vcard/VCardConfig.java +++ b/java/com/android/vcard/VCardConfig.java @@ -245,6 +245,70 @@ public class VCardConfig { */ public static final int FLAG_REFRAIN_IMAGE_EXPORT = 0x00800000; + /** + * <P> + * The flag asking exporter to refrain events export. + * </P> + * @hide will be deleted in the near future. + */ + public static final int FLAG_REFRAIN_EVENTS_EXPORT = 0x00400000; + + /** + * <P> + * The flag asking exporter to refrain addess export. + * </P> + * @hide will be deleted in the near future. + */ + public static final int FLAG_REFRAIN_ADDRESS_EXPORT = 0x00200000; + + /** + * <P> + * The flag asking exporter to refrain email export. + * </P> + * @hide will be deleted in the near future. + */ + public static final int FLAG_REFRAIN_EMAIL_EXPORT = 0x00100000; + + /** + * <P> + * The flag asking exporter to refrain organization export. + * </P> + * @hide will be deleted in the near future. + */ + public static final int FLAG_REFRAIN_ORGANIZATION_EXPORT = 0x00080000; + + /** + * <P> + * The flag asking exporter to refrain notes export. + * </P> + * @hide will be deleted in the near future. + */ + public static final int FLAG_REFRAIN_NOTES_EXPORT = 0x00040000; + + /** + * <P> + * The flag asking exporter to refrain phonetic name export. + * </P> + * @hide will be deleted in the near future. + */ + public static final int FLAG_REFRAIN_PHONETIC_NAME_EXPORT = 0x00020000; + + /** + * <P> + * The flag asking exporter to refrain websites export. + * </P> + * @hide will be deleted in the near future. + */ + public static final int FLAG_REFRAIN_WEBSITES_EXPORT = 0x00010000; + + /** + * <P> + * The flag asking exporter to refrain nickname export. + * </P> + * @hide will be deleted in the near future. + */ + public static final int FLAG_REFRAIN_NICKNAME_EXPORT = 0x00008000; + //// The followings are VCard types available from importer/exporter. //// /** diff --git a/tests/src/com/android/vcard/tests/VCardExporterTests.java b/tests/src/com/android/vcard/tests/VCardExporterTests.java index 42f9445..178495f 100644 --- a/tests/src/com/android/vcard/tests/VCardExporterTests.java +++ b/tests/src/com/android/vcard/tests/VCardExporterTests.java @@ -1319,4 +1319,60 @@ public class VCardExporterTests extends VCardTestsBase { mVerifier.addPropertyNodesVerifierElemWithEmptyName() .addExpectedNode("TEL", "sip:android@example.com"); } + + public void testRefrainFlags() { + int vCardType = V30; + vCardType |= VCardConfig.FLAG_REFRAIN_ADDRESS_EXPORT | + VCardConfig.FLAG_REFRAIN_EMAIL_EXPORT | + VCardConfig.FLAG_REFRAIN_EMAIL_EXPORT | + VCardConfig.FLAG_REFRAIN_ORGANIZATION_EXPORT | + VCardConfig.FLAG_REFRAIN_WEBSITES_EXPORT | + VCardConfig.FLAG_REFRAIN_NOTES_EXPORT | + VCardConfig.FLAG_REFRAIN_NICKNAME_EXPORT | + VCardConfig.FLAG_REFRAIN_EVENTS_EXPORT | + VCardConfig.FLAG_REFRAIN_IMAGE_EXPORT; + + mVerifier.initForExportTest(vCardType); + + final ContactEntry entry = mVerifier.addInputEntry(); + entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) + .put(StructuredName.DISPLAY_NAME, StructuredName.CONTENT_ITEM_TYPE); + entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.FORMATTED_ADDRESS, StructuredPostal.CONTENT_ITEM_TYPE); + entry.addContentValues(Email.CONTENT_ITEM_TYPE) + .put(Email.ADDRESS, Email.CONTENT_ITEM_TYPE); + entry.addContentValues(Organization.CONTENT_ITEM_TYPE) + .put(Organization.COMPANY, Organization.CONTENT_ITEM_TYPE); + entry.addContentValues(Website.CONTENT_ITEM_TYPE) + .put(Website.URL, Website.CONTENT_ITEM_TYPE); + entry.addContentValues(Note.CONTENT_ITEM_TYPE) + .put(Note.NOTE, Note.CONTENT_ITEM_TYPE); + entry.addContentValues(Nickname.CONTENT_ITEM_TYPE) + .put(Nickname.NAME, Nickname.CONTENT_ITEM_TYPE); + entry.addContentValues(Event.CONTENT_ITEM_TYPE) + .put(Event.START_DATE, Event.CONTENT_ITEM_TYPE); + entry.addContentValues(Photo.CONTENT_ITEM_TYPE) + .put(Photo.PHOTO_FILE_ID, Photo.CONTENT_ITEM_TYPE); + + final String vcard = mVerifier.buildVCardForExportTest(); + + assertFalse("Address should not be present.", + vcard.contains(StructuredPostal.CONTENT_ITEM_TYPE)); + assertFalse("Email should not be present.", + vcard.contains(Email.CONTENT_ITEM_TYPE)); + assertFalse("Organization should not be present.", + vcard.contains(Organization.CONTENT_ITEM_TYPE)); + assertFalse("Website should not be present.", + vcard.contains(Website.CONTENT_ITEM_TYPE)); + assertFalse("Note should not be present.", + vcard.contains(Note.CONTENT_ITEM_TYPE)); + assertFalse("Nickname should not be present.", + vcard.contains(Nickname.CONTENT_ITEM_TYPE)); + assertFalse("Event should not be present.", + vcard.contains(Event.CONTENT_ITEM_TYPE)); + assertFalse("Photo should not be present.", + vcard.contains(Photo.CONTENT_ITEM_TYPE)); + assertTrue("Name should be present. ", + vcard.contains(StructuredName.CONTENT_ITEM_TYPE)); + } } diff --git a/tests/src/com/android/vcard/tests/testutils/VCardVerifier.java b/tests/src/com/android/vcard/tests/testutils/VCardVerifier.java index 3e787de..7c40382 100644 --- a/tests/src/com/android/vcard/tests/testutils/VCardVerifier.java +++ b/tests/src/com/android/vcard/tests/testutils/VCardVerifier.java @@ -372,4 +372,28 @@ public class VCardVerifier { composer.terminate(); } } + + public String buildVCardForExportTest() { + final CustomMockContext context = new CustomMockContext(mExportTestResolver); + final ContentResolver resolver = context.getContentResolver(); + final VCardComposer composer = new VCardComposer(context, mVCardType, mCharset); + // projection is ignored. + final Cursor cursor = resolver.query(CONTACTS_TEST_CONTENT_URI, null, null, null, null); + if (!composer.init(cursor)) { + AndroidTestCase.fail("init() failed. Reason: " + composer.getErrorReason()); + } + AndroidTestCase.assertFalse(composer.isAfterLast()); + + Method mockGetEntityIteratorMethod = null; + try { + mockGetEntityIteratorMethod = getMockGetEntityIteratorMethod(); + } catch (Exception e) { + AndroidTestCase.fail("Exception thrown: " + e); + } + AndroidTestCase.assertNotNull(mockGetEntityIteratorMethod); + final String vcard = composer.createOneEntry(mockGetEntityIteratorMethod); + AndroidTestCase.assertNotNull(vcard); + composer.terminate(); + return vcard; + } } |