зеркало из https://github.com/mozilla/gecko-dev.git
Bug 715796 - Part 0: extract SQLiteOpenHelper cache from AndroidBrowserHistoryDataExtender. r=rnewman
This commit is contained in:
Родитель
a5440fcdfe
Коммит
2c33e6e563
|
@ -46,9 +46,8 @@ import android.content.ContentValues;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.database.sqlite.SQLiteOpenHelper;
|
|
||||||
|
|
||||||
public class AndroidBrowserHistoryDataExtender extends SQLiteOpenHelper {
|
public class AndroidBrowserHistoryDataExtender extends CachedSQLiteOpenHelper {
|
||||||
|
|
||||||
public static final String LOG_TAG = "SyncHistoryVisits";
|
public static final String LOG_TAG = "SyncHistoryVisits";
|
||||||
|
|
||||||
|
@ -77,44 +76,6 @@ public class AndroidBrowserHistoryDataExtender extends SQLiteOpenHelper {
|
||||||
db.execSQL(createTableSql);
|
db.execSQL(createTableSql);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cache these so we don't have to track them across cursors. Call `close`
|
|
||||||
// when you're done.
|
|
||||||
private static SQLiteDatabase readableDatabase;
|
|
||||||
private static SQLiteDatabase writableDatabase;
|
|
||||||
|
|
||||||
protected SQLiteDatabase getCachedReadableDatabase() {
|
|
||||||
if (AndroidBrowserHistoryDataExtender.readableDatabase == null) {
|
|
||||||
if (AndroidBrowserHistoryDataExtender.writableDatabase == null) {
|
|
||||||
AndroidBrowserHistoryDataExtender.readableDatabase = this.getReadableDatabase();
|
|
||||||
return AndroidBrowserHistoryDataExtender.readableDatabase;
|
|
||||||
} else {
|
|
||||||
return AndroidBrowserHistoryDataExtender.writableDatabase;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return AndroidBrowserHistoryDataExtender.readableDatabase;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected SQLiteDatabase getCachedWritableDatabase() {
|
|
||||||
if (AndroidBrowserHistoryDataExtender.writableDatabase == null) {
|
|
||||||
AndroidBrowserHistoryDataExtender.writableDatabase = this.getWritableDatabase();
|
|
||||||
}
|
|
||||||
return AndroidBrowserHistoryDataExtender.writableDatabase;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void close() {
|
|
||||||
if (AndroidBrowserHistoryDataExtender.readableDatabase != null) {
|
|
||||||
AndroidBrowserHistoryDataExtender.readableDatabase.close();
|
|
||||||
AndroidBrowserHistoryDataExtender.readableDatabase = null;
|
|
||||||
}
|
|
||||||
if (AndroidBrowserHistoryDataExtender.writableDatabase != null) {
|
|
||||||
AndroidBrowserHistoryDataExtender.writableDatabase.close();
|
|
||||||
AndroidBrowserHistoryDataExtender.writableDatabase = null;
|
|
||||||
}
|
|
||||||
super.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||||
// For now we'll just drop and recreate the tables.
|
// For now we'll just drop and recreate the tables.
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
/* 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.sync.repositories.android;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
|
import android.database.sqlite.SQLiteDatabase.CursorFactory;
|
||||||
|
import android.database.sqlite.SQLiteOpenHelper;
|
||||||
|
|
||||||
|
public abstract class CachedSQLiteOpenHelper extends SQLiteOpenHelper {
|
||||||
|
|
||||||
|
public CachedSQLiteOpenHelper(Context context, String name, CursorFactory factory,
|
||||||
|
int version) {
|
||||||
|
super(context, name, factory, version);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cache these so we don't have to track them across cursors. Call `close`
|
||||||
|
// when you're done.
|
||||||
|
private static SQLiteDatabase readableDatabase;
|
||||||
|
private static SQLiteDatabase writableDatabase;
|
||||||
|
|
||||||
|
synchronized protected SQLiteDatabase getCachedReadableDatabase() {
|
||||||
|
if (readableDatabase == null) {
|
||||||
|
if (writableDatabase == null) {
|
||||||
|
readableDatabase = this.getReadableDatabase();
|
||||||
|
return readableDatabase;
|
||||||
|
} else {
|
||||||
|
return writableDatabase;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return readableDatabase;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized protected SQLiteDatabase getCachedWritableDatabase() {
|
||||||
|
if (writableDatabase == null) {
|
||||||
|
writableDatabase = this.getWritableDatabase();
|
||||||
|
}
|
||||||
|
return writableDatabase;
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized public void close() {
|
||||||
|
if (readableDatabase != null) {
|
||||||
|
readableDatabase.close();
|
||||||
|
readableDatabase = null;
|
||||||
|
}
|
||||||
|
if (writableDatabase != null) {
|
||||||
|
writableDatabase.close();
|
||||||
|
writableDatabase = null;
|
||||||
|
}
|
||||||
|
super.close();
|
||||||
|
}
|
||||||
|
}
|
|
@ -154,7 +154,7 @@ public class SyncAuthenticatorService extends Service {
|
||||||
try {
|
try {
|
||||||
String username = KeyBundle.usernameFromAccount(account.name);
|
String username = KeyBundle.usernameFromAccount(account.name);
|
||||||
Logger.pii(LOG_TAG, "Account " + account.name + " hashes to " + username);
|
Logger.pii(LOG_TAG, "Account " + account.name + " hashes to " + username);
|
||||||
Logger.info(LOG_TAG, "Setting username. Null?" + (username == null));
|
Logger.info(LOG_TAG, "Setting username. Null? " + (username == null));
|
||||||
result.putString(Constants.OPTION_USERNAME, username);
|
result.putString(Constants.OPTION_USERNAME, username);
|
||||||
} catch (NoSuchAlgorithmException e) {
|
} catch (NoSuchAlgorithmException e) {
|
||||||
// Do nothing. Calling code must check for missing value.
|
// Do nothing. Calling code must check for missing value.
|
||||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Загрузка…
Ссылка в новой задаче