ProviderSearchesUriTest.java revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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 5package org.chromium.chrome.browser.test; 6 7import android.content.ContentValues; 8import android.database.Cursor; 9import android.net.Uri; 10import android.provider.Browser; 11import android.provider.Browser.SearchColumns; 12import android.test.suitebuilder.annotation.MediumTest; 13 14import java.util.Date; 15 16import org.chromium.base.test.util.DisabledTest; 17import org.chromium.base.test.util.Feature; 18import org.chromium.chrome.browser.ChromeBrowserProvider; 19 20/** 21 * Tests the use of the Searches URI as part of the Android provider public API. 22 */ 23public 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} 198