1/* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.browser.tests; 18 19import com.android.browser.provider.BrowserProvider; 20import com.android.browser.tests.utils.BP2TestCaseHelper; 21 22import android.content.ContentUris; 23import android.content.ContentValues; 24import android.database.Cursor; 25import android.graphics.Bitmap; 26import android.graphics.Bitmap.Config; 27import android.net.Uri; 28import android.provider.Browser; 29import android.provider.Browser.BookmarkColumns; 30import android.provider.BrowserContract; 31import android.provider.BrowserContract.Bookmarks; 32import android.provider.BrowserContract.History; 33import android.provider.BrowserContract.Images; 34import android.test.suitebuilder.annotation.SmallTest; 35 36import java.io.ByteArrayOutputStream; 37import java.util.ArrayList; 38 39@SmallTest 40public class BP1to2UpgradeTests extends BP2TestCaseHelper { 41 42 BrowserProvider mBp1; 43 44 @Override 45 protected void setUp() throws Exception { 46 super.setUp(); 47 mBp1 = new BrowserProvider(); 48 mBp1.attachInfo(getMockContext(), null); 49 } 50 51 /** 52 * Test that simply makes sure BP1->BP2 with no changes works as intended 53 */ 54 public void testStockUpgrade() { 55 Cursor c = mBp1.query(Browser.BOOKMARKS_URI, 56 new String[] { BookmarkColumns.URL }, null, null, 57 BookmarkColumns.URL + " DESC"); 58 ArrayList<String> urls = new ArrayList<String>(c.getCount()); 59 while (c.moveToNext()) { 60 urls.add(c.getString(0)); 61 } 62 c.close(); 63 // First, test the public API (which will hit BP2) 64 c = getMockContentResolver().query(Browser.BOOKMARKS_URI, 65 new String[] { BookmarkColumns.URL }, null, null, 66 BookmarkColumns.URL + " DESC"); 67 assertEquals(urls.size(), c.getCount()); 68 int i = 0; 69 while (c.moveToNext()) { 70 assertEquals(urls.get(i++), c.getString(0)); 71 } 72 c.close(); 73 // Next, test BP2's new API (not a public API) 74 c = getMockContentResolver().query(Bookmarks.CONTENT_URI, 75 new String[] { Bookmarks.URL }, null, null, 76 Bookmarks.URL + " DESC"); 77 assertEquals(urls.size(), c.getCount()); 78 i = 0; 79 while (c.moveToNext()) { 80 assertEquals(urls.get(i++), c.getString(0)); 81 } 82 c.close(); 83 } 84 85 public void testPreserveHistory() { 86 ContentValues values = new ContentValues(); 87 values.put(BookmarkColumns.URL, "http://slashdot.org/"); 88 values.put(BookmarkColumns.BOOKMARK, 0); 89 values.put(BookmarkColumns.DATE, 123456); 90 mBp1.insert(Browser.BOOKMARKS_URI, values); 91 // First, test internal API 92 Cursor c = getMockContentResolver().query(History.CONTENT_URI, 93 new String[] { History.URL, History.DATE_LAST_VISITED }, 94 null, null, null); 95 assertEquals(1, c.getCount()); 96 assertTrue(c.moveToFirst()); 97 assertEquals("http://slashdot.org/", c.getString(0)); 98 assertEquals(123456, c.getInt(1)); 99 c.close(); 100 // Next, test public API 101 c = getMockContentResolver().query(Browser.BOOKMARKS_URI, 102 Browser.HISTORY_PROJECTION, BookmarkColumns.BOOKMARK + " = 0", 103 null, null); 104 assertEquals("public API", 1, c.getCount()); 105 assertTrue(c.moveToFirst()); 106 assertEquals("http://slashdot.org/", 107 c.getString(Browser.HISTORY_PROJECTION_URL_INDEX)); 108 assertEquals(123456, c.getInt(Browser.HISTORY_PROJECTION_DATE_INDEX)); 109 c.close(); 110 } 111 112 public void testPreserveBookmarks() { 113 // First, nuke 'er (deletes stock bookmarks) 114 mBp1.delete(Browser.BOOKMARKS_URI, null, null); 115 ContentValues values = new ContentValues(); 116 values.put(BookmarkColumns.URL, "http://slashdot.org/"); 117 values.put(BookmarkColumns.BOOKMARK, 1); 118 values.put(BookmarkColumns.CREATED, 123456); 119 mBp1.insert(Browser.BOOKMARKS_URI, values); 120 // First, test internal API 121 Cursor c = getMockContentResolver().query(Bookmarks.CONTENT_URI, 122 new String[] { Bookmarks.URL, Bookmarks.DATE_CREATED }, 123 null, null, null); 124 assertEquals(1, c.getCount()); 125 assertTrue(c.moveToFirst()); 126 assertEquals("http://slashdot.org/", c.getString(0)); 127 assertEquals(123456, c.getInt(1)); 128 c.close(); 129 // Next, test public API 130 c = getMockContentResolver().query(Browser.BOOKMARKS_URI, 131 new String[] { BookmarkColumns.URL, BookmarkColumns.CREATED }, 132 BookmarkColumns.BOOKMARK + " = 1", null, null); 133 assertEquals("public API", 1, c.getCount()); 134 assertTrue(c.moveToFirst()); 135 assertEquals("http://slashdot.org/", c.getString(0)); 136 assertEquals(123456, c.getInt(1)); 137 c.close(); 138 } 139 140 public void testEmptyUpgrade() { 141 mBp1.delete(Browser.BOOKMARKS_URI, null, null); 142 Cursor c = getMockContentResolver().query(Bookmarks.CONTENT_URI, 143 null, null, null, null); 144 assertEquals(0, c.getCount()); 145 c.close(); 146 } 147 148} 149