Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eb114de5 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change I639b0f03 into eclair-mr2

* changes:
  Make vCard exporter append neighborhood to locality field instead of extended address, per China convention.
parents 98fdda09 639b0f03
Loading
Loading
Loading
Loading
+30 −8
Original line number Diff line number Diff line
@@ -839,14 +839,14 @@ public class VCardBuilder {
        //              ; PO Box, Extended Address, Street, Locality, Region, Postal
        //              ; Code, Country Name
        final String rawPoBox = contentValues.getAsString(StructuredPostal.POBOX);
        final String rawExtendedAddress = contentValues.getAsString(StructuredPostal.NEIGHBORHOOD);
        final String rawNeighborhood = contentValues.getAsString(StructuredPostal.NEIGHBORHOOD);
        final String rawStreet = contentValues.getAsString(StructuredPostal.STREET);
        final String rawLocality = contentValues.getAsString(StructuredPostal.CITY);
        final String rawRegion = contentValues.getAsString(StructuredPostal.REGION);
        final String rawPostalCode = contentValues.getAsString(StructuredPostal.POSTCODE);
        final String rawCountry = contentValues.getAsString(StructuredPostal.COUNTRY);
        final String[] rawAddressArray = new String[]{
                rawPoBox, rawExtendedAddress, rawStreet, rawLocality,
                rawPoBox, rawNeighborhood, rawStreet, rawLocality,
                rawRegion, rawPostalCode, rawCountry};
        if (!VCardUtils.areAllEmpty(rawAddressArray)) {
            final boolean reallyUseQuotedPrintable =
@@ -855,33 +855,55 @@ public class VCardBuilder {
            final boolean appendCharset =
                !VCardUtils.containsOnlyPrintableAscii(rawAddressArray);
            final String encodedPoBox;
            final String encodedExtendedAddress;
            final String encodedStreet;
            final String encodedLocality;
            final String encodedRegion;
            final String encodedPostalCode;
            final String encodedCountry;
            final String encodedNeighborhood;

            final String rawLocality2;
            // This looks inefficient since we encode rawLocality and rawNeighborhood twice,
            // but this is intentional.
            //
            // QP encoding may add line feeds when needed and the result of
            // - encodeQuotedPrintable(rawLocality + " " + rawNeighborhood)
            // may be different from
            // - encodedLocality + " " + encodedNeighborhood.
            //
            // We use safer way.
            if (TextUtils.isEmpty(rawLocality)) {
                if (TextUtils.isEmpty(rawNeighborhood)) {
                    rawLocality2 = "";
                } else {
                    rawLocality2 = rawNeighborhood;
                }
            } else {
                if (TextUtils.isEmpty(rawNeighborhood)) {
                    rawLocality2 = rawLocality;
                } else {
                    rawLocality2 = rawLocality + " " + rawNeighborhood;
                }
            }
            if (reallyUseQuotedPrintable) {
                encodedPoBox = encodeQuotedPrintable(rawPoBox);
                encodedExtendedAddress = encodeQuotedPrintable(rawExtendedAddress);
                encodedStreet = encodeQuotedPrintable(rawStreet);
                encodedLocality = encodeQuotedPrintable(rawLocality);
                encodedLocality = encodeQuotedPrintable(rawLocality2);
                encodedRegion = encodeQuotedPrintable(rawRegion);
                encodedPostalCode = encodeQuotedPrintable(rawPostalCode);
                encodedCountry = encodeQuotedPrintable(rawCountry);
            } else {
                encodedPoBox = escapeCharacters(rawPoBox);
                encodedExtendedAddress = escapeCharacters(rawExtendedAddress);
                encodedStreet = escapeCharacters(rawStreet);
                encodedLocality = escapeCharacters(rawLocality);
                encodedLocality = escapeCharacters(rawLocality2);
                encodedRegion = escapeCharacters(rawRegion);
                encodedPostalCode = escapeCharacters(rawPostalCode);
                encodedCountry = escapeCharacters(rawCountry);
                encodedNeighborhood = escapeCharacters(rawNeighborhood);
            }
            final StringBuffer addressBuffer = new StringBuffer();
            addressBuffer.append(encodedPoBox);
            addressBuffer.append(VCARD_ITEM_SEPARATOR);
            addressBuffer.append(encodedExtendedAddress);
            addressBuffer.append(VCARD_ITEM_SEPARATOR);
            addressBuffer.append(encodedStreet);
            addressBuffer.append(VCARD_ITEM_SEPARATOR);
+41 −1
Original line number Diff line number Diff line
@@ -563,9 +563,11 @@ public class VCardExporterTests extends VCardTestsBase {
        // adr-value    = 0*6(text-value ";") text-value
        //              ; PO Box, Extended Address, Street, Locality, Region, Postal Code,
        //              ; Country Name
        //
        // The NEIGHBORHOOD field is appended after the CITY field.
        verifier.addPropertyNodesVerifierElemWithEmptyName()
                .addNodeWithoutOrder("ADR",
                        Arrays.asList("Pobox", "Neighborhood", "Street", "City",
                        Arrays.asList("Pobox", "", "Street", "City Neighborhood",
                                "Region", "100", "Country"), new TypeSet("WORK"));
        verifier.verify();
    }
@@ -578,6 +580,44 @@ public class VCardExporterTests extends VCardTestsBase {
        testPostalAddressCommon(V30);
    }

    private void testPostalAddressNonNeighborhood(int vcardType) {
        VCardVerifier verifier = new VCardVerifier(vcardType);
        ContactEntry entry = verifier.addInputEntry();
        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
                .put(StructuredPostal.CITY, "City");
        verifier.addPropertyNodesVerifierElemWithEmptyName()
                .addNodeWithoutOrder("ADR",
                        Arrays.asList("", "", "", "City", "", "", ""), new TypeSet("HOME"));
        verifier.verify();
    }

    public void testPostalAddressNonNeighborhoodV21() {
        testPostalAddressNonNeighborhood(V21);
    }

    public void testPostalAddressNonNeighborhoodV30() {
        testPostalAddressNonNeighborhood(V30);
    }

    private void testPostalAddressNonCity(int vcardType) {
        VCardVerifier verifier = new VCardVerifier(vcardType);
        ContactEntry entry = verifier.addInputEntry();
        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
                .put(StructuredPostal.NEIGHBORHOOD, "Neighborhood");
        verifier.addPropertyNodesVerifierElemWithEmptyName()
                .addNodeWithoutOrder("ADR",
                        Arrays.asList("", "", "", "Neighborhood", "", "", ""), new TypeSet("HOME"));
        verifier.verify();
    }

    public void testPostalAddressNonCityV21() {
        testPostalAddressNonCity(V21);
    }

    public void testPostalAddressNonCityV30() {
        testPostalAddressNonCity(V30);
    }

    private void testPostalOnlyWithFormattedAddressCommon(int vcardType) {
        VCardVerifier verifier = new VCardVerifier(vcardType);
        ContactEntry entry = verifier.addInputEntry();
+4 −13
Original line number Diff line number Diff line
@@ -210,8 +210,6 @@ public class VCardJapanizationTests extends VCardTestsBase {
        ContactEntry entry = verifier.addInputEntry();
        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
                .put(StructuredPostal.POBOX, "\u79C1\u66F8\u7BB107")
                .put(StructuredPostal.NEIGHBORHOOD,
                "\u30A2\u30D1\u30FC\u30C8\u0020\u0033\u0034\u53F7\u5BA4")
                .put(StructuredPostal.STREET, "\u96DB\u898B\u6CA2\u6751")
                .put(StructuredPostal.CITY, "\u9E7F\u9AA8\u5E02")
                .put(StructuredPostal.REGION, "\u00D7\u00D7\u770C")
@@ -233,29 +231,22 @@ public class VCardJapanizationTests extends VCardTestsBase {
        // LABEL must be ignored in vCard 2.1. As for vCard 3.0, the current behavior is
        // same as that in vCard 3.0, which can be changed in the future.
        elem.addNodeWithoutOrder("ADR", Arrays.asList("\u79C1\u66F8\u7BB107",
                "\u30A2\u30D1\u30FC\u30C8\u0020\u0033\u0034\u53F7\u5BA4",
                "\u96DB\u898B\u6CA2\u6751", "\u9E7F\u9AA8\u5E02", "\u00D7\u00D7\u770C",
                "", "\u96DB\u898B\u6CA2\u6751", "\u9E7F\u9AA8\u5E02", "\u00D7\u00D7\u770C",
                "494-1313", "\u65E5\u672C"),
                contentValues);
        // NEIGHBORHOOD is "not" used. Instead, "Extended address" is appended into the
        // other field with a space.
        verifier.addImportVerifier().addExpected(StructuredPostal.CONTENT_ITEM_TYPE)
                .put(StructuredPostal.POBOX, "\u79C1\u66F8\u7BB107")
                .put(StructuredPostal.STREET, "\u96DB\u898B\u6CA2\u6751 "
                        + "\u30A2\u30D1\u30FC\u30C8\u0020\u0033\u0034\u53F7\u5BA4")
                .put(StructuredPostal.STREET, "\u96DB\u898B\u6CA2\u6751")
                .put(StructuredPostal.CITY, "\u9E7F\u9AA8\u5E02")
                .put(StructuredPostal.REGION, "\u00D7\u00D7\u770C")
                .put(StructuredPostal.POSTCODE, "494-1313")
                .put(StructuredPostal.COUNTRY, "\u65E5\u672C")
                .put(StructuredPostal.FORMATTED_ADDRESS,
                        "\u65E5\u672C 494-1313 \u00D7\u00D7\u770C \u9E7F\u9AA8\u5E02 " +
                        "\u96DB\u898B\u6CA2\u6751 "
                        + "\u30A2\u30D1\u30FC\u30C8\u0020\u0033\u0034\u53F7\u5BA4 " +
                        "\u79C1\u66F8\u7BB107")
                        "\u96DB\u898B\u6CA2\u6751 " + "\u79C1\u66F8\u7BB107")
                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME);
        verifier.verify();
    }

    public void testPostalAddresswithJapaneseV21() {
        testPostalAddressWithJapaneseCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE_SJIS);
    }