DatabaseHelper.java revision 91beb94c65716f78a120cff93e3bb78a190500b4
1d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala/* 2d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * Copyright (C) 2007 The Android Open Source Project 3d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * 4d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 5d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * you may not use this file except in compliance with the License. 6d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * You may obtain a copy of the License at 7d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * 8d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 9d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * 10d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 11d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 12d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * See the License for the specific language governing permissions and 14d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * limitations under the License. 15d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala */ 16d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 17d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalapackage com.android.providers.settings; 18d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 19d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaimport android.content.ComponentName; 20d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaimport android.content.ContentValues; 21d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaimport android.content.Context; 22623ff65afea34612498dcf33887ffaf8b194c281Eino-Ville Talvalaimport android.content.Intent; 23623ff65afea34612498dcf33887ffaf8b194c281Eino-Ville Talvalaimport android.content.pm.ActivityInfo; 24623ff65afea34612498dcf33887ffaf8b194c281Eino-Ville Talvalaimport android.content.pm.IPackageManager; 25d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaimport android.content.pm.PackageManager; 26d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaimport android.content.res.XmlResourceParser; 2708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.database.Cursor; 2808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.database.sqlite.SQLiteDatabase; 2908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.database.sqlite.SQLiteOpenHelper; 3008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.database.sqlite.SQLiteStatement; 3108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.media.AudioManager; 3208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.media.AudioService; 33d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvalaimport android.net.ConnectivityManager; 3408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.os.Environment; 3508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.os.RemoteException; 3608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.os.ServiceManager; 3708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.os.SystemProperties; 3808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.os.UserHandle; 3908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.provider.Settings; 4008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.provider.Settings.Global; 4108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.provider.Settings.Secure; 4208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.text.TextUtils; 4308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport android.util.Log; 4408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 4508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport com.android.internal.content.PackageHelper; 4608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport com.android.internal.telephony.RILConstants; 4708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; 4808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport com.android.internal.util.XmlUtils; 4908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport com.android.internal.widget.LockPatternUtils; 5008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport com.android.internal.widget.LockPatternView; 5108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 5208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport org.xmlpull.v1.XmlPullParser; 5308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport org.xmlpull.v1.XmlPullParserException; 5408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 5508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinimport java.io.File; 56c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkinimport java.io.IOException; 5738b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkinimport java.util.HashSet; 5869fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun Heimport java.util.List; 59d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 60d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala/** 61d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * Database helper class for {@link SettingsProvider}. 6208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Mostly just has a bit {@link #onCreate} to initialize the database. 6308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 6408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkinpublic class DatabaseHelper extends SQLiteOpenHelper { 6508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private static final String TAG = "SettingsProvider"; 6608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private static final String DATABASE_NAME = "settings.db"; 6708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 6808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Please, please please. If you update the database version, check to make sure the 6908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion' 7008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // is properly propagated through your change. Not doing so will result in a loss of user 7108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // settings. 7208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private static final int DATABASE_VERSION = 98; 7308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 7408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private Context mContext; 7508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private int mUserHandle; 7608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 7708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private static final HashSet<String> mValidTables = new HashSet<String>(); 7808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 7908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private static final String TABLE_SYSTEM = "system"; 8008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private static final String TABLE_SECURE = "secure"; 8108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private static final String TABLE_GLOBAL = "global"; 8208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 8308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin static { 8408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin mValidTables.add(TABLE_SYSTEM); 8508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin mValidTables.add(TABLE_SECURE); 8608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin mValidTables.add(TABLE_GLOBAL); 8708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin mValidTables.add("bluetooth_devices"); 8808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin mValidTables.add("bookmarks"); 8908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 9008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // These are old. 9108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin mValidTables.add("favorites"); 9208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin mValidTables.add("gservices"); 9308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin mValidTables.add("old_favorites"); 9408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 9508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 9608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin static String dbNameForUser(final int userHandle) { 9708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // The owner gets the unadorned db name; 9808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (userHandle == UserHandle.USER_OWNER) { 9908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin return DATABASE_NAME; 10008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } else { 10108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Place the database in the user-specific data tree so that it's 10208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // cleaned up automatically when the user is deleted. 10308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin File databaseFile = new File( 10408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Environment.getUserSystemDirectory(userHandle), DATABASE_NAME); 10508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin return databaseFile.getPath(); 106c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin } 107c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin } 10838b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin 10938b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin public DatabaseHelper(Context context, int userHandle) { 11069fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He super(context, dbNameForUser(userHandle), null, DATABASE_VERSION); 11169fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He mContext = context; 112d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala mUserHandle = userHandle; 113d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 11408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 11508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin public static boolean isValidTable(String name) { 11608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin return mValidTables.contains(name); 11708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 11808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 11969fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He private void createSecureTable(SQLiteDatabase db) { 12069fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He db.execSQL("CREATE TABLE secure (" + 12169fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He "_id INTEGER PRIMARY KEY AUTOINCREMENT," + 12269fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He "name TEXT UNIQUE ON CONFLICT REPLACE," + 123d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala "value TEXT" + 124d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala ");"); 12508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("CREATE INDEX secureIndex1 ON secure (name);"); 12608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 12708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 12808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private void createGlobalTable(SQLiteDatabase db) { 12908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("CREATE TABLE global (" + 13008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "_id INTEGER PRIMARY KEY AUTOINCREMENT," + 13108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "name TEXT UNIQUE ON CONFLICT REPLACE," + 13208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "value TEXT" + 13308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ");"); 13408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("CREATE INDEX globalIndex1 ON global (name);"); 13508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 13608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 13708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin @Override 13808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin public void onCreate(SQLiteDatabase db) { 1393b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala db.execSQL("CREATE TABLE system (" + 1403b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala "_id INTEGER PRIMARY KEY AUTOINCREMENT," + 14108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "name TEXT UNIQUE ON CONFLICT REPLACE," + 14208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "value TEXT" + 14308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ");"); 14408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("CREATE INDEX systemIndex1 ON system (name);"); 1453b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala 1463b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala createSecureTable(db); 14708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 14808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Only create the global table for the singleton 'owner' user 14908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 15008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin createGlobalTable(db); 15108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 15208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 15308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("CREATE TABLE bluetooth_devices (" + 15408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "_id INTEGER PRIMARY KEY," + 15508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "name TEXT," + 15608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "addr TEXT," + 15708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "channel INTEGER," + 15808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "type INTEGER" + 15908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ");"); 16008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 16108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("CREATE TABLE bookmarks (" + 16208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "_id INTEGER PRIMARY KEY," + 16308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "title TEXT," + 16408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "folder TEXT," + 16508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "intent TEXT," + 16608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "shortcut INTEGER," + 16708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "ordering INTEGER" + 16808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ");"); 16908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 17008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("CREATE INDEX bookmarksIndex1 ON bookmarks (folder);"); 17108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("CREATE INDEX bookmarksIndex2 ON bookmarks (shortcut);"); 17208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 17308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Populate bookmarks table with initial bookmarks 17408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin boolean onlyCore = false; 17508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 17608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin onlyCore = IPackageManager.Stub.asInterface(ServiceManager.getService( 17708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "package")).isOnlyCoreApps(); 17808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } catch (RemoteException e) { 17908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 18008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (!onlyCore) { 18108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBookmarks(db); 18208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 18308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 18408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Load initial volume levels into DB 18508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadVolumeLevels(db); 18608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 18708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Load inital settings values 18808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadSettings(db); 18908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 19008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 19108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin @Override 19208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) { 19308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Log.w(TAG, "Upgrading settings database from version " + oldVersion + " to " 19408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + currentVersion); 19508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 19608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin int upgradeVersion = oldVersion; 19708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 19808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Pattern for upgrade blocks: 199d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // 200d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // if (upgradeVersion == [the DATABASE_VERSION you set] - 1) { 20108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // .. your upgrade logic.. 20208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // upgradeVersion = [the DATABASE_VERSION you set] 20308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // } 20408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 205d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala if (upgradeVersion == 20) { 206d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala /* 20708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Version 21 is part of the volume control refresh. There is no 20808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * longer a UI-visible for setting notification vibrate on/off (in 20908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * our design), but the functionality still exists. Force the 21008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * notification vibrate to on. 21108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 21208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadVibrateSetting(db, true); 213d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 214d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala upgradeVersion = 21; 21508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 216d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 21708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion < 22) { 21808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 22; 21908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Upgrade the lock gesture storage location and format 22008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeLockPatternLocation(db); 22108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 22208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 22308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion < 23) { 22408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("UPDATE favorites SET iconResource=0 WHERE iconType=0"); 22508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 23; 22608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 22708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 22808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 23) { 229d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala db.beginTransaction(); 230d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala try { 23108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("ALTER TABLE favorites ADD spanX INTEGER"); 232d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala db.execSQL("ALTER TABLE favorites ADD spanY INTEGER"); 23308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Shortcuts, applications, folders 23408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("UPDATE favorites SET spanX=1, spanY=1 WHERE itemType<=0"); 23508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Photo frames, clocks 23608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL( 237d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala "UPDATE favorites SET spanX=2, spanY=2 WHERE itemType=1000 or itemType=1002"); 238d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // Search boxes 23908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("UPDATE favorites SET spanX=4, spanY=1 WHERE itemType=1001"); 24008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 24108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 24208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 24308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 24408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 24; 245d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 246d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 24708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 24) { 24808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 24908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 25008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // The value of the constants for preferring wifi or preferring mobile have been 251d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // swapped, so reload the default. 252d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala db.execSQL("DELETE FROM system WHERE name='network_preference'"); 25308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT INTO system ('name', 'value') values ('network_preference', '" + 25408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ConnectivityManager.DEFAULT_NETWORK_PREFERENCE + "')"); 25508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 25608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 257d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala db.endTransaction(); 258d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 25908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 25; 26008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 26108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 26208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 25) { 26308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 26408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 26508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("ALTER TABLE favorites ADD uri TEXT"); 26608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("ALTER TABLE favorites ADD displayMode INTEGER"); 26708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 26808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 26908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 27008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 27108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 26; 27208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 27308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 27408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 26) { 27508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // This introduces the new secure settings table. 27608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 27708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 27808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin createSecureTable(db); 27908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 28008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 281d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala db.endTransaction(); 282d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 28308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 27; 28408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 28508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 28608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 27) { 28708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] settingsToMove = { 28808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.ADB_ENABLED, 28908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.ANDROID_ID, 29008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.BLUETOOTH_ON, 29108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.DATA_ROAMING, 29208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.DEVICE_PROVISIONED, 29308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.HTTP_PROXY, 29408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.INSTALL_NON_MARKET_APPS, 29508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.LOCATION_PROVIDERS_ALLOWED, 29608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.LOGGING_ID, 29708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.NETWORK_PREFERENCE, 29808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.PARENTAL_CONTROL_ENABLED, 29908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.PARENTAL_CONTROL_LAST_UPDATE, 30008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.PARENTAL_CONTROL_REDIRECT_URL, 30108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.SETTINGS_CLASSNAME, 30208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.USB_MASS_STORAGE_ENABLED, 30308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.USE_GOOGLE_MAIL, 30408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 305d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala Settings.Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, 306d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala Settings.Secure.WIFI_NUM_OPEN_NETWORKS_KEPT, 30708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_ON, 30808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE, 30908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_AP_COUNT, 31008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS, 31108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED, 31208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS, 31308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT, 31408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_MAX_AP_CHECKS, 31508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_ON, 31608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_PING_COUNT, 31708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_PING_DELAY_MS, 31808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS, 31908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin }; 32008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, settingsToMove, false); 32108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 28; 32208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 32308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 32408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 28 || upgradeVersion == 29) { 32508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Note: The upgrade to 28 was flawed since it didn't delete the old 32608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // setting first before inserting. Combining 28 and 29 with the 327d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala // fixed version. 328d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 32908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // This upgrade adds the STREAM_NOTIFICATION type to the list of 33008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // types affected by ringer modes (silent, vibrate, etc.) 33108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 33208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 33308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 33408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 335d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala int newValue = (1 << AudioManager.STREAM_RING) 336d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala | (1 << AudioManager.STREAM_NOTIFICATION) 33708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin | (1 << AudioManager.STREAM_SYSTEM); 33808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT INTO system ('name', 'value') values ('" 33908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 34008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + String.valueOf(newValue) + "')"); 34108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 34208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 34308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 34408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 34582ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala 34682ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala upgradeVersion = 30; 34782ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala } 34882ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala 349d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala if (upgradeVersion == 30) { 350d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala /* 35108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Upgrade 31 clears the title for all quick launch shortcuts so the 35208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * activities' titles will be resolved at display time. Also, the 35308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * folder is changed to '@quicklaunch'. 35408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 35508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 35608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 35708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("UPDATE bookmarks SET folder = '@quicklaunch'"); 358e36cdbe76abf3798a148cb11a90bd78abb50af65Zhijun He db.execSQL("UPDATE bookmarks SET title = ''"); 35908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 36008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 36108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 362e36cdbe76abf3798a148cb11a90bd78abb50af65Zhijun He } 36308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 31; 36408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 36508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 36608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 31) { 36708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* 36808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Animations are now managed in preferences, and may be 369d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * enabled or disabled based on product resources. 370d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala */ 37108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 372d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala SQLiteStatement stmt = null; 37308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 37408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 37508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.WINDOW_ANIMATION_SCALE + "'"); 37608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 37708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.TRANSITION_ANIMATION_SCALE + "'"); 37808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO system(name,value)" 37908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 38008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadDefaultAnimationSettings(stmt); 38108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 382f11a4df09db89ee9094390ecdb6b786578b041a5Igor Murashkin } finally { 38308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 38408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 38508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 38608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 32; 38708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 38808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 38908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 32) { 39008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // The Wi-Fi watchdog SSID list is now seeded with the value of 39108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // the property ro.com.android.wifi-watchlist 392d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist"); 393d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala if (!TextUtils.isEmpty(wifiWatchList)) { 39408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 39508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 39608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT OR IGNORE INTO secure(name,value) values('" + 39708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.WIFI_WATCHDOG_WATCH_LIST + "','" + 39808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin wifiWatchList + "');"); 39908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 40008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 40108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 40208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 40308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 40408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 33; 40508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 40608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 40708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 33) { 40808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Set the default zoom controls to: tap-twice to bring up +/- 40908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 41008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 41108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT INTO system(name,value) values('zoom','2');"); 41208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 41308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 41408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 41508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 41608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 34; 41708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 41808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 41908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 34) { 42008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 42108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 42208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 42308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 42408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 42508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadSecure35Settings(stmt); 42608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 42708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 42808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 42908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 43008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 43108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 35; 43208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 43308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // due to a botched merge from donut to eclair, the initialization of ASSISTED_GPS_ENABLED 43408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // was accidentally done out of order here. 43508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // to fix this, ASSISTED_GPS_ENABLED is now initialized while upgrading from 38 to 39, 43608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // and we intentionally do nothing from 35 to 36 now. 437656aa5a8e265151bebc760a849766395f422e6baIgor Murashkin if (upgradeVersion == 35) { 438656aa5a8e265151bebc760a849766395f422e6baIgor Murashkin upgradeVersion = 36; 439d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 440d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 44108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 36) { 44208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // This upgrade adds the STREAM_SYSTEM_ENFORCED type to the list of 44308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // types affected by ringer modes (silent, vibrate, etc.) 44408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 44569fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He try { 44669fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He db.execSQL("DELETE FROM system WHERE name='" 44708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 44808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin int newValue = (1 << AudioManager.STREAM_RING) 44908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin | (1 << AudioManager.STREAM_NOTIFICATION) 45008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin | (1 << AudioManager.STREAM_SYSTEM) 45108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin | (1 << AudioManager.STREAM_SYSTEM_ENFORCED); 45208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT INTO system ('name', 'value') values ('" 45308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 45408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + String.valueOf(newValue) + "')"); 45508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 45608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 45708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 45808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 459d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala upgradeVersion = 37; 460d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala } 46108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 46208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 37) { 46308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 46408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 46508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 46608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 467d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala + " VALUES(?,?);"); 468d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS, 46908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.string.airplane_mode_toggleable_radios); 47008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 47108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 47208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 47308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 47408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 47508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 38; 47608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 47708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 47808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 38) { 47908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 48008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 48108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String value = 48208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin mContext.getResources().getBoolean(R.bool.assisted_gps_enabled) ? "1" : "0"; 48308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT OR IGNORE INTO secure(name,value) values('" + 48408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.ASSISTED_GPS_ENABLED + "','" + value + "');"); 48508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 48608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 48708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 48808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 48969fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He 49069fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He upgradeVersion = 39; 49169fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He } 49269fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He 49369fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He if (upgradeVersion == 39) { 49469fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He upgradeAutoBrightness(db); 49569fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He upgradeVersion = 40; 49669fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He } 49769fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He 49869fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He if (upgradeVersion == 40) { 49969fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He /* 500623ff65afea34612498dcf33887ffaf8b194c281Eino-Ville Talvala * All animations are now turned on by default! 501623ff65afea34612498dcf33887ffaf8b194c281Eino-Ville Talvala */ 50208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 50308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 50408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 50508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 50608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.WINDOW_ANIMATION_SCALE + "'"); 50708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 50808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.TRANSITION_ANIMATION_SCALE + "'"); 50908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO system(name,value)" 51008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 51108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadDefaultAnimationSettings(stmt); 51208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 51308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 51408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 51508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 51694879bd88f7ac3f2f678221497b8ad50c0bb3314Eino-Ville Talvala } 51794879bd88f7ac3f2f678221497b8ad50c0bb3314Eino-Ville Talvala upgradeVersion = 41; 51808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 51908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 52008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 41) { 52176548fe3842cf21fd424435c5e31210f39541b1aEino-Ville Talvala /* 52208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Initialize newly public haptic feedback setting 52376548fe3842cf21fd424435c5e31210f39541b1aEino-Ville Talvala */ 52408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 52508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 52608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 52708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 52808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.HAPTIC_FEEDBACK_ENABLED + "'"); 52908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO system(name,value)" 530623ff65afea34612498dcf33887ffaf8b194c281Eino-Ville Talvala + " VALUES(?,?);"); 531623ff65afea34612498dcf33887ffaf8b194c281Eino-Ville Talvala loadDefaultHapticSettings(stmt); 532c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin db.setTransactionSuccessful(); 533c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin } finally { 534c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin db.endTransaction(); 535c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin if (stmt != null) stmt.close(); 536c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin } 537c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin upgradeVersion = 42; 538c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin } 539c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin 54038b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin if (upgradeVersion == 42) { 54138b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin /* 54238b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin * Initialize new notification pulse setting 54338b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin */ 54438b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin db.beginTransaction(); 54538b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin SQLiteStatement stmt = null; 54669fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He try { 54769fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He stmt = db.compileStatement("INSERT INTO system(name,value)" 54869fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He + " VALUES(?,?);"); 54969fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, 55069fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He R.bool.def_notification_pulse); 55169fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He db.setTransactionSuccessful(); 552623ff65afea34612498dcf33887ffaf8b194c281Eino-Ville Talvala } finally { 553d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala db.endTransaction(); 55408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 55508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 55608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 43; 55708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 558d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala 559d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala if (upgradeVersion == 43) { 56008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* 561d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala * This upgrade stores bluetooth volume separately from voice volume 562d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala */ 56308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 56408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 56508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 56608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 56708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 56808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadSetting(stmt, Settings.System.VOLUME_BLUETOOTH_SCO, 56908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]); 57008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 57108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 572d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala db.endTransaction(); 57308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 57408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 575d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala upgradeVersion = 44; 576c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin } 57738b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin 57869fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He if (upgradeVersion == 44) { 579d8afb4d1a4245b2a9d722cbb358a4d6febed89cfEino-Ville Talvala /* 58008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Gservices was moved into vendor/google. 58108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 58208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP TABLE IF EXISTS gservices"); 58308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP INDEX IF EXISTS gservicesIndex1"); 58408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 45; 58508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 58608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 58708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 45) { 58808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* 58908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * New settings for MountService 59008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 59108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 59208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 59308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT INTO secure(name,value) values('" + 59408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND + "','1');"); 59508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT INTO secure(name,value) values('" + 59608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.MOUNT_UMS_AUTOSTART + "','0');"); 59708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT INTO secure(name,value) values('" + 59808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.MOUNT_UMS_PROMPT + "','1');"); 59908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT INTO secure(name,value) values('" + 60008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED + "','1');"); 60108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 60208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 60308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 60408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 60508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 46; 60608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 60708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 60808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 46) { 60908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* 61008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * The password mode constants have changed; reset back to no 61169fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He * password. 61269fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He */ 61369fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He db.beginTransaction(); 61408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 61508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';"); 61608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 61708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 61808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 61908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 62008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 47; 62108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 62208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 62308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 62408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 47) { 62508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* 62608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * The password mode constants have changed again; reset back to no 62708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * password. 62808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 62908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 63008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 63108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';"); 63208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 63308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 63408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 63508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 63608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 48; 63708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 63808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 63908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 48) { 64008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* 64108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Default recognition service no longer initialized here, 64208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * moved to RecognitionManagerService. 64308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 64408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 49; 64508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 64608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 64776548fe3842cf21fd424435c5e31210f39541b1aEino-Ville Talvala if (upgradeVersion == 49) { 64876548fe3842cf21fd424435c5e31210f39541b1aEino-Ville Talvala /* 64976548fe3842cf21fd424435c5e31210f39541b1aEino-Ville Talvala * New settings for new user interface noises. 65076548fe3842cf21fd424435c5e31210f39541b1aEino-Ville Talvala */ 65108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 65208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 65308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 65408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO system(name,value)" 65508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 65608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadUISoundEffectsSettings(stmt); 65708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 65808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 65908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 66008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 66108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 66208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 66308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 50; 66408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 66508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 66608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 50) { 66708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* 66808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Install location no longer initiated here. 66908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 67008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 51; 67108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 67208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 67308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 51) { 67408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* Move the lockscreen related settings to Secure, including some private ones. */ 67508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] settingsToMove = { 67608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Secure.LOCK_PATTERN_ENABLED, 67708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Secure.LOCK_PATTERN_VISIBLE, 67808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED, 67908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "lockscreen.password_type", 68008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "lockscreen.lockoutattemptdeadline", 68108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "lockscreen.patterneverchosen", 68208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "lock_pattern_autolock", 68308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "lockscreen.lockedoutpermanently", 68408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "lockscreen.password_salt" 68508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin }; 68608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, settingsToMove, false); 68708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 52; 68808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 6893b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala 6903b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala if (upgradeVersion == 52) { 6913b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala // new vibration/silent mode settings 6923b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala db.beginTransaction(); 6933b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala SQLiteStatement stmt = null; 6943b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala try { 6953b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala stmt = db.compileStatement("INSERT INTO system(name,value)" 6963b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala + " VALUES(?,?);"); 6973b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT, 6983b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala R.bool.def_vibrate_in_silent); 6993b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala db.setTransactionSuccessful(); 7003b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala } finally { 7013b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala db.endTransaction(); 7023b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala if (stmt != null) stmt.close(); 7033b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala } 70408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 70508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 53; 70608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 70708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 70808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 53) { 70908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* 71008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * New settings for set install location UI no longer initiated here. 71108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 71208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 54; 71308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 71408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 71508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 54) { 71608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* 71708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Update the screen timeout value if set to never 71808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 71908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 72008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 72108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeScreenTimeoutFromNever(db); 72208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 72308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 72408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 72508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 72608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 72708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 55; 72808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 72908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 73008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 55) { 73108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* Move the install location settings. */ 73208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] settingsToMove = { 73308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Global.SET_INSTALL_LOCATION, 73408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Global.DEFAULT_INSTALL_LOCATION 73508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin }; 73608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, settingsToMove, false); 73708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 7383b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala SQLiteStatement stmt = null; 7393b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala try { 7403b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala stmt = db.compileStatement("INSERT INTO system(name,value)" 7413b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala + " VALUES(?,?);"); 7423b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala loadSetting(stmt, Global.SET_INSTALL_LOCATION, 0); 7433b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala loadSetting(stmt, Global.DEFAULT_INSTALL_LOCATION, 7443b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala PackageHelper.APP_INSTALL_AUTO); 7453b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala db.setTransactionSuccessful(); 7463b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala } finally { 7473b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala db.endTransaction(); 7483b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala if (stmt != null) stmt.close(); 7493b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala } 7503b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala upgradeVersion = 56; 7513b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala } 7523b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala 7533b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala if (upgradeVersion == 56) { 7543b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala /* 7553b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala * Add Bluetooth to list of toggleable radios in airplane mode 7563b4383ae1c6491f088a6752c71d1d57115941b96Eino-Ville Talvala */ 75708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 75808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 75908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 76008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 76108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS + "'"); 76208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 76376548fe3842cf21fd424435c5e31210f39541b1aEino-Ville Talvala + " VALUES(?,?);"); 76476548fe3842cf21fd424435c5e31210f39541b1aEino-Ville Talvala loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS, 76576548fe3842cf21fd424435c5e31210f39541b1aEino-Ville Talvala R.string.airplane_mode_toggleable_radios); 76676548fe3842cf21fd424435c5e31210f39541b1aEino-Ville Talvala db.setTransactionSuccessful(); 76708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 76808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 76908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 77008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 77108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 57; 77208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 77308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 77408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /************* The following are Honeycomb changes ************/ 77508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 77608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 57) { 77708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* 77808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * New settings to: 77908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * 1. Enable injection of accessibility scripts in WebViews. 78008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * 2. Define the key bindings for traversing web content in WebViews. 78108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 78208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 78308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 78408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 78508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO secure(name,value)" 78608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 78708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 78808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.bool.def_accessibility_script_injection); 78908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt.close(); 79008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO secure(name,value)" 79108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 79208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS, 79308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.string.def_accessibility_web_content_key_bindings); 79408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 79508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 79608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 79708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 79808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 79908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 58; 80008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 80108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 80208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 58) { 80308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* Add default for new Auto Time Zone */ 80408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin int autoTimeValue = getIntValueFromSystem(db, Settings.System.AUTO_TIME, 0); 80508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 80608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 80708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 80808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);"); 80908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadSetting(stmt, Settings.System.AUTO_TIME_ZONE, 81008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin autoTimeValue); // Sync timezone to NITZ if auto_time was enabled 81108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 81208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 81308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 81408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 81508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 81608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 59; 81708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 81808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 81908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 59) { 82008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Persistence for the rotation lock feature. 82108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 82208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 82308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 82408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO system(name,value)" 82508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 82608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.System.USER_ROTATION, 82708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.integer.def_user_rotation); // should be zero degrees 82808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 82908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 83008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 83108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 83208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 83308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 60; 83408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 83508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 83608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 60) { 83708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Don't do this for upgrades from Gingerbread 83808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Were only required for intra-Honeycomb upgrades for testing 83908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // upgradeScreenTimeout(db); 84008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 61; 84108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 84208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 84308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 61) { 84408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Don't do this for upgrades from Gingerbread 84508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Were only required for intra-Honeycomb upgrades for testing 84608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // upgradeScreenTimeout(db); 84708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 62; 84808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 84908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 85008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Change the default for screen auto-brightness mode 85108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 62) { 85208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Don't do this for upgrades from Gingerbread 85308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Were only required for intra-Honeycomb upgrades for testing 85408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // upgradeAutoBrightness(db); 85508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 63; 85608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 85708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 85808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 63) { 85908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // This upgrade adds the STREAM_MUSIC type to the list of 86008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // types affected by ringer modes (silent, vibrate, etc.) 86108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 86208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 86308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 86408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 86508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin int newValue = (1 << AudioManager.STREAM_RING) 86608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin | (1 << AudioManager.STREAM_NOTIFICATION) 86708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin | (1 << AudioManager.STREAM_SYSTEM) 86808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin | (1 << AudioManager.STREAM_SYSTEM_ENFORCED) 86908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin | (1 << AudioManager.STREAM_MUSIC); 87008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT INTO system ('name', 'value') values ('" 87108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 87208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + String.valueOf(newValue) + "')"); 87308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 87408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 87508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 87608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 87708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 64; 87808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 87908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 88008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 64) { 88108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // New setting to configure the long press timeout. 88208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 88308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 88408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 88508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO secure(name,value)" 88608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 88708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadIntegerSetting(stmt, Settings.Secure.LONG_PRESS_TIMEOUT, 88808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.integer.def_long_press_timeout_millis); 88908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt.close(); 89008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 89108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 89208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 89308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 89408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 89508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 65; 89608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 89708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 89808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /************* The following are Ice Cream Sandwich changes ************/ 89908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 90008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 65) { 90108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /* 90208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Animations are removed from Settings. Turned on by default 90308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 90408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 90508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 90608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 90708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 90808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.WINDOW_ANIMATION_SCALE + "'"); 90908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 91008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.TRANSITION_ANIMATION_SCALE + "'"); 91108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO system(name,value)" 91208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 91308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadDefaultAnimationSettings(stmt); 91408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 91508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 91608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 91708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 91808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 91908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 66; 92008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 92108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 92208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 66) { 92308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // This upgrade makes sure that MODE_RINGER_STREAMS_AFFECTED is set 92408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // according to device voice capability 92508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 92608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 92708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin int ringerModeAffectedStreams = (1 << AudioManager.STREAM_RING) | 92808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin (1 << AudioManager.STREAM_NOTIFICATION) | 92908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin (1 << AudioManager.STREAM_SYSTEM) | 93008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin (1 << AudioManager.STREAM_SYSTEM_ENFORCED); 93108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (!mContext.getResources().getBoolean( 93208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin com.android.internal.R.bool.config_voice_capable)) { 93308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ringerModeAffectedStreams |= (1 << AudioManager.STREAM_MUSIC); 93408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 93508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 93608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 93708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT INTO system ('name', 'value') values ('" 93808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 93908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + String.valueOf(ringerModeAffectedStreams) + "')"); 94008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 94108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 94208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 94308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 94408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 67; 94508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 94608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 94708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 67) { 94808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // New setting to enable touch exploration. 94908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 95008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 95108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 95208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO secure(name,value)" 95308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 95408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 95508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.bool.def_touch_exploration_enabled); 95608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt.close(); 95708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 95808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 95908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 96008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 96108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 96208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 68; 96308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 96408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 96508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 68) { 96608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Enable all system sounds by default 96708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 96808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 96908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 97008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.NOTIFICATIONS_USE_RING_VOLUME + "'"); 97108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 97208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 97308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 97408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 97508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 69; 97608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 97708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 97808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 69) { 97908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Add RADIO_NFC to AIRPLANE_MODE_RADIO and AIRPLANE_MODE_TOGGLEABLE_RADIOS 98008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String airplaneRadios = mContext.getResources().getString( 98108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.string.def_airplane_mode_radios); 98208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String toggleableRadios = mContext.getResources().getString( 98308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.string.airplane_mode_toggleable_radios); 98408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 98508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 98608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("UPDATE system SET value='" + airplaneRadios + "' " + 98708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "WHERE name='" + Settings.System.AIRPLANE_MODE_RADIOS + "'"); 98808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("UPDATE system SET value='" + toggleableRadios + "' " + 98908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "WHERE name='" + Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS + "'"); 99008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 99108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 99208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 99308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 99408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 70; 99508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 99608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 99708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 70) { 99808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Update all built-in bookmarks. Some of the package names have changed. 99908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBookmarks(db); 100008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 71; 100108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 100208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 100308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 71) { 100408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // New setting to specify whether to speak passwords in accessibility mode. 100508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 100608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 100708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 100808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO secure(name,value)" 100908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 101008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, 101108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.bool.def_accessibility_speak_password); 101208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 101308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 101408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 101508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 101608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 101708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 72; 101808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 101908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 102008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 72) { 102108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // update vibration settings 102208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 102308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 102408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 102508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 102608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 102708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT, 102808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.bool.def_vibrate_in_silent); 102908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 103008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 103108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 103208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 103308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 103408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 73; 103508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 103608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 103708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 73) { 103808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVibrateSettingFromNone(db); 103908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 74; 104008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 104108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 104208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 74) { 104308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // URL from which WebView loads a JavaScript based screen-reader. 104408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 104508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 104608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 104708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);"); 104808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL, 104908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.string.def_accessibility_screen_reader_url); 105008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 105108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 105208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 105308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 105408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 105508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 75; 105608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 105708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 75) { 105808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 105908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 106008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Cursor c = null; 106108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 106208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin c = db.query(TABLE_SECURE, new String[] {"_id", "value"}, 106308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "name='lockscreen.disabled'", 106408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin null, null, null, null); 106508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // only set default if it has not yet been set 106608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (c == null || c.getCount() == 0) { 106708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO system(name,value)" 106808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 106908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.System.LOCKSCREEN_DISABLED, 107008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.bool.def_lockscreen_disabled); 107108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 107208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 107308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 107408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 107508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (c != null) c.close(); 107608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 107708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 107808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 76; 107908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 108008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 108108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /************* The following are Jelly Bean changes ************/ 108208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 108308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 76) { 108408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Removed VIBRATE_IN_SILENT setting 108508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 108608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 108708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" 108808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + Settings.System.VIBRATE_IN_SILENT + "'"); 108908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 109008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 109108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 109208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 109308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 109408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 77; 109508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 109608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 1097492ba7cc1dbf63c4d838506d0921dd073efaa8daEino-Ville Talvala if (upgradeVersion == 77) { 1098492ba7cc1dbf63c4d838506d0921dd073efaa8daEino-Ville Talvala // Introduce "vibrate when ringing" setting 1099492ba7cc1dbf63c4d838506d0921dd073efaa8daEino-Ville Talvala loadVibrateWhenRingingSetting(db); 1100492ba7cc1dbf63c4d838506d0921dd073efaa8daEino-Ville Talvala 110108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 78; 110208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 110308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 110408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 78) { 110508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // The JavaScript based screen-reader URL changes in JellyBean. 110608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 110708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 110808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 110908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" 111008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 111108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL, 111208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.string.def_accessibility_screen_reader_url); 111308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 111408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 111508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 111608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 111708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 111808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 79; 111908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 112008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 112108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 79) { 112208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Before touch exploration was a global setting controlled by the user 112308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // via the UI. However, if the enabled accessibility services do not 112408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // handle touch exploration mode, enabling it makes no sense. Therefore, 112508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // now the services request touch exploration mode and the user is 112608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // presented with a dialog to allow that and if she does we store that 112708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // in the database. As a result of this change a user that has enabled 112808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // accessibility, touch exploration, and some accessibility services 112908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // may lose touch exploration state, thus rendering the device useless 113008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // unless sighted help is provided, since the enabled service(s) are 113108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // not in the list of services to which the user granted a permission 113208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // to put the device in touch explore mode. Here we are allowing all 113308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // enabled accessibility services to toggle touch exploration provided 113408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // accessibility and touch exploration are enabled and no services can 113508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // toggle touch exploration. Note that the user has already manually 113608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // enabled the services and touch exploration which means the she has 113708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // given consent to have these services work in touch exploration mode. 113808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin final boolean accessibilityEnabled = getIntValueFromTable(db, TABLE_SECURE, 113908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1; 114008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin final boolean touchExplorationEnabled = getIntValueFromTable(db, TABLE_SECURE, 114108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0) == 1; 114208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (accessibilityEnabled && touchExplorationEnabled) { 114308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String enabledServices = getStringValueFromTable(db, TABLE_SECURE, 114408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, ""); 114508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String touchExplorationGrantedServices = getStringValueFromTable(db, TABLE_SECURE, 114608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, ""); 114708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (TextUtils.isEmpty(touchExplorationGrantedServices) 114808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin && !TextUtils.isEmpty(enabledServices)) { 114908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 115008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 115108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 115208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" 115308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 115408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadSetting(stmt, 115508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, 115608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin enabledServices); 115708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 115808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 115908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 116008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 116108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 116208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 116308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 116408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 80; 116508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 116608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 116708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // vvv Jelly Bean MR1 changes begin here vvv 116808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 116908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 80) { 117008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // update screensaver settings 117108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 117208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 117308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 117408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" 117508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 117608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ENABLED, 117708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin com.android.internal.R.bool.config_dreamsEnabledByDefault); 117808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 117908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault); 118008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 118108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault); 118208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadStringSetting(stmt, Settings.Secure.SCREENSAVER_COMPONENTS, 118308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin com.android.internal.R.string.config_dreamsDefaultComponent); 118408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadStringSetting(stmt, Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT, 118508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin com.android.internal.R.string.config_dreamsDefaultComponent); 118608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 118708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 118808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 118908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 119008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 119108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 119208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 81; 119308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 119408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 119508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 81) { 119608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Add package verification setting 119708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 119808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 119908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 120008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" 120108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 120208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.Global.PACKAGE_VERIFIER_ENABLE, 120308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.bool.def_package_verifier_enable); 120408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 120508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 120608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 120708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 120808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 120908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 82; 121008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 121108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 121208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 82) { 121308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Move to per-user settings dbs 121408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 121508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 121608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 121708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 121808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 121908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Migrate now-global settings. Note that this happens before 122008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // new users can be created. 122108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin createGlobalTable(db); 122208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] settingsToMove = hashsetToStringArray(SettingsProvider.sSystemGlobalKeys); 122308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, false); 122408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin settingsToMove = hashsetToStringArray(SettingsProvider.sSecureGlobalKeys); 122508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, false); 122608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 122708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 122808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 122908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 123008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 123108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 123208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 123308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 83; 123408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 123508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 123608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 83) { 123708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // 1. Setting whether screen magnification is enabled. 123808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // 2. Setting for screen magnification scale. 123908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // 3. Setting for screen magnification auto update. 124008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 124108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 124208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 124308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);"); 124408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, 124508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 124608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.bool.def_accessibility_display_magnification_enabled); 124708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt.close(); 124808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);"); 124908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadFractionSetting(stmt, Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, 125008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.fraction.def_accessibility_display_magnification_scale, 1); 125108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt.close(); 125208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);"); 125308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, 125408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE, 125508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.bool.def_accessibility_display_magnification_auto_update); 125608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 125708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 125808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 125908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 126008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 126108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 126208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 84; 126308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 126408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 126508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 84) { 126608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 126708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 126808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 126908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 127008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Patch up the slightly-wrong key migration from 82 -> 83 for those 127108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // devices that missed it, ignoring if the move is redundant 127208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] settingsToMove = { 127308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.ADB_ENABLED, 127408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.BLUETOOTH_ON, 127508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.DATA_ROAMING, 127608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.DEVICE_PROVISIONED, 127708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.INSTALL_NON_MARKET_APPS, 127808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Secure.USB_MASS_STORAGE_ENABLED 127908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin }; 128008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 128108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 128208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 128308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 128408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 128508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 128608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 128708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 85; 128808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 128908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 129008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 85) { 129108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 129208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 129308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 129408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Fix up the migration, ignoring already-migrated elements, to snap up to 129508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // date with new changes to the set of global versus system/secure settings 129608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] settingsToMove = { Settings.System.STAY_ON_WHILE_PLUGGED_IN }; 129708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, true); 129808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 129908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 130008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 130108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 130208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 130308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 130408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 86; 130508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 130608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 130708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 86) { 130808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 130908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 131008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 131108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] settingsToMove = { 131208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.PACKAGE_VERIFIER_ENABLE, 131308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.PACKAGE_VERIFIER_TIMEOUT, 131408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE 131508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin }; 131608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 131708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 131808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 131908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 132008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 132108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 132208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 132308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 87; 132408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 132508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 132608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 87) { 132708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 132808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 132908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 133008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] settingsToMove = { 133108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS, 133208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS, 133308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS 133408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin }; 133508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 133608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 133708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 133808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 133908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 134008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 134108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 134208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 88; 134308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 134408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 134508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 88) { 134608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 134708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 134808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 134908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] settingsToMove = { 135008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD, 135108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.BATTERY_DISCHARGE_THRESHOLD, 135208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.SEND_ACTION_APP_ERROR, 135308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DROPBOX_AGE_SECONDS, 135408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DROPBOX_MAX_FILES, 135508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DROPBOX_QUOTA_KB, 135608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DROPBOX_QUOTA_PERCENT, 135708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DROPBOX_RESERVE_PERCENT, 135808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DROPBOX_TAG_PREFIX, 135908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.ERROR_LOGCAT_PREFIX, 136008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL, 136108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD, 136208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE, 136308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES, 136408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES, 136508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS, 136608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.CONNECTIVITY_CHANGE_DELAY, 136708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, 136808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.CAPTIVE_PORTAL_SERVER, 13690e323a10780a53b10cf5e222bb0332276b0487a9Igor Murashkin Settings.Global.NSD_ON, 13700e323a10780a53b10cf5e222bb0332276b0487a9Igor Murashkin Settings.Global.SET_INSTALL_LOCATION, 13710e323a10780a53b10cf5e222bb0332276b0487a9Igor Murashkin Settings.Global.DEFAULT_INSTALL_LOCATION, 13720e323a10780a53b10cf5e222bb0332276b0487a9Igor Murashkin Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY, 137308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY, 137408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT, 137508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.HTTP_PROXY, 137608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.GLOBAL_HTTP_PROXY_HOST, 137708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.GLOBAL_HTTP_PROXY_PORT, 137808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST, 137908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.SET_GLOBAL_HTTP_PROXY, 138008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DEFAULT_DNS_SERVER, 138108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin }; 138208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 138308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 138408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 138508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 138608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 138708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 138808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 89; 138908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 139008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 139108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 89) { 139208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 139308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 139408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 139508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] prefixesToMove = { 139608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.BLUETOOTH_HEADSET_PRIORITY_PREFIX, 139708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX, 139808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX, 139908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin }; 140008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 140108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin movePrefixedSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, prefixesToMove); 140208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 140308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 140408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 140508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 140608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 140708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 140808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 90; 140908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 141008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 141108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 90) { 141208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 141308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 141408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 141508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] systemToGlobal = { 141608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.WINDOW_ANIMATION_SCALE, 141708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.TRANSITION_ANIMATION_SCALE, 141808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.ANIMATOR_DURATION_SCALE, 141908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.FANCY_IME_ANIMATIONS, 142008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.COMPATIBILITY_MODE, 142108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.EMERGENCY_TONE, 142208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.CALL_AUTO_RETRY, 142308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DEBUG_APP, 142408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.WAIT_FOR_DEBUGGER, 142508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.SHOW_PROCESSES, 142608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.ALWAYS_FINISH_ACTIVITIES, 142708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin }; 142808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] secureToGlobal = { 142908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.PREFERRED_NETWORK_MODE, 143008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.CDMA_SUBSCRIPTION_MODE, 143108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin }; 143208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 143308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, systemToGlobal, true); 143408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, secureToGlobal, true); 143508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 143608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 143708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 143808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 143982ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala } 144082ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala } 144182ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala upgradeVersion = 91; 144282ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala } 144382ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala 144482ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala if (upgradeVersion == 91) { 144582ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala if (mUserHandle == UserHandle.USER_OWNER) { 144682ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala db.beginTransaction(); 144782ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala try { 144882ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala // Move ringer mode from system to global settings 144982ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala String[] settingsToMove = { Settings.Global.MODE_RINGER }; 145082ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, true); 145182ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala 145282ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala db.setTransactionSuccessful(); 145382ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala } finally { 145482ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala db.endTransaction(); 145582ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala } 145682ce3311c9430610330456412b0dfab208a7dee3Eino-Ville Talvala } 145708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 92; 145808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 145908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 146008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 92) { 146108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 146208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 146308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 146408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 146508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 146608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // consider existing primary users to have made it through user setup 146708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // if the globally-scoped device-provisioned bit is set 146808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // (indicating they already made it through setup as primary) 146908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin int deviceProvisioned = getIntValueFromTable(db, TABLE_GLOBAL, 147008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.Global.DEVICE_PROVISIONED, 0); 147108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadSetting(stmt, Settings.Secure.USER_SETUP_COMPLETE, 147208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin deviceProvisioned); 147308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } else { 147408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // otherwise use the default 147508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.Secure.USER_SETUP_COMPLETE, 147608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.bool.def_user_setup_complete); 147708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 147808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 147908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 148008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 148108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 93; 148208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 148308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 148408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 93) { 148508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Redo this step, since somehow it didn't work the first time for some users 148608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 148708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 148808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 148908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Migrate now-global settings 149008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] settingsToMove = hashsetToStringArray(SettingsProvider.sSystemGlobalKeys); 149108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, true); 149208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin settingsToMove = hashsetToStringArray(SettingsProvider.sSecureGlobalKeys); 149308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 149408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 149508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 149608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 149708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 149808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 149908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 150008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 94; 150108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 150208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 150308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 94) { 150408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Add wireless charging started sound setting 150508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 150608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 150708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 150808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 150908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" 151008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 151108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadStringSetting(stmt, Settings.Global.WIRELESS_CHARGING_STARTED_SOUND, 151208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.string.def_wireless_charging_started_sound); 151308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 151408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 151508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 151608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 151708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 151808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 151908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 95; 1520c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He } 1521c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He 152208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 95) { 152308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 1524c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He db.beginTransaction(); 1525c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He try { 1526c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He String[] settingsToMove = { Settings.Global.BUGREPORT_IN_POWER_MENU }; 1527c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 1528c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He db.setTransactionSuccessful(); 1529c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He } finally { 1530c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He db.endTransaction(); 1531c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He } 1532c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He } 1533c2eebfffbaeb9da4093d3cd1a323974dbb2b164dZhijun He upgradeVersion = 96; 153408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 153508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 153608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 96) { 153708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // NOP bump due to a reverted change that some people got on upgrade. 153808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 97; 153908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 154008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 154108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion == 97) { 154208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 154308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 154408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 154508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 154608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" 154708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 154808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadIntegerSetting(stmt, Settings.Global.LOW_BATTERY_SOUND_TIMEOUT, 154908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.integer.def_low_battery_sound_timeout); 155008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 155108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 155208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 155308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 155408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 155508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 155608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin upgradeVersion = 98; 155708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 155808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 155908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // *** Remember to update DATABASE_VERSION above! 156008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 156108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (upgradeVersion != currentVersion) { 156208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Log.w(TAG, "Got stuck trying to upgrade from version " + upgradeVersion 156308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + ", must wipe the settings provider"); 156408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP TABLE IF EXISTS global"); 156508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP TABLE IF EXISTS globalIndex1"); 156608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP TABLE IF EXISTS system"); 156708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP INDEX IF EXISTS systemIndex1"); 156808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP TABLE IF EXISTS secure"); 156908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP INDEX IF EXISTS secureIndex1"); 157008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP TABLE IF EXISTS gservices"); 157108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP INDEX IF EXISTS gservicesIndex1"); 157208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP TABLE IF EXISTS bluetooth_devices"); 157308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP TABLE IF EXISTS bookmarks"); 157408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP INDEX IF EXISTS bookmarksIndex1"); 157508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP INDEX IF EXISTS bookmarksIndex2"); 157608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DROP TABLE IF EXISTS favorites"); 157708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin onCreate(db); 157808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 157908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Added for diagnosing settings.db wipes after the fact 158008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String wipeReason = oldVersion + "/" + upgradeVersion + "/" + currentVersion; 158108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT INTO secure(name,value) values('" + 158208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "wiped_db_reason" + "','" + wipeReason + "');"); 158308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 158408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 158508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 158608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private String[] hashsetToStringArray(HashSet<String> set) { 158708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] array = new String[set.size()]; 158808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin return set.toArray(array); 158908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 159008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 159108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private void moveSettingsToNewTable(SQLiteDatabase db, 159208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String sourceTable, String destTable, 159308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] settingsToMove, boolean doIgnore) { 159408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Copy settings values from the source table to the dest, and remove from the source 159508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement insertStmt = null; 159608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement deleteStmt = null; 159708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 159808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 159908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 160008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin insertStmt = db.compileStatement("INSERT " 160108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + (doIgnore ? " OR IGNORE " : "") 160208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " INTO " + destTable + " (name,value) SELECT name,value FROM " 160308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + sourceTable + " WHERE name=?"); 160408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin deleteStmt = db.compileStatement("DELETE FROM " + sourceTable + " WHERE name=?"); 160508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 160608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin for (String setting : settingsToMove) { 160708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin insertStmt.bindString(1, setting); 160808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin insertStmt.execute(); 160908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 161008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin deleteStmt.bindString(1, setting); 161108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin deleteStmt.execute(); 161208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 161308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 161408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 161508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 161608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (insertStmt != null) { 161708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin insertStmt.close(); 161808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 161908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (deleteStmt != null) { 162008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin deleteStmt.close(); 162108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 162208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 162308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 162408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 162508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /** 162608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Move any settings with the given prefixes from the source table to the 162708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * destination table. 162808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 162908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private void movePrefixedSettingsToNewTable( 163008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteDatabase db, String sourceTable, String destTable, String[] prefixesToMove) { 163108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement insertStmt = null; 163208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement deleteStmt = null; 163308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 163408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 163508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 163608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin insertStmt = db.compileStatement("INSERT INTO " + destTable 163708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " (name,value) SELECT name,value FROM " + sourceTable 163808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " WHERE substr(name,0,?)=?"); 163908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin deleteStmt = db.compileStatement( 164008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin "DELETE FROM " + sourceTable + " WHERE substr(name,0,?)=?"); 164108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 164208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin for (String prefix : prefixesToMove) { 164308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin insertStmt.bindLong(1, prefix.length() + 1); 164408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin insertStmt.bindString(2, prefix); 164508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin insertStmt.execute(); 164608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 164708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin deleteStmt.bindLong(1, prefix.length() + 1); 164808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin deleteStmt.bindString(2, prefix); 164908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin deleteStmt.execute(); 165008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 165108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 165208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 165308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 165408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (insertStmt != null) { 165508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin insertStmt.close(); 165608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 165708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (deleteStmt != null) { 165808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin deleteStmt.close(); 165908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 166008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 166108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 166208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 166308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private void upgradeLockPatternLocation(SQLiteDatabase db) { 166408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Cursor c = db.query(TABLE_SYSTEM, new String[] {"_id", "value"}, "name='lock_pattern'", 166508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin null, null, null, null); 166608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (c.getCount() > 0) { 166708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin c.moveToFirst(); 166808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String lockPattern = c.getString(1); 166908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (!TextUtils.isEmpty(lockPattern)) { 167008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Convert lock pattern 167108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 167208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin LockPatternUtils lpu = new LockPatternUtils(mContext); 167308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin List<LockPatternView.Cell> cellPattern = 167408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin LockPatternUtils.stringToPattern(lockPattern); 167508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin lpu.saveLockPattern(cellPattern); 167608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } catch (IllegalArgumentException e) { 167708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Don't want corrupted lock pattern to hang the reboot process 167808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 167908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 168008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin c.close(); 168108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.delete(TABLE_SYSTEM, "name='lock_pattern'", null); 168208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } else { 168308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin c.close(); 168408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 168508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 168608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 168708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private void upgradeScreenTimeoutFromNever(SQLiteDatabase db) { 168808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // See if the timeout is -1 (for "Never"). 168908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Cursor c = db.query(TABLE_SYSTEM, new String[] { "_id", "value" }, "name=? AND value=?", 169008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin new String[] { Settings.System.SCREEN_OFF_TIMEOUT, "-1" }, 169108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin null, null, null); 169208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 169308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 1694656aa5a8e265151bebc760a849766395f422e6baIgor Murashkin if (c.getCount() > 0) { 1695656aa5a8e265151bebc760a849766395f422e6baIgor Murashkin c.close(); 1696656aa5a8e265151bebc760a849766395f422e6baIgor Murashkin try { 169708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 169808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 169908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 170008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Set the timeout to 30 minutes in milliseconds 170169fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, 170208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Integer.toString(30 * 60 * 1000)); 170308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 170408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 170508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 170608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } else { 170708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin c.close(); 170808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 170908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 171008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 171108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private void upgradeVibrateSettingFromNone(SQLiteDatabase db) { 171208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin int vibrateSetting = getIntValueFromSystem(db, Settings.System.VIBRATE_ON, 0); 171308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // If the ringer vibrate value is invalid, set it to the default 171408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if ((vibrateSetting & 3) == AudioManager.VIBRATE_SETTING_OFF) { 171508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin vibrateSetting = AudioService.getValueForVibrateSetting(0, 171608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ONLY_SILENT); 171708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 171808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Apply the same setting to the notification vibrate value 171908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin vibrateSetting = AudioService.getValueForVibrateSetting(vibrateSetting, 172008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin AudioManager.VIBRATE_TYPE_NOTIFICATION, vibrateSetting); 172108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 172208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 172308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 172408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 172508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 172608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadSetting(stmt, Settings.System.VIBRATE_ON, vibrateSetting); 172708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 172808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) 172908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt.close(); 173008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 173108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 173208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 173308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private void upgradeScreenTimeout(SQLiteDatabase db) { 173408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Change screen timeout to current default 173508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 173608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 173708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 173808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 173908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 174008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, 174108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.integer.def_screen_off_timeout); 174208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 174308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 174408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 174508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) 174608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt.close(); 174708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 174808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 174908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 175008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private void upgradeAutoBrightness(SQLiteDatabase db) { 175108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.beginTransaction(); 175208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 175308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String value = 175408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin mContext.getResources().getBoolean( 175508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.bool.def_screen_brightness_automatic_mode) ? "1" : "0"; 175608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("INSERT OR REPLACE INTO system(name,value) values('" + 175708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.System.SCREEN_BRIGHTNESS_MODE + "','" + value + "');"); 175808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.setTransactionSuccessful(); 175908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 176008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.endTransaction(); 176108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 176208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 176308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 176408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin /** 176508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * Loads the default set of bookmarked shortcuts from an xml file. 176608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * 176708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin * @param db The database to write the values into 176808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin */ 176908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private void loadBookmarks(SQLiteDatabase db) { 177008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ContentValues values = new ContentValues(); 177108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 177208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin PackageManager packageManager = mContext.getPackageManager(); 177308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 177408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin XmlResourceParser parser = mContext.getResources().getXml(R.xml.bookmarks); 177508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin XmlUtils.beginDocument(parser, "bookmarks"); 177608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 177708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin final int depth = parser.getDepth(); 177808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin int type; 177908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 178008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin while (((type = parser.next()) != XmlPullParser.END_TAG || 178108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) { 178208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 178308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (type != XmlPullParser.START_TAG) { 178408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin continue; 178508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 178608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 178708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String name = parser.getName(); 178808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (!"bookmark".equals(name)) { 178908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin break; 179008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 179108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 179208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String pkg = parser.getAttributeValue(null, "package"); 179308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String cls = parser.getAttributeValue(null, "class"); 179408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String shortcutStr = parser.getAttributeValue(null, "shortcut"); 179508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String category = parser.getAttributeValue(null, "category"); 179608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 179708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin int shortcutValue = shortcutStr.charAt(0); 179808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (TextUtils.isEmpty(shortcutStr)) { 179908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Log.w(TAG, "Unable to get shortcut for: " + pkg + "/" + cls); 180008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin continue; 180108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 180208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 180308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin final Intent intent; 180408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin final String title; 180508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (pkg != null && cls != null) { 180608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ActivityInfo info = null; 180708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ComponentName cn = new ComponentName(pkg, cls); 180808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 180908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin info = packageManager.getActivityInfo(cn, 0); 181008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } catch (PackageManager.NameNotFoundException e) { 181108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin String[] packages = packageManager.canonicalToCurrentPackageNames( 181208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin new String[] { pkg }); 181308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin cn = new ComponentName(packages[0], cls); 181408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 181508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin info = packageManager.getActivityInfo(cn, 0); 181608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } catch (PackageManager.NameNotFoundException e1) { 181708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Log.w(TAG, "Unable to add bookmark: " + pkg + "/" + cls, e); 181808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin continue; 181908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 182008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 182108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 182208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin intent = new Intent(Intent.ACTION_MAIN, null); 182308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin intent.addCategory(Intent.CATEGORY_LAUNCHER); 182408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin intent.setComponent(cn); 182508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin title = info.loadLabel(packageManager).toString(); 182608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } else if (category != null) { 182708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, category); 182808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin title = ""; 182908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } else { 183008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Log.w(TAG, "Unable to add bookmark for shortcut " + shortcutStr 183108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + ": missing package/class or category attributes"); 183208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin continue; 183308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 183408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 183508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 183608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin values.put(Settings.Bookmarks.INTENT, intent.toUri(0)); 183769fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He values.put(Settings.Bookmarks.TITLE, title); 183869fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He values.put(Settings.Bookmarks.SHORTCUT, shortcutValue); 183969fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He db.delete("bookmarks", "shortcut = ?", 184069fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He new String[] { Integer.toString(shortcutValue) }); 184169fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He db.insert("bookmarks", null, values); 184269fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He } 184369fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He } catch (XmlPullParserException e) { 184469fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He Log.w(TAG, "Got execption parsing bookmarks.", e); 184569fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He } catch (IOException e) { 184669fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He Log.w(TAG, "Got execption parsing bookmarks.", e); 184769fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He } 184869fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He } 184969fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He 185069fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He /** 185169fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He * Loads the default volume levels. It is actually inserting the index of 185269fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He * the volume array for each of the volume controls. 185369fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He * 185469fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He * @param db the database to insert the volume levels into 185569fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He */ 185669fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He private void loadVolumeLevels(SQLiteDatabase db) { 185769fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He SQLiteStatement stmt = null; 185869fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He try { 185969fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 186069fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He + " VALUES(?,?);"); 186169fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He 186269fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadSetting(stmt, Settings.System.VOLUME_MUSIC, 186369fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_MUSIC]); 186469fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadSetting(stmt, Settings.System.VOLUME_RING, 186569fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_RING]); 186669fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadSetting(stmt, Settings.System.VOLUME_SYSTEM, 186769fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_SYSTEM]); 186869fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadSetting( 186969fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He stmt, 187069fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He Settings.System.VOLUME_VOICE, 187169fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_VOICE_CALL]); 187269fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadSetting(stmt, Settings.System.VOLUME_ALARM, 187369fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_ALARM]); 187469fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadSetting( 187569fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He stmt, 187669fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He Settings.System.VOLUME_NOTIFICATION, 187769fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_NOTIFICATION]); 187869fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadSetting( 187969fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He stmt, 188008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin Settings.System.VOLUME_BLUETOOTH_SCO, 188108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]); 188208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 188308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // By default: 188408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // - ringtones, notification, system and music streams are affected by ringer mode 188508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // on non voice capable devices (tablets) 188608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // - ringtones, notification and system streams are affected by ringer mode 188708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // on voice capable devices (phones) 188808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin int ringerModeAffectedStreams = (1 << AudioManager.STREAM_RING) | 188908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin (1 << AudioManager.STREAM_NOTIFICATION) | 189008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin (1 << AudioManager.STREAM_SYSTEM) | 189108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin (1 << AudioManager.STREAM_SYSTEM_ENFORCED); 189208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (!mContext.getResources().getBoolean( 189308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin com.android.internal.R.bool.config_voice_capable)) { 189408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ringerModeAffectedStreams |= (1 << AudioManager.STREAM_MUSIC); 189508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 189608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadSetting(stmt, Settings.System.MODE_RINGER_STREAMS_AFFECTED, 189708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ringerModeAffectedStreams); 189808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 189908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadSetting(stmt, Settings.System.MUTE_STREAMS_AFFECTED, 190008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin ((1 << AudioManager.STREAM_MUSIC) | 190108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin (1 << AudioManager.STREAM_RING) | 190208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin (1 << AudioManager.STREAM_NOTIFICATION) | 190308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin (1 << AudioManager.STREAM_SYSTEM))); 190408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 190508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 190608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 190708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 190808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadVibrateWhenRingingSetting(db); 190908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 191008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 191108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin private void loadVibrateSetting(SQLiteDatabase db, boolean deleteOld) { 191208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (deleteOld) { 191308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin db.execSQL("DELETE FROM system WHERE name='" + Settings.System.VIBRATE_ON + "'"); 191408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 191508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 191608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin SQLiteStatement stmt = null; 191708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin try { 191808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 191908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin + " VALUES(?,?);"); 192008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 192108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin // Vibrate on by default for ringer, on for notification 192208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin int vibrate = 0; 192308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin vibrate = AudioService.getValueForVibrateSetting(vibrate, 192408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin AudioManager.VIBRATE_TYPE_NOTIFICATION, 192508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin AudioManager.VIBRATE_SETTING_ONLY_SILENT); 192608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin vibrate |= AudioService.getValueForVibrateSetting(vibrate, 192708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ONLY_SILENT); 192808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadSetting(stmt, Settings.System.VIBRATE_ON, vibrate); 192908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } finally { 193008b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin if (stmt != null) stmt.close(); 193108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin } 1932c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin } 1933c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin 1934c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin private void loadVibrateWhenRingingSetting(SQLiteDatabase db) { 1935c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin // The default should be off. VIBRATE_SETTING_ONLY_SILENT should also be ignored here. 1936c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin // Phone app should separately check whether AudioManager#getRingerMode() returns 1937c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin // RINGER_MODE_VIBRATE, with which the device should vibrate anyway. 1938c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin int vibrateSetting = getIntValueFromSystem(db, Settings.System.VIBRATE_ON, 1939c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin AudioManager.VIBRATE_SETTING_OFF); 1940c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin boolean vibrateWhenRinging = ((vibrateSetting & 3) == AudioManager.VIBRATE_SETTING_ON); 1941c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin 1942c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin SQLiteStatement stmt = null; 1943c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin try { 1944c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 1945c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin + " VALUES(?,?);"); 1946c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin loadSetting(stmt, Settings.System.VIBRATE_WHEN_RINGING, vibrateWhenRinging ? 1 : 0); 1947c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin } finally { 1948c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin if (stmt != null) stmt.close(); 1949c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin } 1950c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin } 1951c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin 1952c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin private void loadSettings(SQLiteDatabase db) { 1953c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin loadSystemSettings(db); 1954c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin loadSecureSettings(db); 1955c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin // The global table only exists for the 'owner' user 1956c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin if (mUserHandle == UserHandle.USER_OWNER) { 1957c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin loadGlobalSettings(db); 1958c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin } 195938b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin } 196038b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin 196138b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin private void loadSystemSettings(SQLiteDatabase db) { 196238b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin SQLiteStatement stmt = null; 196338b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin try { 196438b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 196538b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin + " VALUES(?,?);"); 196638b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin 196738b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin loadBooleanSetting(stmt, Settings.System.DIM_SCREEN, 196838b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin R.bool.def_dim_screen); 196938b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, 197038b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin R.integer.def_screen_off_timeout); 197138b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin 197238b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin // Set default cdma DTMF type 197338b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin loadSetting(stmt, Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0); 197438b8cae3876ce1c02d6da310ad93fb31d9c5a9edIgor Murashkin 197569fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He // Set default hearing aid 197669fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadSetting(stmt, Settings.System.HEARING_AID, 0); 197769fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He 197869fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He // Set default tty mode 197969fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadSetting(stmt, Settings.System.TTY_MODE, 0); 198069fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He 198169fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS, 198269fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He R.integer.def_screen_brightness); 198369fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He 198469fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE, 198569fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He R.bool.def_screen_brightness_automatic_mode); 198669fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He 198769fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadDefaultAnimationSettings(stmt); 198869fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He 198969fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION, 199069fc0eaf3e66b41b28cfee8aa428d1784caa9b9fZhijun He R.bool.def_accelerometer_rotation); 199108b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 199208b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadDefaultHapticSettings(stmt); 199308b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 199408b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, 199508b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin R.bool.def_notification_pulse); 199608b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 199708b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadUISoundEffectsSettings(stmt); 199808b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin 199908b8aadab1b04a4451d06f152580df2a3ac3afefIgor Murashkin loadIntegerSetting(stmt, Settings.System.POINTER_SPEED, 2000375cfd3889aa72160273af802370c8f47f5c64d1Igor Murashkin R.integer.def_pointer_speed); 2001 } finally { 2002 if (stmt != null) stmt.close(); 2003 } 2004 } 2005 2006 private void loadUISoundEffectsSettings(SQLiteStatement stmt) { 2007 loadBooleanSetting(stmt, Settings.System.DTMF_TONE_WHEN_DIALING, 2008 R.bool.def_dtmf_tones_enabled); 2009 loadBooleanSetting(stmt, Settings.System.SOUND_EFFECTS_ENABLED, 2010 R.bool.def_sound_effects_enabled); 2011 loadBooleanSetting(stmt, Settings.System.HAPTIC_FEEDBACK_ENABLED, 2012 R.bool.def_haptic_feedback); 2013 2014 loadIntegerSetting(stmt, Settings.System.LOCKSCREEN_SOUNDS_ENABLED, 2015 R.integer.def_lockscreen_sounds_enabled); 2016 } 2017 2018 private void loadDefaultAnimationSettings(SQLiteStatement stmt) { 2019 loadFractionSetting(stmt, Settings.System.WINDOW_ANIMATION_SCALE, 2020 R.fraction.def_window_animation_scale, 1); 2021 loadFractionSetting(stmt, Settings.System.TRANSITION_ANIMATION_SCALE, 2022 R.fraction.def_window_transition_scale, 1); 2023 } 2024 2025 private void loadDefaultHapticSettings(SQLiteStatement stmt) { 2026 loadBooleanSetting(stmt, Settings.System.HAPTIC_FEEDBACK_ENABLED, 2027 R.bool.def_haptic_feedback); 2028 } 2029 2030 private void loadSecureSettings(SQLiteDatabase db) { 2031 SQLiteStatement stmt = null; 2032 try { 2033 stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 2034 + " VALUES(?,?);"); 2035 2036 loadStringSetting(stmt, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, 2037 R.string.def_location_providers_allowed); 2038 2039 String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist"); 2040 if (!TextUtils.isEmpty(wifiWatchList)) { 2041 loadSetting(stmt, Settings.Secure.WIFI_WATCHDOG_WATCH_LIST, wifiWatchList); 2042 } 2043 2044 // Don't do this. The SystemServer will initialize ADB_ENABLED from a 2045 // persistent system property instead. 2046 //loadSetting(stmt, Settings.Secure.ADB_ENABLED, 0); 2047 2048 // Allow mock locations default, based on build 2049 loadSetting(stmt, Settings.Secure.ALLOW_MOCK_LOCATION, 2050 "1".equals(SystemProperties.get("ro.allow.mock.location")) ? 1 : 0); 2051 2052 loadSecure35Settings(stmt); 2053 2054 loadBooleanSetting(stmt, Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND, 2055 R.bool.def_mount_play_notification_snd); 2056 2057 loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_AUTOSTART, 2058 R.bool.def_mount_ums_autostart); 2059 2060 loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_PROMPT, 2061 R.bool.def_mount_ums_prompt); 2062 2063 loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED, 2064 R.bool.def_mount_ums_notify_enabled); 2065 2066 loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 2067 R.bool.def_accessibility_script_injection); 2068 2069 loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS, 2070 R.string.def_accessibility_web_content_key_bindings); 2071 2072 loadIntegerSetting(stmt, Settings.Secure.LONG_PRESS_TIMEOUT, 2073 R.integer.def_long_press_timeout_millis); 2074 2075 loadBooleanSetting(stmt, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 2076 R.bool.def_touch_exploration_enabled); 2077 2078 loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, 2079 R.bool.def_accessibility_speak_password); 2080 2081 loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL, 2082 R.string.def_accessibility_screen_reader_url); 2083 2084 if (SystemProperties.getBoolean("ro.lockscreen.disable.default", false) == true) { 2085 loadSetting(stmt, Settings.System.LOCKSCREEN_DISABLED, "1"); 2086 } else { 2087 loadBooleanSetting(stmt, Settings.System.LOCKSCREEN_DISABLED, 2088 R.bool.def_lockscreen_disabled); 2089 } 2090 2091 loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ENABLED, 2092 com.android.internal.R.bool.config_dreamsEnabledByDefault); 2093 loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 2094 com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault); 2095 loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 2096 com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault); 2097 loadStringSetting(stmt, Settings.Secure.SCREENSAVER_COMPONENTS, 2098 com.android.internal.R.string.config_dreamsDefaultComponent); 2099 loadStringSetting(stmt, Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT, 2100 com.android.internal.R.string.config_dreamsDefaultComponent); 2101 2102 loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 2103 R.bool.def_accessibility_display_magnification_enabled); 2104 2105 loadFractionSetting(stmt, Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, 2106 R.fraction.def_accessibility_display_magnification_scale, 1); 2107 2108 loadBooleanSetting(stmt, 2109 Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE, 2110 R.bool.def_accessibility_display_magnification_auto_update); 2111 2112 loadBooleanSetting(stmt, Settings.Secure.USER_SETUP_COMPLETE, 2113 R.bool.def_user_setup_complete); 2114 2115 loadStringSetting(stmt, Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS, 2116 R.string.def_immersive_mode_confirmations); 2117 2118 } finally { 2119 if (stmt != null) stmt.close(); 2120 } 2121 } 2122 2123 private void loadSecure35Settings(SQLiteStatement stmt) { 2124 loadBooleanSetting(stmt, Settings.Secure.BACKUP_ENABLED, 2125 R.bool.def_backup_enabled); 2126 2127 loadStringSetting(stmt, Settings.Secure.BACKUP_TRANSPORT, 2128 R.string.def_backup_transport); 2129 } 2130 2131 private void loadGlobalSettings(SQLiteDatabase db) { 2132 SQLiteStatement stmt = null; 2133 try { 2134 stmt = db.compileStatement("INSERT OR IGNORE INTO global(name,value)" 2135 + " VALUES(?,?);"); 2136 2137 // --- Previously in 'system' 2138 loadBooleanSetting(stmt, Settings.Global.AIRPLANE_MODE_ON, 2139 R.bool.def_airplane_mode_on); 2140 2141 loadStringSetting(stmt, Settings.Global.AIRPLANE_MODE_RADIOS, 2142 R.string.def_airplane_mode_radios); 2143 2144 loadStringSetting(stmt, Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS, 2145 R.string.airplane_mode_toggleable_radios); 2146 2147 loadBooleanSetting(stmt, Settings.Global.ASSISTED_GPS_ENABLED, 2148 R.bool.assisted_gps_enabled); 2149 2150 loadBooleanSetting(stmt, Settings.Global.AUTO_TIME, 2151 R.bool.def_auto_time); // Sync time to NITZ 2152 2153 loadBooleanSetting(stmt, Settings.Global.AUTO_TIME_ZONE, 2154 R.bool.def_auto_time_zone); // Sync timezone to NITZ 2155 2156 loadSetting(stmt, Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 2157 ("1".equals(SystemProperties.get("ro.kernel.qemu")) || 2158 mContext.getResources().getBoolean(R.bool.def_stay_on_while_plugged_in)) 2159 ? 1 : 0); 2160 2161 loadIntegerSetting(stmt, Settings.Global.WIFI_SLEEP_POLICY, 2162 R.integer.def_wifi_sleep_policy); 2163 2164 loadSetting(stmt, Settings.Global.MODE_RINGER, 2165 AudioManager.RINGER_MODE_NORMAL); 2166 2167 // --- Previously in 'secure' 2168 loadBooleanSetting(stmt, Settings.Global.PACKAGE_VERIFIER_ENABLE, 2169 R.bool.def_package_verifier_enable); 2170 2171 loadBooleanSetting(stmt, Settings.Global.WIFI_ON, 2172 R.bool.def_wifi_on); 2173 2174 loadBooleanSetting(stmt, Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 2175 R.bool.def_networks_available_notification_on); 2176 2177 loadBooleanSetting(stmt, Settings.Global.BLUETOOTH_ON, 2178 R.bool.def_bluetooth_on); 2179 2180 // Enable or disable Cell Broadcast SMS 2181 loadSetting(stmt, Settings.Global.CDMA_CELL_BROADCAST_SMS, 2182 RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED); 2183 2184 // Data roaming default, based on build 2185 loadSetting(stmt, Settings.Global.DATA_ROAMING, 2186 "true".equalsIgnoreCase( 2187 SystemProperties.get("ro.com.android.dataroaming", 2188 "false")) ? 1 : 0); 2189 2190 loadBooleanSetting(stmt, Settings.Global.DEVICE_PROVISIONED, 2191 R.bool.def_device_provisioned); 2192 2193 final int maxBytes = mContext.getResources().getInteger( 2194 R.integer.def_download_manager_max_bytes_over_mobile); 2195 if (maxBytes > 0) { 2196 loadSetting(stmt, Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE, 2197 Integer.toString(maxBytes)); 2198 } 2199 2200 final int recommendedMaxBytes = mContext.getResources().getInteger( 2201 R.integer.def_download_manager_recommended_max_bytes_over_mobile); 2202 if (recommendedMaxBytes > 0) { 2203 loadSetting(stmt, Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE, 2204 Integer.toString(recommendedMaxBytes)); 2205 } 2206 2207 // Mobile Data default, based on build 2208 loadSetting(stmt, Settings.Global.MOBILE_DATA, 2209 "true".equalsIgnoreCase( 2210 SystemProperties.get("ro.com.android.mobiledata", 2211 "true")) ? 1 : 0); 2212 2213 loadBooleanSetting(stmt, Settings.Global.NETSTATS_ENABLED, 2214 R.bool.def_netstats_enabled); 2215 2216 loadBooleanSetting(stmt, Settings.Global.INSTALL_NON_MARKET_APPS, 2217 R.bool.def_install_non_market_apps); 2218 2219 loadBooleanSetting(stmt, Settings.Global.USB_MASS_STORAGE_ENABLED, 2220 R.bool.def_usb_mass_storage_enabled); 2221 2222 loadIntegerSetting(stmt, Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT, 2223 R.integer.def_max_dhcp_retries); 2224 2225 loadBooleanSetting(stmt, Settings.Global.WIFI_DISPLAY_ON, 2226 R.bool.def_wifi_display_on); 2227 2228 loadStringSetting(stmt, Settings.Global.LOCK_SOUND, 2229 R.string.def_lock_sound); 2230 loadStringSetting(stmt, Settings.Global.UNLOCK_SOUND, 2231 R.string.def_unlock_sound); 2232 loadIntegerSetting(stmt, Settings.Global.POWER_SOUNDS_ENABLED, 2233 R.integer.def_power_sounds_enabled); 2234 loadStringSetting(stmt, Settings.Global.LOW_BATTERY_SOUND, 2235 R.string.def_low_battery_sound); 2236 loadIntegerSetting(stmt, Settings.Global.DOCK_SOUNDS_ENABLED, 2237 R.integer.def_dock_sounds_enabled); 2238 loadStringSetting(stmt, Settings.Global.DESK_DOCK_SOUND, 2239 R.string.def_desk_dock_sound); 2240 loadStringSetting(stmt, Settings.Global.DESK_UNDOCK_SOUND, 2241 R.string.def_desk_undock_sound); 2242 loadStringSetting(stmt, Settings.Global.CAR_DOCK_SOUND, 2243 R.string.def_car_dock_sound); 2244 loadStringSetting(stmt, Settings.Global.CAR_UNDOCK_SOUND, 2245 R.string.def_car_undock_sound); 2246 loadStringSetting(stmt, Settings.Global.WIRELESS_CHARGING_STARTED_SOUND, 2247 R.string.def_wireless_charging_started_sound); 2248 2249 loadIntegerSetting(stmt, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 2250 R.integer.def_dock_audio_media_enabled); 2251 2252 loadSetting(stmt, Settings.Global.SET_INSTALL_LOCATION, 0); 2253 loadSetting(stmt, Settings.Global.DEFAULT_INSTALL_LOCATION, 2254 PackageHelper.APP_INSTALL_AUTO); 2255 2256 // Set default cdma emergency tone 2257 loadSetting(stmt, Settings.Global.EMERGENCY_TONE, 0); 2258 2259 // Set default cdma call auto retry 2260 loadSetting(stmt, Settings.Global.CALL_AUTO_RETRY, 0); 2261 2262 // Set the preferred network mode to target desired value or Default 2263 // value defined in RILConstants 2264 int type; 2265 type = SystemProperties.getInt("ro.telephony.default_network", 2266 RILConstants.PREFERRED_NETWORK_MODE); 2267 loadSetting(stmt, Settings.Global.PREFERRED_NETWORK_MODE, type); 2268 2269 // Set the preferred cdma subscription source to target desired value or default 2270 // value defined in CdmaSubscriptionSourceManager 2271 type = SystemProperties.getInt("ro.telephony.default_cdma_sub", 2272 CdmaSubscriptionSourceManager.PREFERRED_CDMA_SUBSCRIPTION); 2273 loadSetting(stmt, Settings.Global.CDMA_SUBSCRIPTION_MODE, type); 2274 2275 loadIntegerSetting(stmt, Settings.Global.LOW_BATTERY_SOUND_TIMEOUT, 2276 R.integer.def_low_battery_sound_timeout); 2277 2278 loadIntegerSetting(stmt, Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 2279 R.integer.def_wifi_scan_always_available); 2280 2281 // --- New global settings start here 2282 } finally { 2283 if (stmt != null) stmt.close(); 2284 } 2285 } 2286 2287 private void loadSetting(SQLiteStatement stmt, String key, Object value) { 2288 stmt.bindString(1, key); 2289 stmt.bindString(2, value.toString()); 2290 stmt.execute(); 2291 } 2292 2293 private void loadStringSetting(SQLiteStatement stmt, String key, int resid) { 2294 loadSetting(stmt, key, mContext.getResources().getString(resid)); 2295 } 2296 2297 private void loadBooleanSetting(SQLiteStatement stmt, String key, int resid) { 2298 loadSetting(stmt, key, 2299 mContext.getResources().getBoolean(resid) ? "1" : "0"); 2300 } 2301 2302 private void loadIntegerSetting(SQLiteStatement stmt, String key, int resid) { 2303 loadSetting(stmt, key, 2304 Integer.toString(mContext.getResources().getInteger(resid))); 2305 } 2306 2307 private void loadFractionSetting(SQLiteStatement stmt, String key, int resid, int base) { 2308 loadSetting(stmt, key, 2309 Float.toString(mContext.getResources().getFraction(resid, base, base))); 2310 } 2311 2312 private int getIntValueFromSystem(SQLiteDatabase db, String name, int defaultValue) { 2313 return getIntValueFromTable(db, TABLE_SYSTEM, name, defaultValue); 2314 } 2315 2316 private int getIntValueFromTable(SQLiteDatabase db, String table, String name, 2317 int defaultValue) { 2318 String value = getStringValueFromTable(db, table, name, null); 2319 return (value != null) ? Integer.parseInt(value) : defaultValue; 2320 } 2321 2322 private String getStringValueFromTable(SQLiteDatabase db, String table, String name, 2323 String defaultValue) { 2324 Cursor c = null; 2325 try { 2326 c = db.query(table, new String[] { Settings.System.VALUE }, "name='" + name + "'", 2327 null, null, null, null); 2328 if (c != null && c.moveToFirst()) { 2329 String val = c.getString(0); 2330 return val == null ? defaultValue : val; 2331 } 2332 } finally { 2333 if (c != null) c.close(); 2334 } 2335 return defaultValue; 2336 } 2337} 2338