1939837d76f33abdd3b44ce986329293d808ed41cChiao Chengpackage com.android.contacts.common;
2939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
3939837d76f33abdd3b44ce986329293d808ed41cChiao Chengimport android.provider.ContactsContract.CommonDataKinds.Phone;
4939837d76f33abdd3b44ce986329293d808ed41cChiao Chengimport android.test.suitebuilder.annotation.SmallTest;
5939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
6939837d76f33abdd3b44ce986329293d808ed41cChiao Chengimport junit.framework.TestCase;
7939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
8939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng/**
9939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng * Tests for MoreContactsUtils.
10939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng */
11939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng@SmallTest
12939837d76f33abdd3b44ce986329293d808ed41cChiao Chengpublic class MoreContactUtilsTest extends TestCase {
13939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
14939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng    public void testShouldCollapse() throws Exception {
15939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("1", true, null, null, null, null);
16939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("2", true, "a", "b", "a", "b");
17939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
18939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("11", false, "a", null, null, null);
19939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("12", false, null, "a", null, null);
20939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("13", false, null, null, "a", null);
21939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("14", false, null, null, null, "a");
22939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
23939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("21", false, "a", "b", null, null);
24939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("22", false, "a", "b", "a", null);
25939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("23", false, "a", "b", null, "b");
26939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("24", false, "a", "b", "a", "x");
27939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("25", false, "a", "b", "x", "b");
28939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
29939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("31", false, null, null, "a", "b");
30939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("32", false, "a", null, "a", "b");
31939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("33", false, null, "b", "a", "b");
32939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("34", false, "a", "x", "a", "b");
33939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("35", false, "x", "b", "a", "b");
34939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
35939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("41", true, Phone.CONTENT_ITEM_TYPE, null, Phone.CONTENT_ITEM_TYPE, null);
36939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("42", true, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, "1");
37939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
38939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("51", false, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, "2");
39939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("52", false, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, null);
40939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("53", false, Phone.CONTENT_ITEM_TYPE, null, Phone.CONTENT_ITEM_TYPE, "2");
41939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
42939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        // Test phone numbers
43939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("60", true, Phone.CONTENT_ITEM_TYPE, "1234567", Phone.CONTENT_ITEM_TYPE,
44939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "1234567");
45939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("61", false, Phone.CONTENT_ITEM_TYPE, "1234567", Phone.CONTENT_ITEM_TYPE,
46939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "1234568");
47939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("62", true, Phone.CONTENT_ITEM_TYPE, "1234567;0", Phone.CONTENT_ITEM_TYPE,
48939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "1234567;0");
49939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("63", false, Phone.CONTENT_ITEM_TYPE, "1234567;89321",
50939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "1234567;89322");
51939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("64", true, Phone.CONTENT_ITEM_TYPE, "1234567;89321",
52939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "1234567;89321");
53939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("65", false, Phone.CONTENT_ITEM_TYPE, "1234567;0111111111",
54939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "1234567;");
55939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("66", false, Phone.CONTENT_ITEM_TYPE, "12345675426;91970xxxxx",
56939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "12345675426");
57939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("67", false, Phone.CONTENT_ITEM_TYPE, "12345675426;23456xxxxx",
58939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "12345675426;234567xxxx");
59939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("68", true, Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567",
60939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567");
61939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("69", false, Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567",
62939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "1234567;1234567");
63939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
64939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        // test some numbers with country and area code
65939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("70", true, Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678",
66939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678");
67939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("71", true, Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678",
68939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "+49 (89)12345678");
69939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("72", true, Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234",
70939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "+49 (8092)1234");
71939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("73", false, Phone.CONTENT_ITEM_TYPE, "0049 (8092) 1234",
72939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "+49/80921234");
73939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("74", false, Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678",
74939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345679");
75939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
76939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        // test special handling of collapsing country code for NANP region only
77939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        // This is non symmetrical, because we prefer the number with the +1.
78939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("100", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
79939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "+1 (415) 555-1212", Phone.CONTENT_ITEM_TYPE, "(415) 555-1212"));
80939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("101", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
81939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "+14155551212", Phone.CONTENT_ITEM_TYPE, "4155551212"));
82939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("102", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
83939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "(415) 555-1212", Phone.CONTENT_ITEM_TYPE, "+1 (415) 555-1212"));
84939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("103", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
85939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "4155551212", Phone.CONTENT_ITEM_TYPE, "+14155551212"));
86939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        // Require explicit +1 country code declaration to collapse
87939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("104", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
88939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "1-415-555-1212", Phone.CONTENT_ITEM_TYPE, "415-555-1212"));
89939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("105", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
90939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "14155551212", Phone.CONTENT_ITEM_TYPE, "4155551212"));
91939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("106", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
92939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "+1 (415) 555-1212", Phone.CONTENT_ITEM_TYPE, " 1 (415) 555-1212"));
93939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("107", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
94939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "+14155551212", Phone.CONTENT_ITEM_TYPE, " 14155551212"));
95939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("108", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
96939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "1 (415) 555-1212", Phone.CONTENT_ITEM_TYPE, "+1 (415) 555-1212"));
97939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("109", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
98939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "14155551212", Phone.CONTENT_ITEM_TYPE, "+14155551212"));
99939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
100939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        // test some numbers with wait symbol and area code
101939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("200", true, Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89321",
102939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "+49/80921234;89321");
103939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("201", false, Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89321",
104939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "+49/80921235;89321");
105939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("202", false, Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89322",
106939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "+49/80921234;89321");
107939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("203", true, Phone.CONTENT_ITEM_TYPE, "1234567;+49 (8092) 1234",
108939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                Phone.CONTENT_ITEM_TYPE, "1234567;+49/80921234");
109939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
110939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("300", true, Phone.CONTENT_ITEM_TYPE, "", Phone.CONTENT_ITEM_TYPE, "");
111939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
112939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("301", false, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, "");
113939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
114939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("302", false, Phone.CONTENT_ITEM_TYPE, "", Phone.CONTENT_ITEM_TYPE, "1");
115939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
116939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("303", true, Phone.CONTENT_ITEM_TYPE, "---", Phone.CONTENT_ITEM_TYPE, "---");
117939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
118939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("304", false, Phone.CONTENT_ITEM_TYPE, "1-/().", Phone.CONTENT_ITEM_TYPE,
119939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "--$%1");
120939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
121939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        // Test numbers using keypad letters. This is non-symmetrical, because we prefer
122939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        // the version with letters.
123939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("400", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
124939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "abcdefghijklmnopqrstuvwxyz", Phone.CONTENT_ITEM_TYPE,
125939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "22233344455566677778889999"));
126939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("401", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
127939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "22233344455566677778889999", Phone.CONTENT_ITEM_TYPE,
128939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "abcdefghijklmnopqrstuvwxyz"));
129939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
130939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("402", false, Phone.CONTENT_ITEM_TYPE, "1;2", Phone.CONTENT_ITEM_TYPE,
131939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "12");
132939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
133939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertCollapses("403", false, Phone.CONTENT_ITEM_TYPE, "1,2", Phone.CONTENT_ITEM_TYPE,
134939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "12");
135939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng    }
136939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
137939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng    public void testShouldCollapse_collapsesSameNumberWithDifferentFormats() {
138939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("1", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
139939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "555-1212", Phone.CONTENT_ITEM_TYPE, "5551212"));
140939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("1", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
141939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "415-555-1212", Phone.CONTENT_ITEM_TYPE, "(415) 555-1212"));
142939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("2", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
143939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "4155551212", Phone.CONTENT_ITEM_TYPE, "(415) 555-1212"));
144939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("3", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
145939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "1-415-555-1212", Phone.CONTENT_ITEM_TYPE, "1 (415) 555-1212"));
146939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals("4", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
147939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                "14155551212", Phone.CONTENT_ITEM_TYPE, "1 (415) 555-1212"));
148939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng    }
149939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
150939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng    private void assertCollapses(String message, boolean expected, CharSequence mimetype1,
151939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng            CharSequence data1, CharSequence mimetype2, CharSequence data2) {
152939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals(message, expected, MoreContactUtils.shouldCollapse(mimetype1, data1, mimetype2,
153939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                data2));
154939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        assertEquals(message, expected, MoreContactUtils.shouldCollapse(mimetype2, data2, mimetype1,
155939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                data1));
156939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
157939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        // If data1 and data2 are the same instance, make sure the same test passes with different
158939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        // instances.
159939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        if (data1 == data2 && data1 != null) {
160939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng            // Create a different instance
161939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng            final CharSequence data2_newref = new StringBuilder(data2).append("").toString();
162939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
163939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng            if (data1 == data2_newref) {
164939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                // In some cases no matter what we do the runtime reuses the same instance, so
165939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                // we can't do the "different instance" test.
166939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                return;
167939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng            }
168939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng
169939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng            // we have two different instances, now make sure we get the same result as before
170939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng            assertEquals(message, expected, MoreContactUtils.shouldCollapse(mimetype1, data1,
171939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                    mimetype2, data2_newref));
172939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng            assertEquals(message, expected, MoreContactUtils.shouldCollapse(mimetype2, data2_newref,
173939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng                    mimetype1, data1));
174939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng        }
175939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng    }
176939837d76f33abdd3b44ce986329293d808ed41cChiao Cheng}
177