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.
5 package org.chromium.chrome.browser.test;
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;
13 import org.chromium.base.test.util.DisabledTest;
14 import org.chromium.chrome.browser.ChromeBrowserProvider;
16 import java.util.Date;
19 * Tests the use of the Searches URI as part of the Android provider public API.
21 public class ProviderSearchesUriTest extends ProviderTestBase {
23 private Uri mSearchesUri;
26 protected void setUp() throws Exception {
28 mSearchesUri = ChromeBrowserProvider.getSearchesApiUri(getActivity());
29 getContentResolver().delete(mSearchesUri, null, null);
33 protected void tearDown() throws Exception {
34 getContentResolver().delete(mSearchesUri, null, null);
38 private Uri addSearchTerm(String searchTerm, long searchTime) {
39 ContentValues values = new ContentValues();
40 values.put(SearchColumns.SEARCH, searchTerm);
41 values.put(SearchColumns.DATE, searchTime);
42 return getContentResolver().insert(mSearchesUri, values);
47 * @Feature({"Android-ContentProvider"})
51 public void testAddSearchTerm() {
52 long searchTime = System.currentTimeMillis();
53 String searchTerm = "chrome";
54 Uri uri = addSearchTerm(searchTerm, searchTime);
56 String[] selectionArgs = { searchTerm, String.valueOf(searchTime) };
57 Cursor cursor = getContentResolver().query(uri, null, SearchColumns.SEARCH + "=? AND " +
58 SearchColumns.DATE + " = ? ", selectionArgs, null);
59 assertNotNull(cursor);
60 assertEquals(1, cursor.getCount());
61 assertTrue(cursor.moveToNext());
62 int index = cursor.getColumnIndex(SearchColumns.SEARCH);
63 assertTrue(-1 != index);
64 assertEquals(searchTerm, cursor.getString(index));
65 index = cursor.getColumnIndex(SearchColumns.DATE);
66 assertTrue(-1 != index);
67 assertEquals(searchTime, cursor.getLong(index));
72 * @Feature({"Android-ContentProvider"})
76 public void testUpdateSearchTerm() {
77 long[] searchTime = { System.currentTimeMillis(), System.currentTimeMillis() - 1000 };
78 String[] searchTerm = { "chrome", "chromium" };
79 Uri uri = addSearchTerm(searchTerm[0], searchTime[0]);
80 ContentValues values = new ContentValues();
81 values.put(SearchColumns.SEARCH, searchTerm[1]);
82 values.put(SearchColumns.DATE, searchTime[1]);
83 getContentResolver().update(uri, values, null, null);
84 String[] selectionArgs = { searchTerm[0] };
85 Cursor cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?",
87 assertNotNull(cursor);
88 assertEquals(0, cursor.getCount());
89 String[] selectionArgs1 = { searchTerm[1] };
90 cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?",
91 selectionArgs1, null);
92 assertNotNull(cursor);
93 assertEquals(1, cursor.getCount());
94 assertTrue(cursor.moveToNext());
95 int index = cursor.getColumnIndex(SearchColumns.SEARCH);
96 assertTrue(-1 != index);
97 assertEquals(searchTerm[1], cursor.getString(index));
98 index = cursor.getColumnIndex(SearchColumns.DATE);
99 assertTrue(-1 != index);
100 assertEquals(searchTime[1], cursor.getLong(index));
105 * @Feature({"Android-ContentProvider"})
109 public void testDeleteSearchTerm() {
110 long[] searchTime = { System.currentTimeMillis(), System.currentTimeMillis() - 1000 };
111 String[] searchTerm = {"chrome", "chromium"};
112 Uri uri[] = new Uri[2];
113 for (int i = 0; i < uri.length; i++) {
114 uri[i] = addSearchTerm(searchTerm[i], searchTime[i]);
116 getContentResolver().delete(uri[0], null, null);
117 String[] selectionArgs = { searchTerm[0] };
118 Cursor cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?",
119 selectionArgs, null);
120 assertNotNull(cursor);
121 assertEquals(0, cursor.getCount());
122 String[] selectionArgs1 = { searchTerm[1] };
123 cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?",
124 selectionArgs1, null);
125 assertNotNull(cursor);
126 assertEquals(1, cursor.getCount());
127 assertTrue(cursor.moveToNext());
128 int index = cursor.getColumnIndex(SearchColumns.SEARCH);
129 assertTrue(-1 != index);
130 assertEquals(searchTerm[1], cursor.getString(index));
131 index = cursor.getColumnIndex(SearchColumns.DATE);
132 assertTrue(-1 != index);
133 assertEquals(searchTime[1], cursor.getLong(index));
134 getContentResolver().delete(uri[1], null, null);
135 cursor = getContentResolver().query(uri[1], null, null, null, null);
136 assertNotNull(cursor);
137 assertEquals(0, cursor.getCount());
140 // Copied from CTS test with minor adaptations.
143 * @Feature({"Android-ContentProvider"})
147 public void testSearchesTable() {
148 final int idIndex = 0;
149 String insertSearch = "search_insert";
150 String updateSearch = "search_update";
153 ContentValues value = new ContentValues();
154 long createDate = new Date().getTime();
155 value.put(SearchColumns.SEARCH, insertSearch);
156 value.put(SearchColumns.DATE, createDate);
158 Uri insertUri = getContentResolver().insert(mSearchesUri, value);
159 Cursor cursor = getContentResolver().query(mSearchesUri,
160 Browser.SEARCHES_PROJECTION, SearchColumns.SEARCH + " = ?",
161 new String[] { insertSearch }, null);
162 assertTrue(cursor.moveToNext());
163 assertEquals(insertSearch,
164 cursor.getString(Browser.SEARCHES_PROJECTION_SEARCH_INDEX));
165 assertEquals(createDate,
166 cursor.getLong(Browser.SEARCHES_PROJECTION_DATE_INDEX));
167 int id = cursor.getInt(idIndex);
172 long updateDate = new Date().getTime();
173 value.put(SearchColumns.SEARCH, updateSearch);
174 value.put(SearchColumns.DATE, updateDate);
176 getContentResolver().update(mSearchesUri, value,
177 SearchColumns._ID + " = " + id, null);
178 cursor = getContentResolver().query(mSearchesUri,
179 Browser.SEARCHES_PROJECTION,
180 SearchColumns._ID + " = " + id, null, null);
181 assertTrue(cursor.moveToNext());
182 assertEquals(updateSearch,
183 cursor.getString(Browser.SEARCHES_PROJECTION_SEARCH_INDEX));
184 assertEquals(updateDate,
185 cursor.getLong(Browser.SEARCHES_PROJECTION_DATE_INDEX));
186 assertEquals(id, cursor.getInt(idIndex));
189 getContentResolver().delete(insertUri, null, null);
190 cursor = getContentResolver().query(mSearchesUri,
191 Browser.SEARCHES_PROJECTION,
192 SearchColumns._ID + " = " + id, null, null);
193 assertEquals(0, cursor.getCount());