Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / chrome / android / javatests / src / org / chromium / chrome / browser / test / ProviderBookmarksUriTest.java
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.test;
6
7 import android.content.ContentValues;
8 import android.database.Cursor;
9 import android.net.Uri;
10 import android.provider.Browser.BookmarkColumns;
11
12 import org.chromium.base.test.util.DisabledTest;
13 import org.chromium.chrome.browser.ChromeBrowserProvider;
14 import org.chromium.chrome.browser.test.util.BookmarkUtils;
15
16 import java.util.Date;
17
18 /**
19  * Tests the use of the Bookmark URI as part of the Android provider public API.
20  */
21 public class ProviderBookmarksUriTest extends ProviderTestBase {
22     private static final String TAG = "ProviderBookmarkUriTest";
23     private static final String ICON_PATH = "chrome/provider/icon1.png";
24
25     private Uri mBookmarksUri;
26
27     @Override
28     protected void setUp() throws Exception {
29         super.setUp();
30         mBookmarksUri = ChromeBrowserProvider.getBookmarksApiUri(getActivity());
31         getContentResolver().delete(mBookmarksUri, null, null);
32     }
33
34     @Override
35     protected void tearDown() throws Exception {
36         getContentResolver().delete(mBookmarksUri, null, null);
37         super.tearDown();
38     }
39
40     private Uri addBookmark(String url, String title, long lastVisitTime, long created, int visits,
41             byte[] icon, int isBookmark) {
42         ContentValues values = new ContentValues();
43         values.put(BookmarkColumns.BOOKMARK, isBookmark);
44         values.put(BookmarkColumns.DATE, lastVisitTime);
45         values.put(BookmarkColumns.CREATED, created);
46         values.put(BookmarkColumns.FAVICON, icon);
47         values.put(BookmarkColumns.URL, url);
48         values.put(BookmarkColumns.VISITS, visits);
49         values.put(BookmarkColumns.TITLE, title);
50         return getContentResolver().insert(mBookmarksUri, values);
51     }
52
53     /**
54      * @MediumTest
55      * @Feature({"Android-ContentProvider"})
56      * BUG 154683
57      */
58     @DisabledTest
59     public void testAddBookmark() {
60         final long lastUpdateTime = System.currentTimeMillis();
61         final long createdTime = lastUpdateTime - 1000 * 60 * 60;
62         final String url = "http://www.google.com/";
63         final int visits = 2;
64         final String title = "Google";
65         ContentValues values = new ContentValues();
66         values.put(BookmarkColumns.BOOKMARK, 0);
67         values.put(BookmarkColumns.DATE, lastUpdateTime);
68         values.put(BookmarkColumns.CREATED, createdTime);
69         values.put(BookmarkColumns.FAVICON, BookmarkUtils.getIcon(ICON_PATH));
70         values.put(BookmarkColumns.URL, url);
71         values.put(BookmarkColumns.VISITS, visits);
72         values.put(BookmarkColumns.TITLE, title);
73         Uri uri = getContentResolver().insert(mBookmarksUri, values);
74         Cursor cursor = getContentResolver().query(uri, null, null, null, null);
75         assertEquals(1, cursor.getCount());
76         assertTrue(cursor.moveToNext());
77         int index = cursor.getColumnIndex(BookmarkColumns.BOOKMARK);
78         assertTrue(-1 != index);
79         assertEquals(0, cursor.getInt(index));
80         index = cursor.getColumnIndex(BookmarkColumns.CREATED);
81         assertTrue(-1 != index);
82         assertEquals(createdTime, cursor.getLong(index));
83         index = cursor.getColumnIndex(BookmarkColumns.DATE);
84         assertTrue(-1 != index);
85         assertEquals(lastUpdateTime, cursor.getLong(index));
86         index = cursor.getColumnIndex(BookmarkColumns.FAVICON);
87         assertTrue(-1 != index);
88         assertTrue(BookmarkUtils.byteArrayEqual(BookmarkUtils.getIcon(ICON_PATH),
89                 cursor.getBlob(index)));
90         index = cursor.getColumnIndex(BookmarkColumns.URL);
91         assertTrue(-1 != index);
92         assertEquals(url, cursor.getString(index));
93         index = cursor.getColumnIndex(BookmarkColumns.VISITS);
94         assertTrue(-1 != index);
95         assertEquals(visits, cursor.getInt(index));
96     }
97
98     /**
99      * @MediumTest
100      * @Feature({"Android-ContentProvider"})
101      * BUG 154683
102      */
103     @DisabledTest
104     public void testQueryBookmark() {
105         final long now = System.currentTimeMillis();
106         final long lastUpdateTime[] = { now, now - 1000 * 60 };
107         final long createdTime[] = { now - 1000 * 60 * 60, now - 1000 * 60 * 60 * 60 };
108         final String url[] = { "http://www.google.com/", "http://mail.google.com/" };
109         final int visits[] = { 2, 20 };
110         final String title[] = { "Google", "Mail" };
111         final int isBookmark[] = { 1, 0 };
112         Uri[] uris = new Uri[2];
113         byte[][] icons = { BookmarkUtils.getIcon(ICON_PATH), null };
114         for (int i = 0; i < uris.length; i++) {
115             uris[i] = addBookmark(url[i], title[i], lastUpdateTime[i], createdTime[i], visits[i],
116                     icons[i], isBookmark[i]);
117             assertNotNull(uris[i]);
118         }
119
120         // Query the 1st row.
121         String[] selectionArgs = { url[0], String.valueOf(lastUpdateTime[0]),
122                 String.valueOf(visits[0]), String.valueOf(isBookmark[0]) };
123         Cursor cursor = getContentResolver().query(mBookmarksUri, null,
124                 "url = ? AND date = ? AND visits = ? AND bookmark = ? AND favicon IS NOT NULL",
125                 selectionArgs, null);
126         assertNotNull(cursor);
127         assertEquals(1, cursor.getCount());
128         assertTrue(cursor.moveToNext());
129         int index = cursor.getColumnIndex(BookmarkColumns.BOOKMARK);
130         assertTrue(-1 != index);
131         assertEquals(isBookmark[0], cursor.getInt(index));
132         index = cursor.getColumnIndex(BookmarkColumns.CREATED);
133         assertTrue(-1 != index);
134         assertEquals(createdTime[0], cursor.getLong(index));
135         index = cursor.getColumnIndex(BookmarkColumns.DATE);
136         assertTrue(-1 != index);
137         assertEquals(lastUpdateTime[0], cursor.getLong(index));
138         index = cursor.getColumnIndex(BookmarkColumns.FAVICON);
139         assertTrue(-1 != index);
140         assertTrue(BookmarkUtils.byteArrayEqual(icons[0], cursor.getBlob(index)));
141         index = cursor.getColumnIndex(BookmarkColumns.URL);
142         assertTrue(-1 != index);
143         assertEquals(url[0], cursor.getString(index));
144         index = cursor.getColumnIndex(BookmarkColumns.VISITS);
145         assertTrue(-1 != index);
146         assertEquals(visits[0], cursor.getInt(index));
147
148         // Query the 2nd row.
149         String[] selectionArgs2 = { url[1], String.valueOf(lastUpdateTime[1]),
150                 String.valueOf(visits[1]), String.valueOf(isBookmark[1]) };
151         cursor = getContentResolver().query(mBookmarksUri, null,
152                 "url = ? AND date = ? AND visits = ? AND bookmark = ? AND favicon IS NULL",
153                 selectionArgs2, null);
154         assertNotNull(cursor);
155         assertEquals(1, cursor.getCount());
156         assertTrue(cursor.moveToNext());
157         index = cursor.getColumnIndex(BookmarkColumns.BOOKMARK);
158         assertTrue(-1 != index);
159         assertEquals(isBookmark[1], cursor.getInt(index));
160         index = cursor.getColumnIndex(BookmarkColumns.CREATED);
161         assertTrue(-1 != index);
162         assertEquals(createdTime[1], cursor.getLong(index));
163         index = cursor.getColumnIndex(BookmarkColumns.DATE);
164         assertTrue(-1 != index);
165         assertEquals(lastUpdateTime[1], cursor.getLong(index));
166         index = cursor.getColumnIndex(BookmarkColumns.FAVICON);
167         assertTrue(-1 != index);
168         assertTrue(BookmarkUtils.byteArrayEqual(icons[1], cursor.getBlob(index)));
169         index = cursor.getColumnIndex(BookmarkColumns.URL);
170         assertTrue(-1 != index);
171         assertEquals(url[1], cursor.getString(index));
172         index = cursor.getColumnIndex(BookmarkColumns.VISITS);
173         assertTrue(-1 != index);
174         assertEquals(visits[1], cursor.getInt(index));
175     }
176
177     /**
178      * @MediumTest
179      * @Feature({"Android-ContentProvider"})
180      * BUG 154683
181      */
182     @DisabledTest
183     public void testUpdateBookmark() {
184         final long now = System.currentTimeMillis();
185         final long lastUpdateTime[] = { now, now - 1000 * 60 };
186         final long createdTime[] = { now - 1000 * 60 * 60, now - 1000 * 60 * 60 * 60 };
187         final String url[] = { "http://www.google.com/", "http://mail.google.com/" };
188         final int visits[] = { 2, 20 };
189         final String title[] = { "Google", "Mail" };
190         final int isBookmark[] = { 1, 0 };
191
192         byte[][] icons = { BookmarkUtils.getIcon(ICON_PATH), null };
193         Uri uri = addBookmark(url[0], title[0], lastUpdateTime[0], createdTime[0], visits[0],
194                 icons[0], isBookmark[0]);
195         assertNotNull(uri);
196
197         ContentValues values = new ContentValues();
198         values.put(BookmarkColumns.BOOKMARK, isBookmark[1]);
199         values.put(BookmarkColumns.DATE, lastUpdateTime[1]);
200         values.put(BookmarkColumns.URL, url[1]);
201         values.putNull(BookmarkColumns.FAVICON);
202         values.put(BookmarkColumns.TITLE, title[1]);
203         values.put(BookmarkColumns.VISITS, visits[1]);
204         String[] selectionArgs = { String.valueOf(lastUpdateTime[0]),
205                 String.valueOf(isBookmark[0]) };
206         getContentResolver().update(uri, values, BookmarkColumns.FAVICON +  " IS NOT NULL AND " +
207                 BookmarkColumns.DATE + "= ? AND " + BookmarkColumns.BOOKMARK + " = ?",
208                 selectionArgs);
209         Cursor cursor = getContentResolver().query(uri, null, null, null, null);
210         assertEquals(1, cursor.getCount());
211         assertTrue(cursor.moveToNext());
212         int index = cursor.getColumnIndex(BookmarkColumns.BOOKMARK);
213         assertTrue(-1 != index);
214         assertEquals(isBookmark[1], cursor.getInt(index));
215         index = cursor.getColumnIndex(BookmarkColumns.CREATED);
216         assertTrue(-1 != index);
217         assertEquals(createdTime[0], cursor.getLong(index));
218         index = cursor.getColumnIndex(BookmarkColumns.DATE);
219         assertTrue(-1 != index);
220         assertEquals(lastUpdateTime[1], cursor.getLong(index));
221         index = cursor.getColumnIndex(BookmarkColumns.FAVICON);
222         assertTrue(-1 != index);
223         assertTrue(BookmarkUtils.byteArrayEqual(icons[1], cursor.getBlob(index)));
224         index = cursor.getColumnIndex(BookmarkColumns.URL);
225         assertTrue(-1 != index);
226         assertEquals(url[1], cursor.getString(index));
227         index = cursor.getColumnIndex(BookmarkColumns.VISITS);
228         assertTrue(-1 != index);
229         assertEquals(visits[1], cursor.getInt(index));
230     }
231
232     /**
233      * @MediumTest
234      * @Feature({"Android-ContentProvider"})
235      * BUG 154683
236      */
237     @DisabledTest
238     public void testDeleteBookmark() {
239         final long now = System.currentTimeMillis();
240         final long lastUpdateTime[] = { now, now - 1000 * 60 };
241         final long createdTime[] = { now - 1000 * 60 * 60, now - 1000 * 60 * 60 * 60 };
242         final String url[] = { "http://www.google.com/", "http://mail.google.com/" };
243         final int visits[] = { 2, 20 };
244         final String title[] = { "Google", "Mail" };
245         final int isBookmark[] = { 1, 0 };
246         Uri[] uris = new Uri[2];
247         byte[][] icons = { BookmarkUtils.getIcon(ICON_PATH), null };
248         for (int i = 0; i < uris.length; i++) {
249             uris[i] = addBookmark(url[i], title[i], lastUpdateTime[i], createdTime[i], visits[i],
250                     icons[i], isBookmark[i]);
251             assertNotNull(uris[i]);
252         }
253
254         String[] selectionArgs = { String.valueOf(lastUpdateTime[0]),
255                 String.valueOf(isBookmark[0]) };
256         getContentResolver().delete(mBookmarksUri, BookmarkColumns.FAVICON +  " IS NOT NULL AND " +
257                 BookmarkColumns.DATE + "= ? AND " + BookmarkColumns.BOOKMARK + " = ?",
258                 selectionArgs);
259         Cursor cursor = getContentResolver().query(uris[0], null, null, null, null);
260         assertNotNull(cursor);
261         assertEquals(0, cursor.getCount());
262         cursor = getContentResolver().query(uris[1], null, null, null, null);
263         assertNotNull(cursor);
264         assertEquals(1, cursor.getCount());
265         String[] selectionArgs1 = { String.valueOf(lastUpdateTime[1]),
266                 String.valueOf(isBookmark[1]) };
267         getContentResolver().delete(mBookmarksUri, BookmarkColumns.FAVICON +  " IS NULL AND " +
268                 BookmarkColumns.DATE + "= ? AND " + BookmarkColumns.BOOKMARK + " = ?",
269                 selectionArgs1);
270         cursor = getContentResolver().query(uris[1], null, null, null, null);
271         assertNotNull(cursor);
272         assertEquals(0, cursor.getCount());
273     }
274
275     /*
276      * Copied from CTS test with minor adaptations.
277      */
278     /**
279      * @MediumTest
280      * @Feature({"Android-ContentProvider"})
281      * BUG 154683
282      */
283     @DisabledTest
284     public void testBookmarksTable() {
285         final String[] bookmarksProjection = new String[] {
286                 BookmarkColumns._ID, BookmarkColumns.URL, BookmarkColumns.VISITS,
287                 BookmarkColumns.DATE, BookmarkColumns.CREATED, BookmarkColumns.BOOKMARK,
288                 BookmarkColumns.TITLE, BookmarkColumns.FAVICON };
289         final int idIndex = 0;
290         final int urlIndex = 1;
291         final int visitsIndex = 2;
292         final int dataIndex = 3;
293         final int createdIndex = 4;
294         final int bookmarkIndex = 5;
295         final int titleIndex = 6;
296         final int faviconIndex = 7;
297
298         final String insertBookmarkTitle = "bookmark_insert";
299         final String insertBookmarkUrl = "www.bookmark_insert.com";
300
301         final String updateBookmarkTitle = "bookmark_update";
302         final String updateBookmarkUrl = "www.bookmark_update.com";
303
304         // Test: insert.
305         ContentValues value = new ContentValues();
306         long createDate = new Date().getTime();
307         value.put(BookmarkColumns.TITLE, insertBookmarkTitle);
308         value.put(BookmarkColumns.URL, insertBookmarkUrl);
309         value.put(BookmarkColumns.VISITS, 0);
310         value.put(BookmarkColumns.DATE, createDate);
311         value.put(BookmarkColumns.CREATED, createDate);
312         value.put(BookmarkColumns.BOOKMARK, 0);
313
314         Uri insertUri = getContentResolver().insert(mBookmarksUri, value);
315         Cursor cursor = getContentResolver().query(
316                 mBookmarksUri,
317                 bookmarksProjection,
318                 BookmarkColumns.TITLE + " = ?",
319                 new String[] { insertBookmarkTitle },
320                 BookmarkColumns.DATE);
321         assertTrue(cursor.moveToNext());
322         assertEquals(insertBookmarkTitle, cursor.getString(titleIndex));
323         assertEquals(insertBookmarkUrl, cursor.getString(urlIndex));
324         assertEquals(0, cursor.getInt(visitsIndex));
325         assertEquals(createDate, cursor.getLong(dataIndex));
326         assertEquals(createDate, cursor.getLong(createdIndex));
327         assertEquals(0, cursor.getInt(bookmarkIndex));
328         // TODO(michaelbai): according to the test this should be null instead of an empty byte[].
329         // BUG 6288508
330         // assertTrue(cursor.isNull(FAVICON_INDEX));
331         int Id = cursor.getInt(idIndex);
332         cursor.close();
333
334         // Test: update.
335         value.clear();
336         long updateDate = new Date().getTime();
337         value.put(BookmarkColumns.TITLE, updateBookmarkTitle);
338         value.put(BookmarkColumns.URL, updateBookmarkUrl);
339         value.put(BookmarkColumns.VISITS, 1);
340         value.put(BookmarkColumns.DATE, updateDate);
341
342         getContentResolver().update(mBookmarksUri, value,
343                 BookmarkColumns.TITLE + " = ?",
344                 new String[] { insertBookmarkTitle });
345         cursor = getContentResolver().query(
346                 mBookmarksUri,
347                 bookmarksProjection,
348                 BookmarkColumns._ID + " = " + Id,
349                 null, null);
350         assertTrue(cursor.moveToNext());
351         assertEquals(updateBookmarkTitle, cursor.getString(titleIndex));
352         assertEquals(updateBookmarkUrl, cursor.getString(urlIndex));
353         assertEquals(1, cursor.getInt(visitsIndex));
354         assertEquals(updateDate, cursor.getLong(dataIndex));
355         assertEquals(createDate, cursor.getLong(createdIndex));
356         assertEquals(0, cursor.getInt(bookmarkIndex));
357         // TODO(michaelbai): according to the test this should be null instead of an empty byte[].
358         // BUG 6288508
359         // assertTrue(cursor.isNull(FAVICON_INDEX));
360         assertEquals(Id, cursor.getInt(idIndex));
361
362         // Test: delete.
363         getContentResolver().delete(insertUri, null, null);
364         cursor = getContentResolver().query(
365                 mBookmarksUri,
366                 bookmarksProjection,
367                 BookmarkColumns._ID + " = " + Id,
368                 null, null);
369         assertEquals(0, cursor.getCount());
370     }
371 }