1 | // Copyright (c) 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; |
11 | import android.provider.Browser.SearchColumns; |
12 | import android.test.suitebuilder.annotation.MediumTest; |
13 | |
14 | import java.util.Date; |
15 | |
16 | import org.chromium.base.test.util.DisabledTest; |
17 | import org.chromium.base.test.util.Feature; |
18 | import org.chromium.chrome.browser.ChromeBrowserProvider; |
19 | |
20 | /** |
21 | * Tests the use of the Searches URI as part of the Android provider public API. |
22 | */ |
23 | public class ProviderSearchesUriTest extends ProviderTestBase { |
24 | |
25 | private Uri mSearchesUri; |
26 | |
27 | @Override |
28 | protected void setUp() throws Exception { |
29 | super.setUp(); |
30 | mSearchesUri = ChromeBrowserProvider.getSearchesApiUri(getActivity()); |
31 | getContentResolver().delete(mSearchesUri, null, null); |
32 | } |
33 | |
34 | @Override |
35 | protected void tearDown() throws Exception { |
36 | getContentResolver().delete(mSearchesUri, null, null); |
37 | super.tearDown(); |
38 | } |
39 | |
40 | private Uri addSearchTerm(String searchTerm, long searchTime) { |
41 | ContentValues values = new ContentValues(); |
42 | values.put(SearchColumns.SEARCH, searchTerm); |
43 | values.put(SearchColumns.DATE, searchTime); |
44 | return getContentResolver().insert(mSearchesUri, values); |
45 | } |
46 | |
47 | /** |
48 | * @MediumTest |
49 | * @Feature({"Android-ContentProvider"}) |
50 | * BUG 154683 |
51 | */ |
52 | @DisabledTest |
53 | public void testAddSearchTerm() { |
54 | long searchTime = System.currentTimeMillis(); |
55 | String searchTerm = "chrome"; |
56 | Uri uri = addSearchTerm(searchTerm, searchTime); |
57 | assertNotNull(uri); |
58 | String[] selectionArgs = { searchTerm, String.valueOf(searchTime) }; |
59 | Cursor cursor = getContentResolver().query(uri, null, SearchColumns.SEARCH + "=? AND " + |
60 | SearchColumns.DATE + " = ? ", selectionArgs, null); |
61 | assertNotNull(cursor); |
62 | assertEquals(1, cursor.getCount()); |
63 | assertTrue(cursor.moveToNext()); |
64 | int index = cursor.getColumnIndex(SearchColumns.SEARCH); |
65 | assertTrue(-1 != index); |
66 | assertEquals(searchTerm, cursor.getString(index)); |
67 | index = cursor.getColumnIndex(SearchColumns.DATE); |
68 | assertTrue(-1 != index); |
69 | assertEquals(searchTime, cursor.getLong(index)); |
70 | } |
71 | |
72 | /** |
73 | * @MediumTest |
74 | * @Feature({"Android-ContentProvider"}) |
75 | * BUG 154683 |
76 | */ |
77 | @DisabledTest |
78 | public void testUpdateSearchTerm() { |
79 | long[] searchTime = { System.currentTimeMillis(), System.currentTimeMillis() - 1000 }; |
80 | String[] searchTerm = { "chrome", "chromium" }; |
81 | Uri uri = addSearchTerm(searchTerm[0], searchTime[0]); |
82 | ContentValues values = new ContentValues(); |
83 | values.put(SearchColumns.SEARCH, searchTerm[1]); |
84 | values.put(SearchColumns.DATE, searchTime[1]); |
85 | getContentResolver().update(uri, values, null, null); |
86 | String[] selectionArgs = { searchTerm[0] }; |
87 | Cursor cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?", |
88 | selectionArgs, null); |
89 | assertNotNull(cursor); |
90 | assertEquals(0, cursor.getCount()); |
91 | String[] selectionArgs1 = { searchTerm[1] }; |
92 | cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?", |
93 | selectionArgs1, null); |
94 | assertNotNull(cursor); |
95 | assertEquals(1, cursor.getCount()); |
96 | assertTrue(cursor.moveToNext()); |
97 | int index = cursor.getColumnIndex(SearchColumns.SEARCH); |
98 | assertTrue(-1 != index); |
99 | assertEquals(searchTerm[1], cursor.getString(index)); |
100 | index = cursor.getColumnIndex(SearchColumns.DATE); |
101 | assertTrue(-1 != index); |
102 | assertEquals(searchTime[1], cursor.getLong(index)); |
103 | } |
104 | |
105 | /** |
106 | * @MediumTest |
107 | * @Feature({"Android-ContentProvider"}) |
108 | * BUG 154683 |
109 | */ |
110 | @DisabledTest |
111 | public void testDeleteSearchTerm() { |
112 | long[] searchTime = { System.currentTimeMillis(), System.currentTimeMillis() - 1000 }; |
113 | String[] searchTerm = {"chrome", "chromium"}; |
114 | Uri uri[] = new Uri[2]; |
115 | for (int i = 0; i < uri.length; i++) { |
116 | uri[i] = addSearchTerm(searchTerm[i], searchTime[i]); |
117 | } |
118 | getContentResolver().delete(uri[0], null, null); |
119 | String[] selectionArgs = { searchTerm[0] }; |
120 | Cursor cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?", |
121 | selectionArgs, null); |
122 | assertNotNull(cursor); |
123 | assertEquals(0, cursor.getCount()); |
124 | String[] selectionArgs1 = { searchTerm[1] }; |
125 | cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?", |
126 | selectionArgs1, null); |
127 | assertNotNull(cursor); |
128 | assertEquals(1, cursor.getCount()); |
129 | assertTrue(cursor.moveToNext()); |
130 | int index = cursor.getColumnIndex(SearchColumns.SEARCH); |
131 | assertTrue(-1 != index); |
132 | assertEquals(searchTerm[1], cursor.getString(index)); |
133 | index = cursor.getColumnIndex(SearchColumns.DATE); |
134 | assertTrue(-1 != index); |
135 | assertEquals(searchTime[1], cursor.getLong(index)); |
136 | getContentResolver().delete(uri[1], null, null); |
137 | cursor = getContentResolver().query(uri[1], null, null, null, null); |
138 | assertNotNull(cursor); |
139 | assertEquals(0, cursor.getCount()); |
140 | } |
141 | |
142 | // Copied from CTS test with minor adaptations. |
143 | /** |
144 | * @MediumTest |
145 | * @Feature({"Android-ContentProvider"}) |
146 | * BUG 154683 |
147 | */ |
148 | @DisabledTest |
149 | public void testSearchesTable() { |
150 | final int ID_INDEX = 0; |
151 | String insertSearch = "search_insert"; |
152 | String updateSearch = "search_update"; |
153 | |
154 | // Test: insert |
155 | ContentValues value = new ContentValues(); |
156 | long createDate = new Date().getTime(); |
157 | value.put(SearchColumns.SEARCH, insertSearch); |
158 | value.put(SearchColumns.DATE, createDate); |
159 | |
160 | Uri insertUri = getContentResolver().insert(mSearchesUri, value); |
161 | Cursor cursor = getContentResolver().query(mSearchesUri, |
162 | Browser.SEARCHES_PROJECTION, SearchColumns.SEARCH + " = ?", |
163 | new String[] { insertSearch }, null); |
164 | assertTrue(cursor.moveToNext()); |
165 | assertEquals(insertSearch, |
166 | cursor.getString(Browser.SEARCHES_PROJECTION_SEARCH_INDEX)); |
167 | assertEquals(createDate, |
168 | cursor.getLong(Browser.SEARCHES_PROJECTION_DATE_INDEX)); |
169 | int Id = cursor.getInt(ID_INDEX); |
170 | cursor.close(); |
171 | |
172 | // Test: update |
173 | value.clear(); |
174 | long updateDate = new Date().getTime(); |
175 | value.put(SearchColumns.SEARCH, updateSearch); |
176 | value.put(SearchColumns.DATE, updateDate); |
177 | |
178 | getContentResolver().update(mSearchesUri, value, |
179 | SearchColumns._ID + " = " + Id, null); |
180 | cursor = getContentResolver().query(mSearchesUri, |
181 | Browser.SEARCHES_PROJECTION, |
182 | SearchColumns._ID + " = " + Id, null, null); |
183 | assertTrue(cursor.moveToNext()); |
184 | assertEquals(updateSearch, |
185 | cursor.getString(Browser.SEARCHES_PROJECTION_SEARCH_INDEX)); |
186 | assertEquals(updateDate, |
187 | cursor.getLong(Browser.SEARCHES_PROJECTION_DATE_INDEX)); |
188 | assertEquals(Id, cursor.getInt(ID_INDEX)); |
189 | |
190 | // Test: delete |
191 | getContentResolver().delete(insertUri, null, null); |
192 | cursor = getContentResolver().query(mSearchesUri, |
193 | Browser.SEARCHES_PROJECTION, |
194 | SearchColumns._ID + " = " + Id, null, null); |
195 | assertEquals(0, cursor.getCount()); |
196 | } |
197 | } |