• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.providers.contacts;
18 
19 import android.database.Cursor;
20 import android.database.MatrixCursor;
21 import android.provider.ContactsContract.PhoneLookup;
22 
23 import androidx.test.filters.SmallTest;
24 
25 import com.android.providers.contacts.enterprise.EnterpriseContactsCursorWrapper;
26 
27 @SmallTest
28 public class EnterpriseContactsCursorWrapperTest extends FixedAndroidTestCase {
29 
testWrappedResults()30     public void testWrappedResults() {
31         final String[] projection = new String[] {
32                 /* column 0 */ PhoneLookup._ID,
33                 /* column 1 */ PhoneLookup.CONTACT_ID,
34                 /* column 2 */ PhoneLookup.LOOKUP_KEY,
35                 /* column 3 */ PhoneLookup.DISPLAY_NAME,
36                 /* column 4 */ PhoneLookup.LAST_TIME_CONTACTED,
37                 /* column 5 */ PhoneLookup.TIMES_CONTACTED,
38                 /* column 6 */ PhoneLookup.STARRED,
39                 /* column 7 */ PhoneLookup.IN_DEFAULT_DIRECTORY,
40                 /* column 8 */ PhoneLookup.IN_VISIBLE_GROUP,
41                 /* column 9 */ PhoneLookup.PHOTO_FILE_ID,
42                 /* column 10 */ PhoneLookup.PHOTO_ID,
43                 /* column 11 */ PhoneLookup.PHOTO_URI,
44                 /* column 12 */ PhoneLookup.PHOTO_THUMBNAIL_URI,
45                 /* column 13 */ PhoneLookup.CUSTOM_RINGTONE,
46                 /* column 14 */ PhoneLookup.HAS_PHONE_NUMBER,
47                 /* column 15 */ PhoneLookup.SEND_TO_VOICEMAIL,
48                 /* column 16 */ PhoneLookup.NUMBER,
49                 /* column 17 */ PhoneLookup.TYPE,
50                 /* column 18 */ PhoneLookup.LABEL,
51                 /* column 19 */ PhoneLookup.NORMALIZED_NUMBER
52         };
53         final MatrixCursor c = new MatrixCursor(projection);
54 
55         // First, convert and make sure it returns an empty cursor.
56         Cursor rewritten = new EnterpriseContactsCursorWrapper(c, projection,
57                 new int[] {0, 1}, null);
58 
59         assertEquals(0, rewritten.getCount());
60         assertEquals(projection.length, rewritten.getColumnCount());
61 
62         c.addRow(new Object[] {
63                 1L, // PhoneLookup._ID,
64                 1L, // PhoneLookup.CONTACT_ID,
65                 null, // PhoneLookup.LOOKUP_KEY,
66                 null, // PhoneLookup.DISPLAY_NAME,
67                 null, // PhoneLookup.LAST_TIME_CONTACTED,
68                 null, // PhoneLookup.TIMES_CONTACTED,
69                 null, // PhoneLookup.STARRED,
70                 null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
71                 null, // PhoneLookup.IN_VISIBLE_GROUP,
72                 null, // PhoneLookup.PHOTO_FILE_ID,
73                 null, // PhoneLookup.PHOTO_ID,
74                 null, // PhoneLookup.PHOTO_URI,
75                 null, // PhoneLookup.PHOTO_THUMBNAIL_URI,
76                 null, // PhoneLookup.CUSTOM_RINGTONE,
77                 null, // PhoneLookup.HAS_PHONE_NUMBER,
78                 null, // PhoneLookup.SEND_TO_VOICEMAIL,
79                 null, // PhoneLookup.NUMBER,
80                 null, // PhoneLookup.TYPE,
81                 null, // PhoneLookup.LABEL,
82                 null, // PhoneLookup.NORMALIZED_NUMBER
83         });
84 
85         c.addRow(new Object[] {
86                 10L, // PhoneLookup._ID,
87                 10L, // PhoneLookup.CONTACT_ID,
88                 "key", // PhoneLookup.LOOKUP_KEY,
89                 "name", // PhoneLookup.DISPLAY_NAME,
90                 123, // PhoneLookup.LAST_TIME_CONTACTED,
91                 456, // PhoneLookup.TIMES_CONTACTED,
92                 1, // PhoneLookup.STARRED,
93                 1, // PhoneLookup.IN_DEFAULT_DIRECTORY,
94                 1, // PhoneLookup.IN_VISIBLE_GROUP,
95                 1001, // PhoneLookup.PHOTO_FILE_ID,
96                 1002, // PhoneLookup.PHOTO_ID,
97                 "content://a/a", // PhoneLookup.PHOTO_URI,
98                 "content://a/b", // PhoneLookup.PHOTO_THUMBNAIL_URI,
99                 "content://a/c", // PhoneLookup.CUSTOM_RINGTONE,
100                 1, // PhoneLookup.HAS_PHONE_NUMBER,
101                 1, // PhoneLookup.SEND_TO_VOICEMAIL,
102                 "1234", // PhoneLookup.NUMBER,
103                 1, // PhoneLookup.TYPE,
104                 "label", // PhoneLookup.LABEL,
105                 "+1234", // PhoneLookup.NORMALIZED_NUMBER
106         });
107 
108         c.addRow(new Object[] {
109                 11L, // PhoneLookup._ID,
110                 11L, // PhoneLookup.CONTACT_ID,
111                 null, // PhoneLookup.LOOKUP_KEY,
112                 null, // PhoneLookup.DISPLAY_NAME,
113                 null, // PhoneLookup.LAST_TIME_CONTACTED,
114                 null, // PhoneLookup.TIMES_CONTACTED,
115                 null, // PhoneLookup.STARRED,
116                 null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
117                 null, // PhoneLookup.IN_VISIBLE_GROUP,
118                 null, // PhoneLookup.PHOTO_FILE_ID,
119                 null, // PhoneLookup.PHOTO_ID,
120                 "content://com.android.contacts/contacts/11/display_photo", // PhoneLookup.PHOTO_URI,
121                 "content://com.android.contacts/contacts/11/photo", // PhoneLookup.PHOTO_THUMBNAIL_URI,
122                 null, // PhoneLookup.CUSTOM_RINGTONE,
123                 null, // PhoneLookup.HAS_PHONE_NUMBER,
124                 null, // PhoneLookup.SEND_TO_VOICEMAIL,
125                 null, // PhoneLookup.NUMBER,
126                 null, // PhoneLookup.TYPE,
127                 null, // PhoneLookup.LABEL,
128                 null, // PhoneLookup.NORMALIZED_NUMBER
129         });
130 
131         c.addRow(new Object[] {
132                 12L, // PhoneLookup._ID,
133                 12L, // PhoneLookup.CONTACT_ID,
134                 null, // PhoneLookup.LOOKUP_KEY,
135                 null, // PhoneLookup.DISPLAY_NAME,
136                 null, // PhoneLookup.LAST_TIME_CONTACTED,
137                 null, // PhoneLookup.TIMES_CONTACTED,
138                 null, // PhoneLookup.STARRED,
139                 null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
140                 null, // PhoneLookup.IN_VISIBLE_GROUP,
141                 null, // PhoneLookup.PHOTO_FILE_ID,
142                 null, // PhoneLookup.PHOTO_ID,
143                 "content://com.android.contacts/contacts/12/photo", // PhoneLookup.PHOTO_URI,
144                 "content://com.android.contacts/contacts/12/photo", // PhoneLookup.PHOTO_THUMBNAIL_URI,
145                 null, // PhoneLookup.CUSTOM_RINGTONE,
146                 null, // PhoneLookup.HAS_PHONE_NUMBER,
147                 null, // PhoneLookup.SEND_TO_VOICEMAIL,
148                 null, // PhoneLookup.NUMBER,
149                 null, // PhoneLookup.TYPE,
150                 null, // PhoneLookup.LABEL,
151                 null, // PhoneLookup.NORMALIZED_NUMBER
152         });
153 
154         c.addRow(new Object[] {
155                 13L, // PhoneLookup._ID,
156                 13L, // PhoneLookup.CONTACT_ID,
157                 null, // PhoneLookup.LOOKUP_KEY,
158                 null, // PhoneLookup.DISPLAY_NAME,
159                 null, // PhoneLookup.LAST_TIME_CONTACTED,
160                 null, // PhoneLookup.TIMES_CONTACTED,
161                 null, // PhoneLookup.STARRED,
162                 null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
163                 null, // PhoneLookup.IN_VISIBLE_GROUP,
164                 123L, // PhoneLookup.PHOTO_FILE_ID,
165                 null, // PhoneLookup.PHOTO_ID,
166                 "content://com.android.contacts/display_photo/123", // PhoneLookup.PHOTO_URI,
167                 "content://com.android.contacts/contacts/13/photo", // PhoneLookup.PHOTO_THUMBNAIL_URI,
168                 null, // PhoneLookup.CUSTOM_RINGTONE,
169                 null, // PhoneLookup.HAS_PHONE_NUMBER,
170                 null, // PhoneLookup.SEND_TO_VOICEMAIL,
171                 null, // PhoneLookup.NUMBER,
172                 null, // PhoneLookup.TYPE,
173                 null, // PhoneLookup.LABEL,
174                 null, // PhoneLookup.NORMALIZED_NUMBER
175         });
176 
177         rewritten = new EnterpriseContactsCursorWrapper(c, projection, new int[] {0, 1}, null);
178         assertEquals(5, rewritten.getCount());
179         assertEquals(projection.length, rewritten.getColumnCount());
180 
181         rewritten.moveToFirst();
182 
183         // Verify the first row.
184         int column = 0;
185         assertEquals(1000000001L, rewritten.getLong(column++)); // We offset ID for corp contacts.
186         assertEquals(1000000001L, rewritten.getLong(column++)); // We offset ID for corp contacts.
187         assertEquals(null, rewritten.getString(column++));
188         assertEquals(null, rewritten.getString(column++));
189         assertEquals(null, rewritten.getString(column++));
190         assertEquals(null, rewritten.getString(column++));
191         assertEquals(null, rewritten.getString(column++));
192         assertEquals(null, rewritten.getString(column++));
193         assertEquals(null, rewritten.getString(column++));
194         assertEquals(null, rewritten.getString(column++));
195         assertEquals(null, rewritten.getString(column++));
196         assertEquals(null, rewritten.getString(column++));
197         assertEquals(null, rewritten.getString(column++));
198         assertEquals(null, rewritten.getString(column++));
199         assertEquals(null, rewritten.getString(column++));
200         assertEquals(null, rewritten.getString(column++));
201         assertEquals(null, rewritten.getString(column++));
202         assertEquals(null, rewritten.getString(column++));
203         assertEquals(null, rewritten.getString(column++));
204         assertEquals(null, rewritten.getString(column++));
205 
206 
207         // Verify the second row.
208         rewritten.moveToNext();
209         column = 0;
210         assertEquals(1000000010L, rewritten.getLong(column++)); // With offset.
211         assertEquals(1000000010L, rewritten.getLong(column++)); // With offset.
212         assertEquals("c-key", rewritten.getString(column++));
213         assertEquals("name", rewritten.getString(column++));
214         assertEquals(123, rewritten.getInt(column++));
215         assertEquals(456, rewritten.getInt(column++));
216         assertEquals(1, rewritten.getInt(column++));
217         assertEquals(1, rewritten.getInt(column++));
218         assertEquals(1, rewritten.getInt(column++));
219         assertEquals(null, rewritten.getString(column++)); // photo file id
220         assertEquals(null, rewritten.getString(column++)); // photo id
221         assertEquals(null,
222                 rewritten.getString(column++));
223         assertEquals(null,
224                 rewritten.getString(column++));
225         assertEquals(null, rewritten.getString(column++)); // ringtone
226         assertEquals(1, rewritten.getInt(column++));
227         assertEquals(1, rewritten.getInt(column++));
228         assertEquals("1234", rewritten.getString(column++));
229         assertEquals(1, rewritten.getInt(column++));
230         assertEquals("label", rewritten.getString(column++));
231         assertEquals("+1234", rewritten.getString(column++));
232 
233         // Verify the 3rd row.
234         rewritten.moveToNext();
235         assertEquals("content://com.android.contacts/contacts_corp/11/display_photo",
236                 rewritten.getString(11));
237         assertEquals("content://com.android.contacts/contacts_corp/11/photo",
238                 rewritten.getString(12));
239 
240         // Verify the 4th row.
241         rewritten.moveToNext();
242         assertEquals("content://com.android.contacts/contacts_corp/12/photo",
243                 rewritten.getString(11));
244         assertEquals("content://com.android.contacts/contacts_corp/12/photo",
245                 rewritten.getString(12));
246 
247 
248         // Verify the 5th row.
249         rewritten.moveToNext();
250         assertEquals("content://com.android.contacts/contacts_corp/13/display_photo",
251                 rewritten.getString(11));
252         assertEquals("content://com.android.contacts/contacts_corp/13/photo",
253                 rewritten.getString(12));
254     }
255 }
256