summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2021-11-12 11:02:20 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-11-12 11:02:20 +0000
commitcf2fde9ba2a538c8687783e22241d9b482a90d32 (patch)
tree8789eb5831bfc1b90dc98d2789fdcfe979fd2f11
parenta6ccd460eb779f3ca8b42719db37fdbbeee6eddc (diff)
parentf9eab84d18c0e25918d8cb4cc5e9c99c113d4938 (diff)
downloadvcard-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.java40
-rw-r--r--java/com/android/vcard/VCardConfig.java64
-rw-r--r--tests/src/com/android/vcard/tests/VCardExporterTests.java56
-rw-r--r--tests/src/com/android/vcard/tests/testutils/VCardVerifier.java24
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;
+ }
}