--- a/mobile/android/base/java/org/mozilla/gecko/db/BrowserDatabaseHelper.java
+++ b/mobile/android/base/java/org/mozilla/gecko/db/BrowserDatabaseHelper.java
@@ -2073,17 +2073,17 @@ public final class BrowserDatabaseHelper
case 25:
upgradeDatabaseFrom24to25(db);
break;
case 26:
upgradeDatabaseFrom25to26(db);
break;
- // case 27 occurs in UrlMetadataTable.onUpgrade
+ // case 27 occurs in URLImageDataTable.onUpgrade
case 28:
upgradeDatabaseFrom27to28(db);
break;
case 29:
upgradeDatabaseFrom28to29(db);
break;
--- a/mobile/android/base/java/org/mozilla/gecko/db/BrowserProvider.java
+++ b/mobile/android/base/java/org/mozilla/gecko/db/BrowserProvider.java
@@ -159,18 +159,18 @@ public class BrowserProvider extends Sha
static final Map<String, String> THUMBNAILS_PROJECTION_MAP;
static final Map<String, String> URL_ANNOTATIONS_PROJECTION_MAP;
static final Map<String, String> VISIT_PROJECTION_MAP;
static final Map<String, String> PAGE_METADATA_PROJECTION_MAP;
static final Table[] sTables;
static {
sTables = new Table[] {
- // See awful shortcut assumption hack in getURLMetadataTable.
- new URLMetadataTable()
+ // See awful shortcut assumption hack in getURLImageDataTable.
+ new URLImageDataTable()
};
// We will reuse this.
HashMap<String, String> map;
// Bookmarks
URI_MATCHER.addURI(BrowserContract.AUTHORITY, "bookmarks", BOOKMARKS);
URI_MATCHER.addURI(BrowserContract.AUTHORITY, "bookmarks/#", BOOKMARKS_ID);
URI_MATCHER.addURI(BrowserContract.AUTHORITY, "bookmarks/parents", BOOKMARKS_PARENT);
@@ -365,18 +365,18 @@ public class BrowserProvider extends Sha
public void shutdown() {
LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mShrinkMemoryReceiver);
super.shutdown();
}
// Convenience accessor.
// Assumes structure of sTables!
- private URLMetadataTable getURLMetadataTable() {
- return (URLMetadataTable) sTables[0];
+ private URLImageDataTable getURLImageDataTable() {
+ return (URLImageDataTable) sTables[0];
}
private static boolean hasFaviconsInProjection(String[] projection) {
if (projection == null) return true;
for (int i = 0; i < projection.length; ++i) {
if (projection[i].equals(FaviconColumns.FAVICON) ||
projection[i].equals(FaviconColumns.FAVICON_URL))
return true;
@@ -2199,17 +2199,17 @@ public class BrowserProvider extends Sha
+ " AND " + History.URL + " IS NOT NULL"
+ " UNION ALL SELECT " + Bookmarks.URL
+ " FROM " + TABLE_BOOKMARKS
+ " WHERE " + Bookmarks.IS_DELETED + " = 0"
+ " AND " + Bookmarks.URL + " IS NOT NULL)";
return deleteFavicons(uri, faviconSelection, null) +
deleteThumbnails(uri, thumbnailSelection, null) +
- getURLMetadataTable().deleteUnused(getWritableDatabase(uri));
+ getURLImageDataTable().deleteUnused(getWritableDatabase(uri));
}
@Override
public ContentProviderResult[] applyBatch (ArrayList<ContentProviderOperation> operations)
throws OperationApplicationException {
final int numOperations = operations.size();
final ContentProviderResult[] results = new ContentProviderResult[numOperations];
--- a/mobile/android/base/java/org/mozilla/gecko/db/LocalURLMetadata.java
+++ b/mobile/android/base/java/org/mozilla/gecko/db/LocalURLMetadata.java
@@ -29,27 +29,27 @@ import android.util.Log;
import android.util.LruCache;
// Holds metadata info about URLs. Supports some helper functions for getting back a HashMap of key value data.
public class LocalURLMetadata implements URLMetadata {
private static final String LOGTAG = "GeckoURLMetadata";
private final Uri uriWithProfile;
public LocalURLMetadata(String mProfile) {
- uriWithProfile = DBUtils.appendProfileWithDefault(mProfile, URLMetadataTable.CONTENT_URI);
+ uriWithProfile = DBUtils.appendProfileWithDefault(mProfile, URLImageDataTable.CONTENT_URI);
}
// A list of columns in the table. It's used to simplify some loops for reading/writing data.
private static final Set<String> COLUMNS;
static {
final HashSet<String> tempModel = new HashSet<>(4);
- tempModel.add(URLMetadataTable.URL_COLUMN);
- tempModel.add(URLMetadataTable.TILE_IMAGE_URL_COLUMN);
- tempModel.add(URLMetadataTable.TILE_COLOR_COLUMN);
- tempModel.add(URLMetadataTable.TOUCH_ICON_COLUMN);
+ tempModel.add(URLImageDataTable.URL_COLUMN);
+ tempModel.add(URLImageDataTable.TILE_IMAGE_URL_COLUMN);
+ tempModel.add(URLImageDataTable.TILE_COLOR_COLUMN);
+ tempModel.add(URLImageDataTable.TOUCH_ICON_COLUMN);
COLUMNS = Collections.unmodifiableSet(tempModel);
}
// Store a cache of recent results. This number is chosen to match the max number of tiles on about:home
private static final int CACHE_SIZE = 9;
// Note: Members of this cache are unmodifiable.
private final LruCache<String, Map<String, Object>> cache = new LruCache<String, Map<String, Object>>(CACHE_SIZE);
@@ -83,17 +83,17 @@ public class LocalURLMetadata implements
ArrayList<Integer> sizes = new ArrayList<Integer>(icons.length());
while (keys.hasNext()) {
sizes.add(new Integer(keys.next()));
}
final int bestSize = LoadFaviconResult.selectBestSizeFromList(sizes, preferredSize);
final String iconURL = icons.getString(Integer.toString(bestSize));
- data.put(URLMetadataTable.TOUCH_ICON_COLUMN, iconURL);
+ data.put(URLImageDataTable.TOUCH_ICON_COLUMN, iconURL);
}
} catch (JSONException e) {
Log.w(LOGTAG, "Exception processing touchIconList for LocalURLMetadata; ignoring.", e);
}
return Collections.unmodifiableMap(data);
}
@@ -164,39 +164,39 @@ public class LocalURLMetadata implements
}
}
// If everything was in the cache, we're done!
if (urlsToQuery.size() == 0) {
return Collections.unmodifiableMap(data);
}
- final String selection = DBUtils.computeSQLInClause(urlsToQuery.size(), URLMetadataTable.URL_COLUMN);
+ final String selection = DBUtils.computeSQLInClause(urlsToQuery.size(), URLImageDataTable.URL_COLUMN);
List<String> columns = requestedColumns;
// We need the url to build our final HashMap, so we force it to be included in the query.
- if (!columns.contains(URLMetadataTable.URL_COLUMN)) {
+ if (!columns.contains(URLImageDataTable.URL_COLUMN)) {
// The requestedColumns may be immutable (e.g. if the caller used Collections.singletonList), hence
// we have to create a copy.
columns = new ArrayList<String>(columns);
- columns.add(URLMetadataTable.URL_COLUMN);
+ columns.add(URLImageDataTable.URL_COLUMN);
}
final Cursor cursor = cr.query(uriWithProfile,
columns.toArray(new String[columns.size()]), // columns,
selection, // selection
urlsToQuery.toArray(new String[urlsToQuery.size()]), // selectionargs
null);
try {
if (!cursor.moveToFirst()) {
return Collections.unmodifiableMap(data);
}
do {
final Map<String, Object> metadata = fromCursor(cursor);
- final String url = cursor.getString(cursor.getColumnIndexOrThrow(URLMetadataTable.URL_COLUMN));
+ final String url = cursor.getString(cursor.getColumnIndexOrThrow(URLImageDataTable.URL_COLUMN));
data.put(url, metadata);
cache.put(url, metadata);
} while (cursor.moveToNext());
} finally {
cursor.close();
}
@@ -225,16 +225,16 @@ public class LocalURLMetadata implements
if (values.size() == 0) {
return;
}
Uri uri = uriWithProfile.buildUpon()
.appendQueryParameter(BrowserContract.PARAM_INSERT_IF_NEEDED, "true")
.build();
- cr.update(uri, values, URLMetadataTable.URL_COLUMN + "=?", new String[] {
- (String) data.get(URLMetadataTable.URL_COLUMN)
+ cr.update(uri, values, URLImageDataTable.URL_COLUMN + "=?", new String[] {
+ (String) data.get(URLImageDataTable.URL_COLUMN)
});
} catch (Exception ex) {
Log.e(LOGTAG, "error saving", ex);
}
}
}
rename from mobile/android/base/java/org/mozilla/gecko/db/URLMetadataTable.java
rename to mobile/android/base/java/org/mozilla/gecko/db/URLImageDataTable.java
--- a/mobile/android/base/java/org/mozilla/gecko/db/URLMetadataTable.java
+++ b/mobile/android/base/java/org/mozilla/gecko/db/URLImageDataTable.java
@@ -8,33 +8,33 @@ package org.mozilla.gecko.db;
import org.mozilla.gecko.db.BrowserContract.Bookmarks;
import org.mozilla.gecko.db.BrowserContract.History;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
// Holds metadata info about urls. Supports some helper functions for getting back a HashMap of key value data.
-public class URLMetadataTable extends BaseTable {
- private static final String LOGTAG = "GeckoURLMetadataTable";
+public class URLImageDataTable extends BaseTable {
+ private static final String LOGTAG = "GeckoURLImageDataTable";
private static final String TABLE = "metadata"; // Name of the table in the db
private static final int TABLE_ID_NUMBER = BrowserProvider.METADATA;
// Uri for querying this table
public static final Uri CONTENT_URI = Uri.withAppendedPath(BrowserContract.AUTHORITY_URI, "metadata");
// Columns in the table
public static final String ID_COLUMN = "id";
public static final String URL_COLUMN = "url";
public static final String TILE_IMAGE_URL_COLUMN = "tileImage";
public static final String TILE_COLOR_COLUMN = "tileColor";
public static final String TOUCH_ICON_COLUMN = "touchIcon";
- URLMetadataTable() { }
+ URLImageDataTable() { }
@Override
protected String getTable() {
return TABLE;
}
@Override
public void onCreate(SQLiteDatabase db) {
--- a/mobile/android/base/java/org/mozilla/gecko/home/TopSitesPanel.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/TopSitesPanel.java
@@ -1,17 +1,17 @@
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.home;
-import static org.mozilla.gecko.db.URLMetadataTable.TILE_COLOR_COLUMN;
-import static org.mozilla.gecko.db.URLMetadataTable.TILE_IMAGE_URL_COLUMN;
+import static org.mozilla.gecko.db.URLImageDataTable.TILE_COLOR_COLUMN;
+import static org.mozilla.gecko.db.URLImageDataTable.TILE_IMAGE_URL_COLUMN;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Future;
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -377,18 +377,18 @@ gbjar.sources += ['java/org/mozilla/geck
'db/SearchHistoryProvider.java',
'db/SharedBrowserDatabaseProvider.java',
'db/SQLiteBridgeContentProvider.java',
'db/SuggestedSites.java',
'db/Table.java',
'db/TabsAccessor.java',
'db/TabsProvider.java',
'db/UrlAnnotations.java',
+ 'db/URLImageDataTable.java',
'db/URLMetadata.java',
- 'db/URLMetadataTable.java',
'delegates/BookmarkStateChangeDelegate.java',
'delegates/BrowserAppDelegate.java',
'delegates/BrowserAppDelegateWithReference.java',
'delegates/OfflineTabStatusDelegate.java',
'delegates/ScreenshotDelegate.java',
'delegates/TabsTrayVisibilityAwareDelegate.java',
'DevToolsAuthHelper.java',
'distribution/Distribution.java',
--- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testBrowserProvider.java
+++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testBrowserProvider.java
@@ -11,17 +11,17 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import org.mozilla.gecko.db.BrowserContract;
import org.mozilla.gecko.db.BrowserContract.UrlAnnotations.SyncStatus;
import org.mozilla.gecko.db.BrowserDB;
import org.mozilla.gecko.db.URLMetadata;
-import org.mozilla.gecko.db.URLMetadataTable;
+import org.mozilla.gecko.db.URLImageDataTable;
import android.content.ContentProviderOperation;
import android.content.ContentProviderResult;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.OperationApplicationException;
import android.database.Cursor;
import android.net.Uri;
@@ -193,20 +193,20 @@ public class testBrowserProvider extends
thumbnailEntry.put(BrowserContract.Thumbnails.DATA, data.getBytes("UTF8"));
return thumbnailEntry;
}
private ContentValues createUrlMetadataEntry(final String url, final String tileImage, final String tileColor,
final String touchIcon) {
final ContentValues values = new ContentValues();
- values.put(URLMetadataTable.URL_COLUMN, url);
- values.put(URLMetadataTable.TILE_IMAGE_URL_COLUMN, tileImage);
- values.put(URLMetadataTable.TILE_COLOR_COLUMN, tileColor);
- values.put(URLMetadataTable.TOUCH_ICON_COLUMN, touchIcon);
+ values.put(URLImageDataTable.URL_COLUMN, url);
+ values.put(URLImageDataTable.TILE_IMAGE_URL_COLUMN, tileImage);
+ values.put(URLImageDataTable.TILE_COLOR_COLUMN, tileColor);
+ values.put(URLImageDataTable.TOUCH_ICON_COLUMN, touchIcon);
return values;
}
private ContentValues createUrlAnnotationEntry(final String url, final String key, final String value,
final long dateCreated) {
final ContentValues values = new ContentValues();
values.put(BrowserContract.UrlAnnotations.URL, url);
values.put(BrowserContract.UrlAnnotations.KEY, key);
@@ -256,18 +256,18 @@ public class testBrowserProvider extends
private Cursor getUrlAnnotationByUrl(final String url) throws Exception {
return mProvider.query(BrowserContract.UrlAnnotations.CONTENT_URI, null,
BrowserContract.UrlAnnotations.URL + " = ?",
new String[] { url },
null);
}
private Cursor getUrlMetadataByUrl(final String url) throws Exception {
- return mProvider.query(URLMetadataTable.CONTENT_URI, null,
- URLMetadataTable.URL_COLUMN + " = ?",
+ return mProvider.query(URLImageDataTable.CONTENT_URI, null,
+ URLImageDataTable.URL_COLUMN + " = ?",
new String[] { url },
null);
}
@Override
public void setUp() throws Exception {
super.setUp(sBrowserProviderCallable, BrowserContract.AUTHORITY, "browser.db");
@@ -1530,19 +1530,19 @@ public class testBrowserProvider extends
final String url2 = "http://hello.org";
private void testInsertionViaContentProvider() throws Exception {
final String tileImage = "http://mozilla.org/tileImage.png";
final String tileColor = "#FF0000";
final String touchIcon = "http://mozilla.org/touchIcon.png";
// We can only use update since the redirection machinery doesn't exist for insert
- mProvider.update(URLMetadataTable.CONTENT_URI.buildUpon().appendQueryParameter(BrowserContract.PARAM_INSERT_IF_NEEDED, "true").build(),
+ mProvider.update(URLImageDataTable.CONTENT_URI.buildUpon().appendQueryParameter(BrowserContract.PARAM_INSERT_IF_NEEDED, "true").build(),
createUrlMetadataEntry(url1, tileImage, tileColor, touchIcon),
- URLMetadataTable.URL_COLUMN + "=?",
+ URLImageDataTable.URL_COLUMN + "=?",
new String[] {url1}
);
final Cursor c = getUrlMetadataByUrl(url1);
try {
mAsserter.is(c.getCount(), 1, "URL metadata inserted via Content Provider not found");
} finally {
c.close();
@@ -1550,20 +1550,20 @@ public class testBrowserProvider extends
}
private void testInsertionViaUrlMetadata() throws Exception {
final String tileImage = "http://hello.org/tileImage.png";
final String tileColor = "#FF0000";
final String touchIcon = "http://hello.org/touchIcon.png";
final Map<String, Object> data = new HashMap<>();
- data.put(URLMetadataTable.URL_COLUMN, url2);
- data.put(URLMetadataTable.TILE_IMAGE_URL_COLUMN, tileImage);
- data.put(URLMetadataTable.TILE_COLOR_COLUMN, tileColor);
- data.put(URLMetadataTable.TOUCH_ICON_COLUMN, touchIcon);
+ data.put(URLImageDataTable.URL_COLUMN, url2);
+ data.put(URLImageDataTable.TILE_IMAGE_URL_COLUMN, tileImage);
+ data.put(URLImageDataTable.TILE_COLOR_COLUMN, tileColor);
+ data.put(URLImageDataTable.TOUCH_ICON_COLUMN, touchIcon);
BrowserDB.from(getTestProfile()).getURLMetadata().save(mResolver, data);
final Cursor c = getUrlMetadataByUrl(url2);
try {
mAsserter.is(c.moveToFirst(), true, "URL metadata inserted via UrlMetadata not found");
} finally {
c.close();
@@ -1581,53 +1581,53 @@ public class testBrowserProvider extends
URLMetadata metadata = BrowserDB.from(getTestProfile()).getURLMetadata();
Map<String, Map<String, Object>> results;
Map<String, Object> urlData;
// 1: retrieve just touch Icons for URL 1
results = metadata.getForURLs(mResolver,
Collections.singletonList(url1),
- Collections.singletonList(URLMetadataTable.TOUCH_ICON_COLUMN));
+ Collections.singletonList(URLImageDataTable.TOUCH_ICON_COLUMN));
mAsserter.is(results.containsKey(url1), true, "URL 1 not found in results");
urlData = results.get(url1);
- mAsserter.is(urlData.containsKey(URLMetadataTable.TOUCH_ICON_COLUMN), true, "touchIcon column missing in UrlMetadata results");
+ mAsserter.is(urlData.containsKey(URLImageDataTable.TOUCH_ICON_COLUMN), true, "touchIcon column missing in UrlMetadata results");
// 2: retrieve just tile color for URL 2
results = metadata.getForURLs(mResolver,
Collections.singletonList(url2),
- Collections.singletonList(URLMetadataTable.TILE_COLOR_COLUMN));
+ Collections.singletonList(URLImageDataTable.TILE_COLOR_COLUMN));
mAsserter.is(results.containsKey(url2), true, "URL 2 not found in results");
urlData = results.get(url2);
- mAsserter.is(urlData.containsKey(URLMetadataTable.TILE_COLOR_COLUMN), true, "touchIcon column missing in UrlMetadata results");
+ mAsserter.is(urlData.containsKey(URLImageDataTable.TILE_COLOR_COLUMN), true, "touchIcon column missing in UrlMetadata results");
// 3: retrieve all columns for both URLs
final List<String> urls = Arrays.asList(url1, url2);
results = metadata.getForURLs(mResolver,
urls,
- Arrays.asList(URLMetadataTable.TILE_IMAGE_URL_COLUMN,
- URLMetadataTable.TILE_COLOR_COLUMN,
- URLMetadataTable.TOUCH_ICON_COLUMN
+ Arrays.asList(URLImageDataTable.TILE_IMAGE_URL_COLUMN,
+ URLImageDataTable.TILE_COLOR_COLUMN,
+ URLImageDataTable.TOUCH_ICON_COLUMN
));
mAsserter.is(results.containsKey(url1), true, "URL 1 not found in results");
mAsserter.is(results.containsKey(url2), true, "URL 2 not found in results");
for (final String url : urls) {
urlData = results.get(url);
- mAsserter.is(urlData.containsKey(URLMetadataTable.TILE_IMAGE_URL_COLUMN), true, "touchIcon column missing in UrlMetadata results");
- mAsserter.is(urlData.containsKey(URLMetadataTable.TILE_COLOR_COLUMN), true, "touchIcon column missing in UrlMetadata results");
- mAsserter.is(urlData.containsKey(URLMetadataTable.TOUCH_ICON_COLUMN), true, "touchIcon column missing in UrlMetadata results");
+ mAsserter.is(urlData.containsKey(URLImageDataTable.TILE_IMAGE_URL_COLUMN), true, "touchIcon column missing in UrlMetadata results");
+ mAsserter.is(urlData.containsKey(URLImageDataTable.TILE_COLOR_COLUMN), true, "touchIcon column missing in UrlMetadata results");
+ mAsserter.is(urlData.containsKey(URLImageDataTable.TOUCH_ICON_COLUMN), true, "touchIcon column missing in UrlMetadata results");
}
}
}
private class TestCombinedView extends TestCase {
@Override
public void test() throws Exception {
final String TITLE_1 = "Test Page 1";