1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)package org.chromium.chrome.browser.test; 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.content.ContentValues; 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.database.Cursor; 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.net.Uri; 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.provider.Browser; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.provider.Browser.SearchColumns; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.base.test.util.DisabledTest; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.chrome.browser.ChromeBrowserProvider; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import java.util.Date; 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Tests the use of the Searches URI as part of the Android provider public API. 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public class ProviderSearchesUriTest extends ProviderTestBase { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private Uri mSearchesUri; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected void setUp() throws Exception { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super.setUp(); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mSearchesUri = ChromeBrowserProvider.getSearchesApiUri(getActivity()); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getContentResolver().delete(mSearchesUri, null, null); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected void tearDown() throws Exception { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getContentResolver().delete(mSearchesUri, null, null); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super.tearDown(); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private Uri addSearchTerm(String searchTerm, long searchTime) { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentValues values = new ContentValues(); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values.put(SearchColumns.SEARCH, searchTerm); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values.put(SearchColumns.DATE, searchTime); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return getContentResolver().insert(mSearchesUri, values); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @MediumTest 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @Feature({"Android-ContentProvider"}) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * BUG 154683 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @DisabledTest 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void testAddSearchTerm() { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) long searchTime = System.currentTimeMillis(); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String searchTerm = "chrome"; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Uri uri = addSearchTerm(searchTerm, searchTime); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertNotNull(uri); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String[] selectionArgs = { searchTerm, String.valueOf(searchTime) }; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Cursor cursor = getContentResolver().query(uri, null, SearchColumns.SEARCH + "=? AND " + 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SearchColumns.DATE + " = ? ", selectionArgs, null); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertNotNull(cursor); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(1, cursor.getCount()); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertTrue(cursor.moveToNext()); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index = cursor.getColumnIndex(SearchColumns.SEARCH); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertTrue(-1 != index); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(searchTerm, cursor.getString(index)); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) index = cursor.getColumnIndex(SearchColumns.DATE); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertTrue(-1 != index); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(searchTime, cursor.getLong(index)); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @MediumTest 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @Feature({"Android-ContentProvider"}) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * BUG 154683 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @DisabledTest 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void testUpdateSearchTerm() { 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) long[] searchTime = { System.currentTimeMillis(), System.currentTimeMillis() - 1000 }; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String[] searchTerm = { "chrome", "chromium" }; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Uri uri = addSearchTerm(searchTerm[0], searchTime[0]); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentValues values = new ContentValues(); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values.put(SearchColumns.SEARCH, searchTerm[1]); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values.put(SearchColumns.DATE, searchTime[1]); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getContentResolver().update(uri, values, null, null); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String[] selectionArgs = { searchTerm[0] }; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Cursor cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?", 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selectionArgs, null); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertNotNull(cursor); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(0, cursor.getCount()); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String[] selectionArgs1 = { searchTerm[1] }; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?", 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selectionArgs1, null); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertNotNull(cursor); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(1, cursor.getCount()); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertTrue(cursor.moveToNext()); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index = cursor.getColumnIndex(SearchColumns.SEARCH); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertTrue(-1 != index); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(searchTerm[1], cursor.getString(index)); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) index = cursor.getColumnIndex(SearchColumns.DATE); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertTrue(-1 != index); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(searchTime[1], cursor.getLong(index)); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @MediumTest 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @Feature({"Android-ContentProvider"}) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * BUG 154683 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @DisabledTest 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void testDeleteSearchTerm() { 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) long[] searchTime = { System.currentTimeMillis(), System.currentTimeMillis() - 1000 }; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String[] searchTerm = {"chrome", "chromium"}; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Uri uri[] = new Uri[2]; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < uri.length; i++) { 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uri[i] = addSearchTerm(searchTerm[i], searchTime[i]); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getContentResolver().delete(uri[0], null, null); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String[] selectionArgs = { searchTerm[0] }; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Cursor cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?", 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selectionArgs, null); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertNotNull(cursor); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(0, cursor.getCount()); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String[] selectionArgs1 = { searchTerm[1] }; 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?", 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selectionArgs1, null); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertNotNull(cursor); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(1, cursor.getCount()); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertTrue(cursor.moveToNext()); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index = cursor.getColumnIndex(SearchColumns.SEARCH); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertTrue(-1 != index); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(searchTerm[1], cursor.getString(index)); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) index = cursor.getColumnIndex(SearchColumns.DATE); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertTrue(-1 != index); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(searchTime[1], cursor.getLong(index)); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getContentResolver().delete(uri[1], null, null); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cursor = getContentResolver().query(uri[1], null, null, null, null); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertNotNull(cursor); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(0, cursor.getCount()); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Copied from CTS test with minor adaptations. 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @MediumTest 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @Feature({"Android-ContentProvider"}) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * BUG 154683 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @DisabledTest 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void testSearchesTable() { 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci final int idIndex = 0; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String insertSearch = "search_insert"; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String updateSearch = "search_update"; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test: insert 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentValues value = new ContentValues(); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) long createDate = new Date().getTime(); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) value.put(SearchColumns.SEARCH, insertSearch); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) value.put(SearchColumns.DATE, createDate); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Uri insertUri = getContentResolver().insert(mSearchesUri, value); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Cursor cursor = getContentResolver().query(mSearchesUri, 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser.SEARCHES_PROJECTION, SearchColumns.SEARCH + " = ?", 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new String[] { insertSearch }, null); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertTrue(cursor.moveToNext()); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(insertSearch, 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cursor.getString(Browser.SEARCHES_PROJECTION_SEARCH_INDEX)); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(createDate, 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cursor.getLong(Browser.SEARCHES_PROJECTION_DATE_INDEX)); 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int id = cursor.getInt(idIndex); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cursor.close(); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test: update 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) value.clear(); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) long updateDate = new Date().getTime(); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) value.put(SearchColumns.SEARCH, updateSearch); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) value.put(SearchColumns.DATE, updateDate); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getContentResolver().update(mSearchesUri, value, 177a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SearchColumns._ID + " = " + id, null); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cursor = getContentResolver().query(mSearchesUri, 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser.SEARCHES_PROJECTION, 180a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SearchColumns._ID + " = " + id, null, null); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertTrue(cursor.moveToNext()); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(updateSearch, 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cursor.getString(Browser.SEARCHES_PROJECTION_SEARCH_INDEX)); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(updateDate, 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cursor.getLong(Browser.SEARCHES_PROJECTION_DATE_INDEX)); 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assertEquals(id, cursor.getInt(idIndex)); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test: delete 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getContentResolver().delete(insertUri, null, null); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cursor = getContentResolver().query(mSearchesUri, 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser.SEARCHES_PROJECTION, 192a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SearchColumns._ID + " = " + id, null, null); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assertEquals(0, cursor.getCount()); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 196