summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2016-03-15 15:30:11 -0700
committerSunny Goyal <sunnygoyal@google.com>2016-03-17 11:40:04 -0700
commitbf67f3b1847c435bbaf19600ec7babbb9d4c7674 (patch)
tree095aad7ea424684ab7562e1f80650b6251bc41d9
parent77b3e1a57ba0801c3def173c0f6c8089eb4591f7 (diff)
downloadandroid_packages_apps_Trebuchet-bf67f3b1847c435bbaf19600ec7babbb9d4c7674.tar.gz
android_packages_apps_Trebuchet-bf67f3b1847c435bbaf19600ec7babbb9d4c7674.tar.bz2
android_packages_apps_Trebuchet-bf67f3b1847c435bbaf19600ec7babbb9d4c7674.zip
Creating database without localized collators on NYC and above
Android automatically creates and maintains a metaData table to store the current device locale. This is used when fetching sorted results. Since Laucher does not require string based sorting on its tables, we can avoid unnecessary IO by disabling this feature Bug: 24608776 Change-Id: I8bbf5ca3abd505be95a85cfc99dd0438966575e9
-rw-r--r--src/com/android/launcher3/LauncherProvider.java6
-rw-r--r--src/com/android/launcher3/util/NoLocaleSqliteContext.java27
-rw-r--r--src/com/android/launcher3/util/SQLiteCacheHelper.java2
3 files changed, 32 insertions, 3 deletions
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java
index 792605fc9..47ceb8c6e 100644
--- a/src/com/android/launcher3/LauncherProvider.java
+++ b/src/com/android/launcher3/LauncherProvider.java
@@ -54,6 +54,7 @@ import com.android.launcher3.compat.UserHandleCompat;
import com.android.launcher3.compat.UserManagerCompat;
import com.android.launcher3.config.ProviderConfig;
import com.android.launcher3.util.ManagedProfileHeuristic;
+import com.android.launcher3.util.NoLocaleSqliteContext;
import com.android.launcher3.util.Thunk;
import java.net.URISyntaxException;
@@ -526,7 +527,8 @@ public class LauncherProvider extends ContentProvider {
private long mMaxScreenId = -1;
DatabaseHelper(Context context, LauncherProvider provider) {
- super(context, LauncherFiles.LAUNCHER_DB, null, DATABASE_VERSION);
+ super(new NoLocaleSqliteContext(context), LauncherFiles.LAUNCHER_DB,
+ null, DATABASE_VERSION);
mContext = context;
mProvider = provider;
@@ -556,7 +558,7 @@ public class LauncherProvider extends ContentProvider {
* Constructor used only in tests.
*/
public DatabaseHelper(Context context, LauncherProvider provider, String tableName) {
- super(context, tableName, null, DATABASE_VERSION);
+ super(new NoLocaleSqliteContext(context), tableName, null, DATABASE_VERSION);
mContext = context;
mProvider = provider;
diff --git a/src/com/android/launcher3/util/NoLocaleSqliteContext.java b/src/com/android/launcher3/util/NoLocaleSqliteContext.java
new file mode 100644
index 000000000..3b258e4a5
--- /dev/null
+++ b/src/com/android/launcher3/util/NoLocaleSqliteContext.java
@@ -0,0 +1,27 @@
+package com.android.launcher3.util;
+
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.database.DatabaseErrorHandler;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteDatabase.CursorFactory;
+
+/**
+ * A context wrapper which creates databases without support for localized collators.
+ */
+public class NoLocaleSqliteContext extends ContextWrapper {
+
+ // TODO: Use the flag defined in Context when the new SDK is available
+ private static final int MODE_NO_LOCALIZED_COLLATORS = 0x0010;
+
+ public NoLocaleSqliteContext(Context context) {
+ super(context);
+ }
+
+ @Override
+ public SQLiteDatabase openOrCreateDatabase(
+ String name, int mode, CursorFactory factory, DatabaseErrorHandler errorHandler) {
+ return super.openOrCreateDatabase(
+ name, mode | MODE_NO_LOCALIZED_COLLATORS, factory, errorHandler);
+ }
+}
diff --git a/src/com/android/launcher3/util/SQLiteCacheHelper.java b/src/com/android/launcher3/util/SQLiteCacheHelper.java
index 62a30d0d4..c455791b3 100644
--- a/src/com/android/launcher3/util/SQLiteCacheHelper.java
+++ b/src/com/android/launcher3/util/SQLiteCacheHelper.java
@@ -98,7 +98,7 @@ public abstract class SQLiteCacheHelper {
private class MySQLiteOpenHelper extends SQLiteOpenHelper {
public MySQLiteOpenHelper(Context context, String name, int version) {
- super(context, name, null, version);
+ super(new NoLocaleSqliteContext(context), name, null, version);
}
@Override