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 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; 12 13import org.chromium.base.test.util.DisabledTest; 14import org.chromium.chrome.browser.ChromeBrowserProvider; 15 16import java.util.Date; 17 18/** 19 * Tests the use of the Searches URI as part of the Android provider public API. 20 */ 21public class ProviderSearchesUriTest extends ProviderTestBase { 22 23 private Uri mSearchesUri; 24 25 @Override 26 protected void setUp() throws Exception { 27 super.setUp(); 28 mSearchesUri = ChromeBrowserProvider.getSearchesApiUri(getActivity()); 29 getContentResolver().delete(mSearchesUri, null, null); 30 } 31 32 @Override 33 protected void tearDown() throws Exception { 34 getContentResolver().delete(mSearchesUri, null, null); 35 super.tearDown(); 36 } 37 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); 43 } 44 45 /** 46 * @MediumTest 47 * @Feature({"Android-ContentProvider"}) 48 * BUG 154683 49 */ 50 @DisabledTest 51 public void testAddSearchTerm() { 52 long searchTime = System.currentTimeMillis(); 53 String searchTerm = "chrome"; 54 Uri uri = addSearchTerm(searchTerm, searchTime); 55 assertNotNull(uri); 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)); 68 } 69 70 /** 71 * @MediumTest 72 * @Feature({"Android-ContentProvider"}) 73 * BUG 154683 74 */ 75 @DisabledTest 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 + "=?", 86 selectionArgs, null); 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)); 101 } 102 103 /** 104 * @MediumTest 105 * @Feature({"Android-ContentProvider"}) 106 * BUG 154683 107 */ 108 @DisabledTest 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]); 115 } 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()); 138 } 139 140 // Copied from CTS test with minor adaptations. 141 /** 142 * @MediumTest 143 * @Feature({"Android-ContentProvider"}) 144 * BUG 154683 145 */ 146 @DisabledTest 147 public void testSearchesTable() { 148 final int ID_INDEX = 0; 149 String insertSearch = "search_insert"; 150 String updateSearch = "search_update"; 151 152 // Test: insert 153 ContentValues value = new ContentValues(); 154 long createDate = new Date().getTime(); 155 value.put(SearchColumns.SEARCH, insertSearch); 156 value.put(SearchColumns.DATE, createDate); 157 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(ID_INDEX); 168 cursor.close(); 169 170 // Test: update 171 value.clear(); 172 long updateDate = new Date().getTime(); 173 value.put(SearchColumns.SEARCH, updateSearch); 174 value.put(SearchColumns.DATE, updateDate); 175 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(ID_INDEX)); 187 188 // Test: delete 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()); 194 } 195} 196