154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/* 254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * you may not use this file except in compliance with the License. 654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * You may obtain a copy of the License at 754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * See the License for the specific language governing permissions and 1454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * limitations under the License. 1554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 1654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectpackage com.android.providers.settings; 1854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.ComponentName; 2054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.ContentValues; 2154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.Context; 2254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.Intent; 2354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.pm.ActivityInfo; 2413579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackbornimport android.content.pm.IPackageManager; 2554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.pm.PackageManager; 26f02811f7853202c0934622702ebb9c82e6ab0592Romain Guyimport android.content.res.XmlResourceParser; 2754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.Cursor; 2854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.sqlite.SQLiteDatabase; 2954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.sqlite.SQLiteOpenHelper; 3054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.sqlite.SQLiteStatement; 316156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlockimport android.media.AudioSystem; 3254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.media.AudioManager; 3354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.net.ConnectivityManager; 34147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichetimport android.os.Build; 3506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tateimport android.os.Environment; 3613579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackbornimport android.os.RemoteException; 3713579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackbornimport android.os.ServiceManager; 3854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.SystemProperties; 3906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tateimport android.os.UserHandle; 4054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.provider.Settings; 41625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkeyimport android.provider.Settings.Global; 42156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasaniimport android.provider.Settings.Secure; 4354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.text.TextUtils; 4454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.util.Log; 4540e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu 460499bb5de45cf5542db7ac42406cd856d3386f1fLibin.Tang@motorola.comimport com.android.ims.ImsConfig; 47fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.content.PackageHelper; 48fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.telephony.RILConstants; 49b4d485c18448eadb92083c74fc84722250daeb5dNaveen Kallaimport com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; 50fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.util.XmlUtils; 51fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.widget.LockPatternUtils; 52fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.widget.LockPatternView; 53fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne 54fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport org.xmlpull.v1.XmlPullParser; 55fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport org.xmlpull.v1.XmlPullParserException; 56fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne 5706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tateimport java.io.File; 5854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.io.IOException; 5924117ce3ae32c40798d2d9bda80675814f76730dDianne Hackbornimport java.util.HashSet; 6054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.util.List; 61683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslavimport java.util.Set; 6254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 6354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/** 64503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * Legacy settings database helper class for {@link SettingsProvider}. 65503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * 66503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * IMPORTANT: Do not add any more upgrade steps here as the global, 67503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * secure, and system settings are no longer stored in a database 68503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * but are kept in memory and persisted to XML. 69503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * 70503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * See: SettingsProvider.UpgradeController#onUpgradeLocked 71503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * 72503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * @deprecated The implementation is frozen. Do not add any new code to this class! 7354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 74503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown@Deprecated 75503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brownclass DatabaseHelper extends SQLiteOpenHelper { 7654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String TAG = "SettingsProvider"; 7754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String DATABASE_NAME = "settings.db"; 78f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller 79f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // Please, please please. If you update the database version, check to make sure the 80f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion' 81f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // is properly propagated through your change. Not doing so will result in a loss of user 82f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // settings. 838c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock private static final int DATABASE_VERSION = 118; 849bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 8554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Context mContext; 8606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate private int mUserHandle; 8754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 8824117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn private static final HashSet<String> mValidTables = new HashSet<String>(); 8924117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn 90683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav private static final String DATABASE_JOURNAL_SUFFIX = "-journal"; 91683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav private static final String DATABASE_BACKUP_SUFFIX = "-backup"; 92683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav 9306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate private static final String TABLE_SYSTEM = "system"; 9406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate private static final String TABLE_SECURE = "secure"; 9506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate private static final String TABLE_GLOBAL = "global"; 9606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 9724117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn static { 9806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate mValidTables.add(TABLE_SYSTEM); 9906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate mValidTables.add(TABLE_SECURE); 10006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate mValidTables.add(TABLE_GLOBAL); 10124117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn 10224117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn // These are old. 103683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav mValidTables.add("bluetooth_devices"); 104683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav mValidTables.add("bookmarks"); 10524117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("favorites"); 10624117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("old_favorites"); 107683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav mValidTables.add("android_metadata"); 10824117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn } 10924117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn 11006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate static String dbNameForUser(final int userHandle) { 11106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate // The owner gets the unadorned db name; 11243765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (userHandle == UserHandle.USER_SYSTEM) { 11306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate return DATABASE_NAME; 11406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } else { 11506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate // Place the database in the user-specific data tree so that it's 11606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate // cleaned up automatically when the user is deleted. 11706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate File databaseFile = new File( 11806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate Environment.getUserSystemDirectory(userHandle), DATABASE_NAME); 119497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov // If databaseFile doesn't exist, database can be kept in memory. It's safe because the 120497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov // database will be migrated and disposed of immediately after onCreate finishes 121497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov if (!databaseFile.exists()) { 122497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov Log.i(TAG, "No previous database file exists - running in in-memory mode"); 123497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov return null; 124497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov } 12506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate return databaseFile.getPath(); 12606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } 12706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } 12806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 12906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate public DatabaseHelper(Context context, int userHandle) { 13006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate super(context, dbNameForUser(userHandle), null, DATABASE_VERSION); 13154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mContext = context; 13206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate mUserHandle = userHandle; 13354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 13454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 13524117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn public static boolean isValidTable(String name) { 13624117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn return mValidTables.contains(name); 13724117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn } 13824117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn 139497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov private boolean isInMemory() { 140497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov return getDatabaseName() == null; 141497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov } 142497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov 143683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav public void dropDatabase() { 144683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav close(); 145497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov // No need to remove files if db is in memory 146497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov if (isInMemory()) { 147497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov return; 148497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov } 149683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav File databaseFile = mContext.getDatabasePath(getDatabaseName()); 150683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav if (databaseFile.exists()) { 151683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav databaseFile.delete(); 152683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav } 153683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav File databaseJournalFile = mContext.getDatabasePath(getDatabaseName() 154683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav + DATABASE_JOURNAL_SUFFIX); 155683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav if (databaseJournalFile.exists()) { 156683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav databaseJournalFile.delete(); 157683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav } 158683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav } 159683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav 160683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav public void backupDatabase() { 161683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav close(); 162497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov // No need to backup files if db is in memory 163497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov if (isInMemory()) { 164497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov return; 165497b5faba98950ca4bc8cccf6489b61fb95c799fFyodor Kupolov } 166683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav File databaseFile = mContext.getDatabasePath(getDatabaseName()); 167683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav if (!databaseFile.exists()) { 168683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav return; 169683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav } 170683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav File backupFile = mContext.getDatabasePath(getDatabaseName() 171683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav + DATABASE_BACKUP_SUFFIX); 172683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav if (backupFile.exists()) { 173683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav return; 174683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav } 175683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav databaseFile.renameTo(backupFile); 176683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav } 177683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav 178f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void createSecureTable(SQLiteDatabase db) { 179f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("CREATE TABLE secure (" + 180f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "_id INTEGER PRIMARY KEY AUTOINCREMENT," + 181f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "name TEXT UNIQUE ON CONFLICT REPLACE," + 182f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "value TEXT" + 183f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project ");"); 184f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("CREATE INDEX secureIndex1 ON secure (name);"); 185f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1869bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 18706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate private void createGlobalTable(SQLiteDatabase db) { 18806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate db.execSQL("CREATE TABLE global (" + 18906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate "_id INTEGER PRIMARY KEY AUTOINCREMENT," + 19006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate "name TEXT UNIQUE ON CONFLICT REPLACE," + 19106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate "value TEXT" + 19206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate ");"); 19306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate db.execSQL("CREATE INDEX globalIndex1 ON global (name);"); 19406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } 19506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 19654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project @Override 19754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void onCreate(SQLiteDatabase db) { 19854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE TABLE system (" + 19954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "_id INTEGER PRIMARY KEY AUTOINCREMENT," + 20054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "name TEXT UNIQUE ON CONFLICT REPLACE," + 20154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "value TEXT" + 20254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ");"); 20354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE INDEX systemIndex1 ON system (name);"); 20454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 205f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project createSecureTable(db); 206f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 20743765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen // Only create the global table for the singleton 'owner/system' user 20843765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 20906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate createGlobalTable(db); 21006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } 21106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 21254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE TABLE bluetooth_devices (" + 21354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "_id INTEGER PRIMARY KEY," + 21454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "name TEXT," + 21554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "addr TEXT," + 21654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "channel INTEGER," + 21754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "type INTEGER" + 21854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ");"); 21954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 22054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE TABLE bookmarks (" + 22154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "_id INTEGER PRIMARY KEY," + 22254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "title TEXT," + 22354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "folder TEXT," + 22454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "intent TEXT," + 22554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "shortcut INTEGER," + 22654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "ordering INTEGER" + 22754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ");"); 22854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 22954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE INDEX bookmarksIndex1 ON bookmarks (folder);"); 23054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE INDEX bookmarksIndex2 ON bookmarks (shortcut);"); 23154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 23254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Populate bookmarks table with initial bookmarks 23313579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackborn boolean onlyCore = false; 23413579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackborn try { 23513579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackborn onlyCore = IPackageManager.Stub.asInterface(ServiceManager.getService( 23613579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackborn "package")).isOnlyCoreApps(); 23713579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackborn } catch (RemoteException e) { 23813579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackborn } 23913579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackborn if (!onlyCore) { 24013579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackborn loadBookmarks(db); 24113579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackborn } 24254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 24354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Load initial volume levels into DB 24454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project loadVolumeLevels(db); 24554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 24654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Load inital settings values 24754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project loadSettings(db); 24854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 24954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 25054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project @Override 25154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) { 25254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Upgrading settings database from version " + oldVersion + " to " 25354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project + currentVersion); 2549bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 25554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int upgradeVersion = oldVersion; 25654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 25754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Pattern for upgrade blocks: 25854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // 25954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // if (upgradeVersion == [the DATABASE_VERSION you set] - 1) { 26054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // .. your upgrade logic.. 26154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // upgradeVersion = [the DATABASE_VERSION you set] 26254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // } 2639bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 26454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (upgradeVersion == 20) { 26554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* 26654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Version 21 is part of the volume control refresh. There is no 26754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * longer a UI-visible for setting notification vibrate on/off (in 26854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * our design), but the functionality still exists. Force the 26954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * notification vibrate to on. 27054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 27154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project loadVibrateSetting(db, true); 27254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 27354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeVersion = 21; 27454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 2759bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 27654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (upgradeVersion < 22) { 27754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeVersion = 22; 27854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Upgrade the lock gesture storage location and format 27954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeLockPatternLocation(db); 28054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 28154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 28254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (upgradeVersion < 23) { 28354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("UPDATE favorites SET iconResource=0 WHERE iconType=0"); 28454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeVersion = 23; 28554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 28654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 28754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (upgradeVersion == 23) { 28854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.beginTransaction(); 28954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 29054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("ALTER TABLE favorites ADD spanX INTEGER"); 29154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("ALTER TABLE favorites ADD spanY INTEGER"); 29254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Shortcuts, applications, folders 29354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("UPDATE favorites SET spanX=1, spanY=1 WHERE itemType<=0"); 29454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Photo frames, clocks 29504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville db.execSQL( 29604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville "UPDATE favorites SET spanX=2, spanY=2 WHERE itemType=1000 or itemType=1002"); 29754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Search boxes 29854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("UPDATE favorites SET spanX=4, spanY=1 WHERE itemType=1001"); 29954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.setTransactionSuccessful(); 30054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } finally { 30154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.endTransaction(); 30254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 30354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeVersion = 24; 30454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 3059bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 30654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (upgradeVersion == 24) { 30754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.beginTransaction(); 30854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 30954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // The value of the constants for preferring wifi or preferring mobile have been 31054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // swapped, so reload the default. 31154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DELETE FROM system WHERE name='network_preference'"); 31254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("INSERT INTO system ('name', 'value') values ('network_preference', '" + 31354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ConnectivityManager.DEFAULT_NETWORK_PREFERENCE + "')"); 31454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.setTransactionSuccessful(); 31554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } finally { 31654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.endTransaction(); 31754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 31854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeVersion = 25; 31954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 320f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 321f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (upgradeVersion == 25) { 322f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.beginTransaction(); 323f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project try { 324f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("ALTER TABLE favorites ADD uri TEXT"); 325f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("ALTER TABLE favorites ADD displayMode INTEGER"); 326f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.setTransactionSuccessful(); 327f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } finally { 328f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.endTransaction(); 329f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 330f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project upgradeVersion = 26; 331f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 3329bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 333f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (upgradeVersion == 26) { 334f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // This introduces the new secure settings table. 335f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.beginTransaction(); 336f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project try { 337f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project createSecureTable(db); 338f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.setTransactionSuccessful(); 339f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } finally { 340f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.endTransaction(); 341f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 342f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project upgradeVersion = 27; 343f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 3449bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 345f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (upgradeVersion == 27) { 346156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani String[] settingsToMove = { 347f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.ADB_ENABLED, 348f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.ANDROID_ID, 349f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.BLUETOOTH_ON, 350f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.DATA_ROAMING, 351f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.DEVICE_PROVISIONED, 352f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.HTTP_PROXY, 353f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.INSTALL_NON_MARKET_APPS, 354f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.LOCATION_PROVIDERS_ALLOWED, 355f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.LOGGING_ID, 356f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.NETWORK_PREFERENCE, 357f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.PARENTAL_CONTROL_ENABLED, 358f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.PARENTAL_CONTROL_LAST_UPDATE, 359f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.PARENTAL_CONTROL_REDIRECT_URL, 360f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.SETTINGS_CLASSNAME, 361f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.USB_MASS_STORAGE_ENABLED, 362f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.USE_GOOGLE_MAIL, 363f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 364f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, 365f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_NUM_OPEN_NETWORKS_KEPT, 366f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_ON, 367f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE, 368f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_AP_COUNT, 369f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS, 370f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED, 371f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS, 372f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT, 373f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_MAX_AP_CHECKS, 374f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_ON, 375f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_PING_COUNT, 376f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_PING_DELAY_MS, 377f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS, 378f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project }; 3799219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, settingsToMove, false); 380f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project upgradeVersion = 28; 381f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 3829bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 383f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (upgradeVersion == 28 || upgradeVersion == 29) { 384f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Note: The upgrade to 28 was flawed since it didn't delete the old 385f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // setting first before inserting. Combining 28 and 29 with the 386f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // fixed version. 387f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 388f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // This upgrade adds the STREAM_NOTIFICATION type to the list of 389f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // types affected by ringer modes (silent, vibrate, etc.) 390f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.beginTransaction(); 391f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project try { 392f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("DELETE FROM system WHERE name='" 393f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 394f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int newValue = (1 << AudioManager.STREAM_RING) 395f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project | (1 << AudioManager.STREAM_NOTIFICATION) 396f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project | (1 << AudioManager.STREAM_SYSTEM); 397f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("INSERT INTO system ('name', 'value') values ('" 398f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 399f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + String.valueOf(newValue) + "')"); 400f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.setTransactionSuccessful(); 401f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } finally { 402f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.endTransaction(); 403f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 4049bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 405f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project upgradeVersion = 30; 406f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 4079bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 4089266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project if (upgradeVersion == 30) { 4099266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project /* 4109266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project * Upgrade 31 clears the title for all quick launch shortcuts so the 4119266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project * activities' titles will be resolved at display time. Also, the 4129266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project * folder is changed to '@quicklaunch'. 4139266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project */ 4149266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project db.beginTransaction(); 4159266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project try { 4169266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project db.execSQL("UPDATE bookmarks SET folder = '@quicklaunch'"); 4179266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project db.execSQL("UPDATE bookmarks SET title = ''"); 4189266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project db.setTransactionSuccessful(); 4199266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project } finally { 4209266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project db.endTransaction(); 4219266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project } 4229266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project upgradeVersion = 31; 4239266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project } 424f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (upgradeVersion == 31) { 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 427ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project * Animations are now managed in preferences, and may be 428ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project * enabled or disabled based on product resources. 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.beginTransaction(); 43189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.execSQL("DELETE FROM system WHERE name='" 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Settings.System.WINDOW_ANIMATION_SCALE + "'"); 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.execSQL("DELETE FROM system WHERE name='" 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Settings.System.TRANSITION_ANIMATION_SCALE + "'"); 43789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " VALUES(?,?);"); 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadDefaultAnimationSettings(stmt); 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.setTransactionSuccessful(); 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.endTransaction(); 44389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project upgradeVersion = 32; 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (upgradeVersion == 32) { 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // The Wi-Fi watchdog SSID list is now seeded with the value of 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // the property ro.com.android.wifi-watchlist 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist"); 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!TextUtils.isEmpty(wifiWatchList)) { 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.beginTransaction(); 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.execSQL("INSERT OR IGNORE INTO secure(name,value) values('" + 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_WATCH_LIST + "','" + 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wifiWatchList + "');"); 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.setTransactionSuccessful(); 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.endTransaction(); 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project upgradeVersion = 33; 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4659bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 4664df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project if (upgradeVersion == 33) { 4674df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project // Set the default zoom controls to: tap-twice to bring up +/- 4684df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project db.beginTransaction(); 4694df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project try { 4704df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project db.execSQL("INSERT INTO system(name,value) values('zoom','2');"); 4714df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project db.setTransactionSuccessful(); 4724df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } finally { 4734df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project db.endTransaction(); 4744df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 4754df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project upgradeVersion = 34; 4764df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 478bcab8df83e6e769a7cbcc742e72b47d665998793Mike Lockwood if (upgradeVersion == 34) { 479bcab8df83e6e769a7cbcc742e72b47d665998793Mike Lockwood db.beginTransaction(); 48089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 481bcab8df83e6e769a7cbcc742e72b47d665998793Mike Lockwood try { 48289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 483cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn + " VALUES(?,?);"); 484cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn loadSecure35Settings(stmt); 485cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn db.setTransactionSuccessful(); 486cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn } finally { 487cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn db.endTransaction(); 48889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 489cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn } 490f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller upgradeVersion = 35; 49102901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood } 49202901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood // due to a botched merge from donut to eclair, the initialization of ASSISTED_GPS_ENABLED 49302901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood // was accidentally done out of order here. 49402901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood // to fix this, ASSISTED_GPS_ENABLED is now initialized while upgrading from 38 to 39, 49502901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood // and we intentionally do nothing from 35 to 36 now. 49602901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood if (upgradeVersion == 35) { 497575d1af980f4b4866325bfc487455f54606cf49eThe Android Open Source Project upgradeVersion = 36; 498cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn } 49902901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood 500a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent if (upgradeVersion == 36) { 501a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent // This upgrade adds the STREAM_SYSTEM_ENFORCED type to the list of 502a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent // types affected by ringer modes (silent, vibrate, etc.) 503a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent db.beginTransaction(); 504a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent try { 505a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent db.execSQL("DELETE FROM system WHERE name='" 506a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 507a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent int newValue = (1 << AudioManager.STREAM_RING) 508a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent | (1 << AudioManager.STREAM_NOTIFICATION) 509a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent | (1 << AudioManager.STREAM_SYSTEM) 510a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent | (1 << AudioManager.STREAM_SYSTEM_ENFORCED); 511a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent db.execSQL("INSERT INTO system ('name', 'value') values ('" 512a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 513a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent + String.valueOf(newValue) + "')"); 514a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent db.setTransactionSuccessful(); 515a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent } finally { 516a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent db.endTransaction(); 517a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent } 5184880575bacd9f49d864e8b61efca8cdeb231895cJim Miller upgradeVersion = 37; 519a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent } 520a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent 521bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood if (upgradeVersion == 37) { 522bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood db.beginTransaction(); 52389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 524bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood try { 52589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 526bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood + " VALUES(?,?);"); 527bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS, 528bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood R.string.airplane_mode_toggleable_radios); 529bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood db.setTransactionSuccessful(); 530bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood } finally { 531bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood db.endTransaction(); 53289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 533bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood } 534bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood upgradeVersion = 38; 535bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood } 536bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood 53702901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood if (upgradeVersion == 38) { 53802901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood db.beginTransaction(); 53902901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood try { 54002901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood String value = 54102901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood mContext.getResources().getBoolean(R.bool.assisted_gps_enabled) ? "1" : "0"; 54202901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood db.execSQL("INSERT OR IGNORE INTO secure(name,value) values('" + 543bdfce2ec05a3e9ca6acd6711de6133e06f2446e6Jeff Sharkey Settings.Global.ASSISTED_GPS_ENABLED + "','" + value + "');"); 54402901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood db.setTransactionSuccessful(); 54502901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood } finally { 54602901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood db.endTransaction(); 54702901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood } 54802901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood 54902901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood upgradeVersion = 39; 55002901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood } 55102901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood 552951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy if (upgradeVersion == 39) { 553f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani upgradeAutoBrightness(db); 554951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy upgradeVersion = 40; 555951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy } 556951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy 557bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn if (upgradeVersion == 40) { 558bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn /* 559bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn * All animations are now turned on by default! 560bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn */ 561bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.beginTransaction(); 56289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 563bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn try { 564bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='" 565bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn + Settings.System.WINDOW_ANIMATION_SCALE + "'"); 566bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='" 567bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn + Settings.System.TRANSITION_ANIMATION_SCALE + "'"); 56889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 569bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn + " VALUES(?,?);"); 570bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn loadDefaultAnimationSettings(stmt); 571bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.setTransactionSuccessful(); 572bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn } finally { 573bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.endTransaction(); 57489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 575bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn } 576bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn upgradeVersion = 41; 577bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn } 578bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn 579075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn if (upgradeVersion == 41) { 580075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn /* 581075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn * Initialize newly public haptic feedback setting 582075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn */ 583075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.beginTransaction(); 58489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 585075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn try { 586075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.execSQL("DELETE FROM system WHERE name='" 587075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn + Settings.System.HAPTIC_FEEDBACK_ENABLED + "'"); 58889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 589075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn + " VALUES(?,?);"); 590075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn loadDefaultHapticSettings(stmt); 591075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.setTransactionSuccessful(); 592075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } finally { 593075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.endTransaction(); 59489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 595075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } 596075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn upgradeVersion = 42; 597075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } 598075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn 599ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani if (upgradeVersion == 42) { 600ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani /* 601ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani * Initialize new notification pulse setting 602ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani */ 603ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani db.beginTransaction(); 60489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 605ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani try { 60689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 607ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani + " VALUES(?,?);"); 608ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, 609ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani R.bool.def_notification_pulse); 610ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani db.setTransactionSuccessful(); 611ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani } finally { 612ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani db.endTransaction(); 61389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 614ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani } 615ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani upgradeVersion = 43; 616ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani } 617ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani 618484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent if (upgradeVersion == 43) { 619484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent /* 620484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent * This upgrade stores bluetooth volume separately from voice volume 621484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent */ 622484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent db.beginTransaction(); 62389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 624484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent try { 62589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 626484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent + " VALUES(?,?);"); 627484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent loadSetting(stmt, Settings.System.VOLUME_BLUETOOTH_SCO, 6286156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO)); 629484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent db.setTransactionSuccessful(); 630484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent } finally { 631484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent db.endTransaction(); 63289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 633484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent } 634484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent upgradeVersion = 44; 635484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent } 636484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent 637aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker if (upgradeVersion == 44) { 638aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker /* 639aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker * Gservices was moved into vendor/google. 640aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker */ 641aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker db.execSQL("DROP TABLE IF EXISTS gservices"); 642aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker db.execSQL("DROP INDEX IF EXISTS gservicesIndex1"); 643aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker upgradeVersion = 45; 644aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker } 64587734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat 64687734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat if (upgradeVersion == 45) { 64787734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat /* 64887734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat * New settings for MountService 64987734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat */ 65087734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.beginTransaction(); 65187734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat try { 65287734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 65387734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND + "','1');"); 65487734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 65587734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_UMS_AUTOSTART + "','0');"); 65687734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 65787734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_UMS_PROMPT + "','1');"); 65887734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 65987734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED + "','1');"); 66087734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.setTransactionSuccessful(); 66187734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat } finally { 66287734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.endTransaction(); 66387734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat } 66487734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat upgradeVersion = 46; 66587734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat } 66687734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat 667df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn if (upgradeVersion == 46) { 668df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn /* 669df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn * The password mode constants have changed; reset back to no 670df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn * password. 671df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn */ 672df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.beginTransaction(); 673df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn try { 674df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';"); 675df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.setTransactionSuccessful(); 676df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn } finally { 677df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.endTransaction(); 678df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn } 679df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn upgradeVersion = 47; 680df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn } 681df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn 6826176677e01964cb5751ff217c091571ce6a8b5fbJim Miller 6839327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn if (upgradeVersion == 47) { 6849327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn /* 6859327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn * The password mode constants have changed again; reset back to no 6869327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn * password. 6879327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn */ 6889327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.beginTransaction(); 6899327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn try { 6909327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';"); 6919327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.setTransactionSuccessful(); 6929327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn } finally { 6939327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.endTransaction(); 6949327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn } 6959327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn upgradeVersion = 48; 6969327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn } 6976176677e01964cb5751ff217c091571ce6a8b5fbJim Miller 6985d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau if (upgradeVersion == 48) { 6995d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau /* 70021f1bd17b2dfe361acbb28453b3f3b1a110932faDianne Hackborn * Default recognition service no longer initialized here, 70121f1bd17b2dfe361acbb28453b3f3b1a110932faDianne Hackborn * moved to RecognitionManagerService. 7025d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau */ 7035d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau upgradeVersion = 49; 7045d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau } 70531f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller 7060e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler if (upgradeVersion == 49) { 7070e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler /* 7080e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler * New settings for new user interface noises. 7090e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler */ 7100e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler db.beginTransaction(); 71189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 7120e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler try { 71389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 7140e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler + " VALUES(?,?);"); 7150e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadUISoundEffectsSettings(stmt); 7160e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler db.setTransactionSuccessful(); 7170e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } finally { 7180e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler db.endTransaction(); 71989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 7200e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } 7210e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 7220e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler upgradeVersion = 50; 7230e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } 7240e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 725f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor if (upgradeVersion == 50) { 726f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor /* 72740e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu * Install location no longer initiated here. 728f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor */ 729f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor upgradeVersion = 51; 730f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor } 731f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor 732156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani if (upgradeVersion == 51) { 733156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani /* Move the lockscreen related settings to Secure, including some private ones. */ 734156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani String[] settingsToMove = { 735156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani Secure.LOCK_PATTERN_ENABLED, 736156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani Secure.LOCK_PATTERN_VISIBLE, 737156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED, 738156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.password_type", 739156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.lockoutattemptdeadline", 740156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.patterneverchosen", 741156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lock_pattern_autolock", 742156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.lockedoutpermanently", 743156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.password_salt" 744156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani }; 7459219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, settingsToMove, false); 746156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani upgradeVersion = 52; 747156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 748156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 7491c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler if (upgradeVersion == 52) { 7501c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler // new vibration/silent mode settings 7511c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler db.beginTransaction(); 75289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 7531c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler try { 75489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 7551c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler + " VALUES(?,?);"); 7561c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT, 7571c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler R.bool.def_vibrate_in_silent); 7581c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler db.setTransactionSuccessful(); 7591c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler } finally { 7601c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler db.endTransaction(); 76189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 7621c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler } 7631c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler 7641c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler upgradeVersion = 53; 7651c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler } 7663c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 767089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu if (upgradeVersion == 53) { 768089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu /* 76940e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu * New settings for set install location UI no longer initiated here. 770089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu */ 771089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu upgradeVersion = 54; 772089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu } 7731c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler 774b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani if (upgradeVersion == 54) { 775b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani /* 776b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani * Update the screen timeout value if set to never 777b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani */ 778b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani db.beginTransaction(); 779b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani try { 780b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani upgradeScreenTimeoutFromNever(db); 781b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani db.setTransactionSuccessful(); 782b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } finally { 783b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani db.endTransaction(); 784b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 785b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 786b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani upgradeVersion = 55; 787b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 788b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 78940e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu if (upgradeVersion == 55) { 79040e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu /* Move the install location settings. */ 79140e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu String[] settingsToMove = { 792625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Global.SET_INSTALL_LOCATION, 793625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Global.DEFAULT_INSTALL_LOCATION 79440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu }; 7959219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, settingsToMove, false); 79640e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu db.beginTransaction(); 79740e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu SQLiteStatement stmt = null; 79840e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu try { 79940e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu stmt = db.compileStatement("INSERT INTO system(name,value)" 80040e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu + " VALUES(?,?);"); 801625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey loadSetting(stmt, Global.SET_INSTALL_LOCATION, 0); 802625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey loadSetting(stmt, Global.DEFAULT_INSTALL_LOCATION, 80340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu PackageHelper.APP_INSTALL_AUTO); 80440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu db.setTransactionSuccessful(); 80540e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu } finally { 80640e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu db.endTransaction(); 80740e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu if (stmt != null) stmt.close(); 80840e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu } 80940e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu upgradeVersion = 56; 81040e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu } 8116659284d68bb04539891456700c8da2d0bae7d09Jake Hamby 8126659284d68bb04539891456700c8da2d0bae7d09Jake Hamby if (upgradeVersion == 56) { 8136659284d68bb04539891456700c8da2d0bae7d09Jake Hamby /* 8146659284d68bb04539891456700c8da2d0bae7d09Jake Hamby * Add Bluetooth to list of toggleable radios in airplane mode 8156659284d68bb04539891456700c8da2d0bae7d09Jake Hamby */ 8166659284d68bb04539891456700c8da2d0bae7d09Jake Hamby db.beginTransaction(); 8176659284d68bb04539891456700c8da2d0bae7d09Jake Hamby SQLiteStatement stmt = null; 8186659284d68bb04539891456700c8da2d0bae7d09Jake Hamby try { 8196659284d68bb04539891456700c8da2d0bae7d09Jake Hamby db.execSQL("DELETE FROM system WHERE name='" 8206659284d68bb04539891456700c8da2d0bae7d09Jake Hamby + Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS + "'"); 8216659284d68bb04539891456700c8da2d0bae7d09Jake Hamby stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 8226659284d68bb04539891456700c8da2d0bae7d09Jake Hamby + " VALUES(?,?);"); 8236659284d68bb04539891456700c8da2d0bae7d09Jake Hamby loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS, 8246659284d68bb04539891456700c8da2d0bae7d09Jake Hamby R.string.airplane_mode_toggleable_radios); 8256659284d68bb04539891456700c8da2d0bae7d09Jake Hamby db.setTransactionSuccessful(); 8266659284d68bb04539891456700c8da2d0bae7d09Jake Hamby } finally { 8276659284d68bb04539891456700c8da2d0bae7d09Jake Hamby db.endTransaction(); 8286659284d68bb04539891456700c8da2d0bae7d09Jake Hamby if (stmt != null) stmt.close(); 8296659284d68bb04539891456700c8da2d0bae7d09Jake Hamby } 8306659284d68bb04539891456700c8da2d0bae7d09Jake Hamby upgradeVersion = 57; 8316659284d68bb04539891456700c8da2d0bae7d09Jake Hamby } 832585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov 8335cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani /************* The following are Honeycomb changes ************/ 8345cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani 835585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov if (upgradeVersion == 57) { 836585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov /* 837585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov * New settings to: 838585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov * 1. Enable injection of accessibility scripts in WebViews. 839585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov * 2. Define the key bindings for traversing web content in WebViews. 840585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov */ 841585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov db.beginTransaction(); 842585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov SQLiteStatement stmt = null; 843585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov try { 844585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value)" 845585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov + " VALUES(?,?);"); 846585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 847585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov R.bool.def_accessibility_script_injection); 848585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov stmt.close(); 849585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value)" 850585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov + " VALUES(?,?);"); 851585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS, 852585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov R.string.def_accessibility_web_content_key_bindings); 853585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov db.setTransactionSuccessful(); 854585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov } finally { 855585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov db.endTransaction(); 856585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov if (stmt != null) stmt.close(); 857585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov } 858585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov upgradeVersion = 58; 859585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov } 860585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov 861ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani if (upgradeVersion == 58) { 862ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani /* Add default for new Auto Time Zone */ 8635cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani int autoTimeValue = getIntValueFromSystem(db, Settings.System.AUTO_TIME, 0); 864ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani db.beginTransaction(); 865ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani SQLiteStatement stmt = null; 866ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani try { 8675cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);"); 8685cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani loadSetting(stmt, Settings.System.AUTO_TIME_ZONE, 8695cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani autoTimeValue); // Sync timezone to NITZ if auto_time was enabled 870ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani db.setTransactionSuccessful(); 871ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani } finally { 872ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani db.endTransaction(); 873ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani if (stmt != null) stmt.close(); 874ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani } 875ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani upgradeVersion = 59; 876ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani } 877ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani 878b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler if (upgradeVersion == 59) { 879b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler // Persistence for the rotation lock feature. 880b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler db.beginTransaction(); 881b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler SQLiteStatement stmt = null; 882b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler try { 883b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler stmt = db.compileStatement("INSERT INTO system(name,value)" 884b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler + " VALUES(?,?);"); 885b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler loadBooleanSetting(stmt, Settings.System.USER_ROTATION, 886b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler R.integer.def_user_rotation); // should be zero degrees 887b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler db.setTransactionSuccessful(); 888b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler } finally { 889b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler db.endTransaction(); 890b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler if (stmt != null) stmt.close(); 891b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler } 892b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler upgradeVersion = 60; 893b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler } 894b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler 8950038931043f8edf9c32645e5caf96f217cef01deAmith Yamasani if (upgradeVersion == 60) { 8965cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Don't do this for upgrades from Gingerbread 8975cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Were only required for intra-Honeycomb upgrades for testing 8985cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // upgradeScreenTimeout(db); 8990038931043f8edf9c32645e5caf96f217cef01deAmith Yamasani upgradeVersion = 61; 9000038931043f8edf9c32645e5caf96f217cef01deAmith Yamasani } 9010038931043f8edf9c32645e5caf96f217cef01deAmith Yamasani 90279373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani if (upgradeVersion == 61) { 9035cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Don't do this for upgrades from Gingerbread 9045cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Were only required for intra-Honeycomb upgrades for testing 9055cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // upgradeScreenTimeout(db); 90679373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani upgradeVersion = 62; 90779373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani } 90879373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani 909f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani // Change the default for screen auto-brightness mode 910f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani if (upgradeVersion == 62) { 9115cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Don't do this for upgrades from Gingerbread 9125cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Were only required for intra-Honeycomb upgrades for testing 9135cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // upgradeAutoBrightness(db); 914f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani upgradeVersion = 63; 915f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani } 916f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani 91725101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent if (upgradeVersion == 63) { 91825101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent // This upgrade adds the STREAM_MUSIC type to the list of 91925101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent // types affected by ringer modes (silent, vibrate, etc.) 92025101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent db.beginTransaction(); 92125101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent try { 92225101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent db.execSQL("DELETE FROM system WHERE name='" 92325101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 92425101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent int newValue = (1 << AudioManager.STREAM_RING) 92525101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent | (1 << AudioManager.STREAM_NOTIFICATION) 92625101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent | (1 << AudioManager.STREAM_SYSTEM) 92725101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent | (1 << AudioManager.STREAM_SYSTEM_ENFORCED) 92825101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent | (1 << AudioManager.STREAM_MUSIC); 92925101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent db.execSQL("INSERT INTO system ('name', 'value') values ('" 93025101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 93125101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent + String.valueOf(newValue) + "')"); 93225101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent db.setTransactionSuccessful(); 93325101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent } finally { 93425101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent db.endTransaction(); 93525101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent } 93625101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent upgradeVersion = 64; 93725101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent } 93825101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent 93954d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov if (upgradeVersion == 64) { 94054d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov // New setting to configure the long press timeout. 94154d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov db.beginTransaction(); 94254d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov SQLiteStatement stmt = null; 94354d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov try { 94454d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value)" 94554d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov + " VALUES(?,?);"); 94654d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov loadIntegerSetting(stmt, Settings.Secure.LONG_PRESS_TIMEOUT, 94754d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov R.integer.def_long_press_timeout_millis); 94854d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov stmt.close(); 94954d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov db.setTransactionSuccessful(); 95054d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov } finally { 95154d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov db.endTransaction(); 95254d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov if (stmt != null) stmt.close(); 95354d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov } 95454d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov upgradeVersion = 65; 95554d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov } 95654d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov 9575cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani /************* The following are Ice Cream Sandwich changes ************/ 9585cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani 959fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne if (upgradeVersion == 65) { 960fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne /* 961fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne * Animations are removed from Settings. Turned on by default 962fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne */ 963fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne db.beginTransaction(); 964fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne SQLiteStatement stmt = null; 965fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne try { 966fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne db.execSQL("DELETE FROM system WHERE name='" 967fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne + Settings.System.WINDOW_ANIMATION_SCALE + "'"); 968fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne db.execSQL("DELETE FROM system WHERE name='" 969fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne + Settings.System.TRANSITION_ANIMATION_SCALE + "'"); 970fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne stmt = db.compileStatement("INSERT INTO system(name,value)" 971fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne + " VALUES(?,?);"); 972fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne loadDefaultAnimationSettings(stmt); 973fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne db.setTransactionSuccessful(); 974fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne } finally { 975fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne db.endTransaction(); 976fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne if (stmt != null) stmt.close(); 977fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne } 978fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne upgradeVersion = 66; 979fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne } 980fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne 981c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent if (upgradeVersion == 66) { 98242722bfa136f5616872a2c4e199813e804621c81Amith Yamasani // This upgrade makes sure that MODE_RINGER_STREAMS_AFFECTED is set 98342722bfa136f5616872a2c4e199813e804621c81Amith Yamasani // according to device voice capability 98442722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.beginTransaction(); 98542722bfa136f5616872a2c4e199813e804621c81Amith Yamasani try { 98642722bfa136f5616872a2c4e199813e804621c81Amith Yamasani int ringerModeAffectedStreams = (1 << AudioManager.STREAM_RING) | 98742722bfa136f5616872a2c4e199813e804621c81Amith Yamasani (1 << AudioManager.STREAM_NOTIFICATION) | 98842722bfa136f5616872a2c4e199813e804621c81Amith Yamasani (1 << AudioManager.STREAM_SYSTEM) | 98942722bfa136f5616872a2c4e199813e804621c81Amith Yamasani (1 << AudioManager.STREAM_SYSTEM_ENFORCED); 99042722bfa136f5616872a2c4e199813e804621c81Amith Yamasani if (!mContext.getResources().getBoolean( 99142722bfa136f5616872a2c4e199813e804621c81Amith Yamasani com.android.internal.R.bool.config_voice_capable)) { 99242722bfa136f5616872a2c4e199813e804621c81Amith Yamasani ringerModeAffectedStreams |= (1 << AudioManager.STREAM_MUSIC); 99342722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } 99442722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.execSQL("DELETE FROM system WHERE name='" 99542722bfa136f5616872a2c4e199813e804621c81Amith Yamasani + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 99642722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.execSQL("INSERT INTO system ('name', 'value') values ('" 99742722bfa136f5616872a2c4e199813e804621c81Amith Yamasani + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 99842722bfa136f5616872a2c4e199813e804621c81Amith Yamasani + String.valueOf(ringerModeAffectedStreams) + "')"); 99942722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.setTransactionSuccessful(); 100042722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } finally { 100142722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.endTransaction(); 100242722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } 100342722bfa136f5616872a2c4e199813e804621c81Amith Yamasani upgradeVersion = 67; 100442722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } 1005c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent 1006a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov if (upgradeVersion == 67) { 1007a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov // New setting to enable touch exploration. 1008a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov db.beginTransaction(); 1009a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov SQLiteStatement stmt = null; 1010a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov try { 1011a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value)" 1012a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov + " VALUES(?,?);"); 1013a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 1014a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov R.bool.def_touch_exploration_enabled); 1015a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov stmt.close(); 1016a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov db.setTransactionSuccessful(); 1017a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov } finally { 1018a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov db.endTransaction(); 1019a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov if (stmt != null) stmt.close(); 1020a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov } 1021a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov upgradeVersion = 68; 1022a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov } 1023a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov 102442722bfa136f5616872a2c4e199813e804621c81Amith Yamasani if (upgradeVersion == 68) { 102542722bfa136f5616872a2c4e199813e804621c81Amith Yamasani // Enable all system sounds by default 102642722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.beginTransaction(); 102742722bfa136f5616872a2c4e199813e804621c81Amith Yamasani try { 102842722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.execSQL("DELETE FROM system WHERE name='" 102942722bfa136f5616872a2c4e199813e804621c81Amith Yamasani + Settings.System.NOTIFICATIONS_USE_RING_VOLUME + "'"); 103042722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.setTransactionSuccessful(); 103142722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } finally { 103242722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.endTransaction(); 103342722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } 103442722bfa136f5616872a2c4e199813e804621c81Amith Yamasani upgradeVersion = 69; 103542722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } 1036a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov 10378d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly if (upgradeVersion == 69) { 10388d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly // Add RADIO_NFC to AIRPLANE_MODE_RADIO and AIRPLANE_MODE_TOGGLEABLE_RADIOS 10398d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly String airplaneRadios = mContext.getResources().getString( 10408d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly R.string.def_airplane_mode_radios); 10418d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly String toggleableRadios = mContext.getResources().getString( 10428d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly R.string.airplane_mode_toggleable_radios); 10438d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly db.beginTransaction(); 10448d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly try { 10458d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly db.execSQL("UPDATE system SET value='" + airplaneRadios + "' " + 10468d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly "WHERE name='" + Settings.System.AIRPLANE_MODE_RADIOS + "'"); 10478d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly db.execSQL("UPDATE system SET value='" + toggleableRadios + "' " + 10488d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly "WHERE name='" + Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS + "'"); 10498d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly db.setTransactionSuccessful(); 10508d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly } finally { 10518d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly db.endTransaction(); 10528d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly } 10538d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly upgradeVersion = 70; 10548d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly } 10558d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly 10566651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown if (upgradeVersion == 70) { 10576651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown // Update all built-in bookmarks. Some of the package names have changed. 10586651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown loadBookmarks(db); 10596651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown upgradeVersion = 71; 10606651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } 10616651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown 106255f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov if (upgradeVersion == 71) { 106355f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov // New setting to specify whether to speak passwords in accessibility mode. 106455f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov db.beginTransaction(); 106555f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov SQLiteStatement stmt = null; 106655f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov try { 106755f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value)" 106855f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov + " VALUES(?,?);"); 106955f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, 107055f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov R.bool.def_accessibility_speak_password); 10716243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani db.setTransactionSuccessful(); 107255f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov } finally { 107355f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov db.endTransaction(); 107455f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov if (stmt != null) stmt.close(); 107555f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov } 107655f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov upgradeVersion = 72; 107755f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov } 107855f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov 10796243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani if (upgradeVersion == 72) { 10806243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani // update vibration settings 10816243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani db.beginTransaction(); 10826243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani SQLiteStatement stmt = null; 10836243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani try { 10846243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 10856243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani + " VALUES(?,?);"); 10866243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT, 10876243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani R.bool.def_vibrate_in_silent); 10886243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani db.setTransactionSuccessful(); 10896243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani } finally { 10906243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani db.endTransaction(); 10916243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani if (stmt != null) stmt.close(); 10926243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani } 10936243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani upgradeVersion = 73; 10946243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani } 10956243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani 10963ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov if (upgradeVersion == 73) { 1097398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani upgradeVibrateSettingFromNone(db); 1098398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani upgradeVersion = 74; 1099398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani } 1100398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani 1101398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani if (upgradeVersion == 74) { 11023ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov // URL from which WebView loads a JavaScript based screen-reader. 11033ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov db.beginTransaction(); 11043ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov SQLiteStatement stmt = null; 11053ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov try { 11063ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);"); 11073ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL, 11083ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov R.string.def_accessibility_screen_reader_url); 11093ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov db.setTransactionSuccessful(); 11103ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov } finally { 11113ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov db.endTransaction(); 11123ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov if (stmt != null) stmt.close(); 11133ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov } 1114398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani upgradeVersion = 75; 11153ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov } 11167bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood if (upgradeVersion == 75) { 11177bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood db.beginTransaction(); 11187bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood SQLiteStatement stmt = null; 11197bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood Cursor c = null; 11207bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood try { 112106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate c = db.query(TABLE_SECURE, new String[] {"_id", "value"}, 11227bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood "name='lockscreen.disabled'", 11237bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood null, null, null, null); 11247bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood // only set default if it has not yet been set 11257bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood if (c == null || c.getCount() == 0) { 11267bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood stmt = db.compileStatement("INSERT INTO system(name,value)" 11277bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood + " VALUES(?,?);"); 11287bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood loadBooleanSetting(stmt, Settings.System.LOCKSCREEN_DISABLED, 11297bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood R.bool.def_lockscreen_disabled); 11307bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood } 11317bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood db.setTransactionSuccessful(); 11327bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood } finally { 11337bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood db.endTransaction(); 11347bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood if (c != null) c.close(); 11357bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood if (stmt != null) stmt.close(); 11367bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood } 11377bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood upgradeVersion = 76; 11387bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood } 11393ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov 1140bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent /************* The following are Jelly Bean changes ************/ 1141bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent 1142bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent if (upgradeVersion == 76) { 1143bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent // Removed VIBRATE_IN_SILENT setting 1144bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent db.beginTransaction(); 1145bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent try { 1146bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent db.execSQL("DELETE FROM system WHERE name='" 1147bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent + Settings.System.VIBRATE_IN_SILENT + "'"); 1148bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent db.setTransactionSuccessful(); 1149bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent } finally { 1150bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent db.endTransaction(); 1151bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent } 1152bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent 1153bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent upgradeVersion = 77; 1154bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent } 1155bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent 11563c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa if (upgradeVersion == 77) { 11573c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa // Introduce "vibrate when ringing" setting 11583c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa loadVibrateWhenRingingSetting(db); 11593c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 11603c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa upgradeVersion = 78; 11613c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa } 1162bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent 11633a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv if (upgradeVersion == 78) { 11643a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv // The JavaScript based screen-reader URL changes in JellyBean. 11653a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv db.beginTransaction(); 11663a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv SQLiteStatement stmt = null; 11673a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv try { 11683a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" 11693a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv + " VALUES(?,?);"); 11703a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL, 11713a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv R.string.def_accessibility_screen_reader_url); 11723a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv db.setTransactionSuccessful(); 11733a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv } finally { 11743a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv db.endTransaction(); 11753a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv if (stmt != null) stmt.close(); 11763a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv } 11773a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv upgradeVersion = 79; 11783a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv } 11793a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv 11808631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov if (upgradeVersion == 79) { 11818631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // Before touch exploration was a global setting controlled by the user 11828631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // via the UI. However, if the enabled accessibility services do not 11838631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // handle touch exploration mode, enabling it makes no sense. Therefore, 11848631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // now the services request touch exploration mode and the user is 11858631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // presented with a dialog to allow that and if she does we store that 11868631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // in the database. As a result of this change a user that has enabled 11878631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // accessibility, touch exploration, and some accessibility services 11888631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // may lose touch exploration state, thus rendering the device useless 11898631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // unless sighted help is provided, since the enabled service(s) are 11908631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // not in the list of services to which the user granted a permission 11918631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // to put the device in touch explore mode. Here we are allowing all 11928631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // enabled accessibility services to toggle touch exploration provided 11938631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // accessibility and touch exploration are enabled and no services can 11948631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // toggle touch exploration. Note that the user has already manually 11958631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // enabled the services and touch exploration which means the she has 11968631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // given consent to have these services work in touch exploration mode. 119706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate final boolean accessibilityEnabled = getIntValueFromTable(db, TABLE_SECURE, 11988631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1; 119906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate final boolean touchExplorationEnabled = getIntValueFromTable(db, TABLE_SECURE, 12008631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0) == 1; 12018631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov if (accessibilityEnabled && touchExplorationEnabled) { 120206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate String enabledServices = getStringValueFromTable(db, TABLE_SECURE, 12038631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, ""); 120406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate String touchExplorationGrantedServices = getStringValueFromTable(db, TABLE_SECURE, 12058631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, ""); 12068631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov if (TextUtils.isEmpty(touchExplorationGrantedServices) 12078631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov && !TextUtils.isEmpty(enabledServices)) { 12088631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov SQLiteStatement stmt = null; 12098631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov try { 12108631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov db.beginTransaction(); 12118631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" 12128631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov + " VALUES(?,?);"); 12138631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov loadSetting(stmt, 12148631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, 12158631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov enabledServices); 12168631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov db.setTransactionSuccessful(); 12178631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } finally { 12188631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov db.endTransaction(); 12198631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov if (stmt != null) stmt.close(); 12208631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 12218631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 12228631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 12238631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov upgradeVersion = 80; 12248631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 12258631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov 1226fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler // vvv Jelly Bean MR1 changes begin here vvv 1227fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler 1228ca34bcf6746454c561b0c07ca5c6e42bd4a73e9eSvetoslav Ganov if (upgradeVersion == 80) { 1229fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler // update screensaver settings 1230fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler db.beginTransaction(); 1231fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler SQLiteStatement stmt = null; 1232fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler try { 1233fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" 1234fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler + " VALUES(?,?);"); 1235fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ENABLED, 1236ed108f3d125b0a4cc465057e3514caf781cdea19John Spurlock com.android.internal.R.bool.config_dreamsEnabledByDefault); 1237fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 1238ed108f3d125b0a4cc465057e3514caf781cdea19John Spurlock com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault); 12391a868b7981ca5f52e893fdf9f8f538c9d5ce241dJohn Spurlock loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 1240ed108f3d125b0a4cc465057e3514caf781cdea19John Spurlock com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault); 12411a868b7981ca5f52e893fdf9f8f538c9d5ce241dJohn Spurlock loadStringSetting(stmt, Settings.Secure.SCREENSAVER_COMPONENTS, 1242ed108f3d125b0a4cc465057e3514caf781cdea19John Spurlock com.android.internal.R.string.config_dreamsDefaultComponent); 1243ed108f3d125b0a4cc465057e3514caf781cdea19John Spurlock loadStringSetting(stmt, Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT, 1244ed108f3d125b0a4cc465057e3514caf781cdea19John Spurlock com.android.internal.R.string.config_dreamsDefaultComponent); 124506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 1246fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler db.setTransactionSuccessful(); 1247fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler } finally { 1248fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler db.endTransaction(); 1249fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler if (stmt != null) stmt.close(); 1250fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler } 1251ca34bcf6746454c561b0c07ca5c6e42bd4a73e9eSvetoslav Ganov upgradeVersion = 81; 1252fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler } 1253fdb7c36a108e6a7887de6611b3f1541e3009f2d5Daniel Sandler 125416e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings if (upgradeVersion == 81) { 125516e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings // Add package verification setting 125616e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings db.beginTransaction(); 125716e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings SQLiteStatement stmt = null; 125816e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings try { 125916e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" 126016e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings + " VALUES(?,?);"); 1261bdfce2ec05a3e9ca6acd6711de6133e06f2446e6Jeff Sharkey loadBooleanSetting(stmt, Settings.Global.PACKAGE_VERIFIER_ENABLE, 126216e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings R.bool.def_package_verifier_enable); 126316e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings db.setTransactionSuccessful(); 126416e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings } finally { 126516e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings db.endTransaction(); 126616e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings if (stmt != null) stmt.close(); 126716e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings } 126816e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings upgradeVersion = 82; 126916e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings } 127016e119e798cd1e6dd94114bc910b2c1fd92b88e5rich cannings 127106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate if (upgradeVersion == 82) { 127206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate // Move to per-user settings dbs 127343765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 127406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 127559c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.beginTransaction(); 127659c5beec64af8ea20509998230b7b1de496702f6Christopher Tate SQLiteStatement stmt = null; 127759c5beec64af8ea20509998230b7b1de496702f6Christopher Tate try { 127859c5beec64af8ea20509998230b7b1de496702f6Christopher Tate // Migrate now-global settings. Note that this happens before 127959c5beec64af8ea20509998230b7b1de496702f6Christopher Tate // new users can be created. 128059c5beec64af8ea20509998230b7b1de496702f6Christopher Tate createGlobalTable(db); 1281683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav String[] settingsToMove = setToStringArray( 1282683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav SettingsProvider.sSystemMovedToGlobalSettings); 128359c5beec64af8ea20509998230b7b1de496702f6Christopher Tate moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, false); 1284683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav settingsToMove = setToStringArray( 1285683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav SettingsProvider.sSecureMovedToGlobalSettings); 128659c5beec64af8ea20509998230b7b1de496702f6Christopher Tate moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, false); 128759c5beec64af8ea20509998230b7b1de496702f6Christopher Tate 128859c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.setTransactionSuccessful(); 128959c5beec64af8ea20509998230b7b1de496702f6Christopher Tate } finally { 129059c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.endTransaction(); 129159c5beec64af8ea20509998230b7b1de496702f6Christopher Tate if (stmt != null) stmt.close(); 129259c5beec64af8ea20509998230b7b1de496702f6Christopher Tate } 129306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } 129406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate upgradeVersion = 83; 129506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } 129606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 12971cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov if (upgradeVersion == 83) { 12981cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov // 1. Setting whether screen magnification is enabled. 12991cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov // 2. Setting for screen magnification scale. 13001cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov // 3. Setting for screen magnification auto update. 13011cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov db.beginTransaction(); 13021cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov SQLiteStatement stmt = null; 13031cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov try { 13041cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);"); 13051cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov loadBooleanSetting(stmt, 13061cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 13071cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov R.bool.def_accessibility_display_magnification_enabled); 13081cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov stmt.close(); 13091cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);"); 13101cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov loadFractionSetting(stmt, Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, 13111cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov R.fraction.def_accessibility_display_magnification_scale, 1); 13121cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov stmt.close(); 13131cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);"); 13141cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov loadBooleanSetting(stmt, 13151cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE, 13161cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov R.bool.def_accessibility_display_magnification_auto_update); 13171a9c0dfdbbeba1bc498170be283394ba3e0e9752Christopher Tate 13181a9c0dfdbbeba1bc498170be283394ba3e0e9752Christopher Tate db.setTransactionSuccessful(); 13191cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov } finally { 13201cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov db.endTransaction(); 13211cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov if (stmt != null) stmt.close(); 13221cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov } 13231cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov upgradeVersion = 84; 13241cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov } 13251cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov 13261a9c0dfdbbeba1bc498170be283394ba3e0e9752Christopher Tate if (upgradeVersion == 84) { 132743765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 132859c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.beginTransaction(); 132959c5beec64af8ea20509998230b7b1de496702f6Christopher Tate SQLiteStatement stmt = null; 133059c5beec64af8ea20509998230b7b1de496702f6Christopher Tate try { 133159c5beec64af8ea20509998230b7b1de496702f6Christopher Tate // Patch up the slightly-wrong key migration from 82 -> 83 for those 133259c5beec64af8ea20509998230b7b1de496702f6Christopher Tate // devices that missed it, ignoring if the move is redundant 133359c5beec64af8ea20509998230b7b1de496702f6Christopher Tate String[] settingsToMove = { 133459c5beec64af8ea20509998230b7b1de496702f6Christopher Tate Settings.Secure.ADB_ENABLED, 133559c5beec64af8ea20509998230b7b1de496702f6Christopher Tate Settings.Secure.BLUETOOTH_ON, 133659c5beec64af8ea20509998230b7b1de496702f6Christopher Tate Settings.Secure.DATA_ROAMING, 133759c5beec64af8ea20509998230b7b1de496702f6Christopher Tate Settings.Secure.DEVICE_PROVISIONED, 133859c5beec64af8ea20509998230b7b1de496702f6Christopher Tate Settings.Secure.INSTALL_NON_MARKET_APPS, 133959c5beec64af8ea20509998230b7b1de496702f6Christopher Tate Settings.Secure.USB_MASS_STORAGE_ENABLED 134059c5beec64af8ea20509998230b7b1de496702f6Christopher Tate }; 134159c5beec64af8ea20509998230b7b1de496702f6Christopher Tate moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 134259c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.setTransactionSuccessful(); 134359c5beec64af8ea20509998230b7b1de496702f6Christopher Tate } finally { 134459c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.endTransaction(); 134559c5beec64af8ea20509998230b7b1de496702f6Christopher Tate if (stmt != null) stmt.close(); 134659c5beec64af8ea20509998230b7b1de496702f6Christopher Tate } 13471a9c0dfdbbeba1bc498170be283394ba3e0e9752Christopher Tate } 13481a9c0dfdbbeba1bc498170be283394ba3e0e9752Christopher Tate upgradeVersion = 85; 13491a9c0dfdbbeba1bc498170be283394ba3e0e9752Christopher Tate } 13501a9c0dfdbbeba1bc498170be283394ba3e0e9752Christopher Tate 13519219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate if (upgradeVersion == 85) { 135243765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 135359c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.beginTransaction(); 135459c5beec64af8ea20509998230b7b1de496702f6Christopher Tate try { 135559c5beec64af8ea20509998230b7b1de496702f6Christopher Tate // Fix up the migration, ignoring already-migrated elements, to snap up to 135659c5beec64af8ea20509998230b7b1de496702f6Christopher Tate // date with new changes to the set of global versus system/secure settings 135759c5beec64af8ea20509998230b7b1de496702f6Christopher Tate String[] settingsToMove = { Settings.System.STAY_ON_WHILE_PLUGGED_IN }; 135859c5beec64af8ea20509998230b7b1de496702f6Christopher Tate moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, true); 13599219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate 136059c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.setTransactionSuccessful(); 136159c5beec64af8ea20509998230b7b1de496702f6Christopher Tate } finally { 136259c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.endTransaction(); 136359c5beec64af8ea20509998230b7b1de496702f6Christopher Tate } 13649219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate } 13659219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate upgradeVersion = 86; 13669219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate } 13679219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate 13684d8fc793f044cf2c857ac72ebe51641b8e6c413drich cannings if (upgradeVersion == 86) { 136943765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 137059c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.beginTransaction(); 137159c5beec64af8ea20509998230b7b1de496702f6Christopher Tate try { 137259c5beec64af8ea20509998230b7b1de496702f6Christopher Tate String[] settingsToMove = { 1373bdfce2ec05a3e9ca6acd6711de6133e06f2446e6Jeff Sharkey Settings.Global.PACKAGE_VERIFIER_ENABLE, 1374bdfce2ec05a3e9ca6acd6711de6133e06f2446e6Jeff Sharkey Settings.Global.PACKAGE_VERIFIER_TIMEOUT, 1375bdfce2ec05a3e9ca6acd6711de6133e06f2446e6Jeff Sharkey Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE 137659c5beec64af8ea20509998230b7b1de496702f6Christopher Tate }; 137759c5beec64af8ea20509998230b7b1de496702f6Christopher Tate moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 13784d8fc793f044cf2c857ac72ebe51641b8e6c413drich cannings 137959c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.setTransactionSuccessful(); 138059c5beec64af8ea20509998230b7b1de496702f6Christopher Tate } finally { 138159c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.endTransaction(); 138259c5beec64af8ea20509998230b7b1de496702f6Christopher Tate } 13834d8fc793f044cf2c857ac72ebe51641b8e6c413drich cannings } 13844d8fc793f044cf2c857ac72ebe51641b8e6c413drich cannings upgradeVersion = 87; 13854d8fc793f044cf2c857ac72ebe51641b8e6c413drich cannings } 13864d8fc793f044cf2c857ac72ebe51641b8e6c413drich cannings 1387c868b645b46685574955eaff9f8d46d9262a3357Christopher Tate if (upgradeVersion == 87) { 138843765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 138959c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.beginTransaction(); 139059c5beec64af8ea20509998230b7b1de496702f6Christopher Tate try { 139159c5beec64af8ea20509998230b7b1de496702f6Christopher Tate String[] settingsToMove = { 1392bdfce2ec05a3e9ca6acd6711de6133e06f2446e6Jeff Sharkey Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS, 1393bdfce2ec05a3e9ca6acd6711de6133e06f2446e6Jeff Sharkey Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS, 1394bdfce2ec05a3e9ca6acd6711de6133e06f2446e6Jeff Sharkey Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS 139559c5beec64af8ea20509998230b7b1de496702f6Christopher Tate }; 139659c5beec64af8ea20509998230b7b1de496702f6Christopher Tate moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 1397c868b645b46685574955eaff9f8d46d9262a3357Christopher Tate 139859c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.setTransactionSuccessful(); 139959c5beec64af8ea20509998230b7b1de496702f6Christopher Tate } finally { 140059c5beec64af8ea20509998230b7b1de496702f6Christopher Tate db.endTransaction(); 140159c5beec64af8ea20509998230b7b1de496702f6Christopher Tate } 1402c868b645b46685574955eaff9f8d46d9262a3357Christopher Tate } 1403c868b645b46685574955eaff9f8d46d9262a3357Christopher Tate upgradeVersion = 88; 1404c868b645b46685574955eaff9f8d46d9262a3357Christopher Tate } 1405c868b645b46685574955eaff9f8d46d9262a3357Christopher Tate 1406625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey if (upgradeVersion == 88) { 140743765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 1408625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey db.beginTransaction(); 1409625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey try { 1410625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey String[] settingsToMove = { 1411625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD, 1412625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.BATTERY_DISCHARGE_THRESHOLD, 1413625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.SEND_ACTION_APP_ERROR, 1414625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.DROPBOX_AGE_SECONDS, 1415625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.DROPBOX_MAX_FILES, 1416625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.DROPBOX_QUOTA_KB, 1417625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.DROPBOX_QUOTA_PERCENT, 1418625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.DROPBOX_RESERVE_PERCENT, 1419625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.DROPBOX_TAG_PREFIX, 1420625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.ERROR_LOGCAT_PREFIX, 1421625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL, 1422625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD, 1423625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE, 1424625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES, 1425625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES, 1426625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS, 1427625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.CONNECTIVITY_CHANGE_DELAY, 1428625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, 1429625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.CAPTIVE_PORTAL_SERVER, 1430625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.NSD_ON, 1431625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.SET_INSTALL_LOCATION, 1432625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.DEFAULT_INSTALL_LOCATION, 1433625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY, 1434625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY, 1435625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT, 1436625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.HTTP_PROXY, 1437625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.GLOBAL_HTTP_PROXY_HOST, 1438625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.GLOBAL_HTTP_PROXY_PORT, 1439625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST, 1440625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.SET_GLOBAL_HTTP_PROXY, 1441625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey Settings.Global.DEFAULT_DNS_SERVER, 1442625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey }; 1443625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 1444625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey db.setTransactionSuccessful(); 1445625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey } finally { 1446625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey db.endTransaction(); 1447625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey } 1448625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey } 1449625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey upgradeVersion = 89; 1450625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey } 1451625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey 14520ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey if (upgradeVersion == 89) { 145343765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 14540ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey db.beginTransaction(); 14550ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey try { 14560ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey String[] prefixesToMove = { 14570ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey Settings.Global.BLUETOOTH_HEADSET_PRIORITY_PREFIX, 14580ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey Settings.Global.BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX, 14590ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey Settings.Global.BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX, 14600ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey }; 14610ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey 14620ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey movePrefixedSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, prefixesToMove); 14630ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey 14640ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey db.setTransactionSuccessful(); 14650ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey } finally { 14660ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey db.endTransaction(); 14670ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey } 14680ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey } 14690ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey upgradeVersion = 90; 14700ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey } 14710ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey 14726e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey if (upgradeVersion == 90) { 147343765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 14746e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey db.beginTransaction(); 14756e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey try { 14766e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey String[] systemToGlobal = { 14776e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.WINDOW_ANIMATION_SCALE, 14786e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.TRANSITION_ANIMATION_SCALE, 14796e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.ANIMATOR_DURATION_SCALE, 14806e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.FANCY_IME_ANIMATIONS, 14816e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.COMPATIBILITY_MODE, 14826e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.EMERGENCY_TONE, 14836e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.CALL_AUTO_RETRY, 14846e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.DEBUG_APP, 14856e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.WAIT_FOR_DEBUGGER, 14866e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.SHOW_PROCESSES, 14876e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.ALWAYS_FINISH_ACTIVITIES, 14886e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey }; 14896e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey String[] secureToGlobal = { 14906e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey Settings.Global.PREFERRED_NETWORK_MODE, 1491b4d485c18448eadb92083c74fc84722250daeb5dNaveen Kalla Settings.Global.CDMA_SUBSCRIPTION_MODE, 14926e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey }; 14936e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey 14946e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, systemToGlobal, true); 14956e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, secureToGlobal, true); 14966e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey 14976e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey db.setTransactionSuccessful(); 14986e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey } finally { 14996e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey db.endTransaction(); 15006e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey } 15016e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey } 15026e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey upgradeVersion = 91; 15036e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey } 15046e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey 150555b02226c07f276e143f9da6f752963882fb60d5Eric Laurent if (upgradeVersion == 91) { 150643765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 150755b02226c07f276e143f9da6f752963882fb60d5Eric Laurent db.beginTransaction(); 150855b02226c07f276e143f9da6f752963882fb60d5Eric Laurent try { 150955b02226c07f276e143f9da6f752963882fb60d5Eric Laurent // Move ringer mode from system to global settings 1510531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani String[] settingsToMove = { Settings.Global.MODE_RINGER }; 151155b02226c07f276e143f9da6f752963882fb60d5Eric Laurent moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, true); 151255b02226c07f276e143f9da6f752963882fb60d5Eric Laurent 151355b02226c07f276e143f9da6f752963882fb60d5Eric Laurent db.setTransactionSuccessful(); 151455b02226c07f276e143f9da6f752963882fb60d5Eric Laurent } finally { 151555b02226c07f276e143f9da6f752963882fb60d5Eric Laurent db.endTransaction(); 151655b02226c07f276e143f9da6f752963882fb60d5Eric Laurent } 151755b02226c07f276e143f9da6f752963882fb60d5Eric Laurent } 151855b02226c07f276e143f9da6f752963882fb60d5Eric Laurent upgradeVersion = 92; 151955b02226c07f276e143f9da6f752963882fb60d5Eric Laurent } 152055b02226c07f276e143f9da6f752963882fb60d5Eric Laurent 15217f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock if (upgradeVersion == 92) { 15227f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock SQLiteStatement stmt = null; 15237f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock try { 15247f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 15257f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock + " VALUES(?,?);"); 152643765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 15277f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock // consider existing primary users to have made it through user setup 15287f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock // if the globally-scoped device-provisioned bit is set 15297f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock // (indicating they already made it through setup as primary) 15307f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock int deviceProvisioned = getIntValueFromTable(db, TABLE_GLOBAL, 15317f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock Settings.Global.DEVICE_PROVISIONED, 0); 15327f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock loadSetting(stmt, Settings.Secure.USER_SETUP_COMPLETE, 15337f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock deviceProvisioned); 15347f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock } else { 15357f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock // otherwise use the default 15367f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock loadBooleanSetting(stmt, Settings.Secure.USER_SETUP_COMPLETE, 15377f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock R.bool.def_user_setup_complete); 15387f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock } 15397f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock } finally { 15407f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock if (stmt != null) stmt.close(); 15417f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock } 15427f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock upgradeVersion = 93; 15437f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock } 15447f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock 1545531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani if (upgradeVersion == 93) { 1546531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani // Redo this step, since somehow it didn't work the first time for some users 154743765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 1548531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani db.beginTransaction(); 1549531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani try { 1550531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani // Migrate now-global settings 1551683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav String[] settingsToMove = setToStringArray( 1552683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav SettingsProvider.sSystemMovedToGlobalSettings); 1553531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, true); 1554683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav settingsToMove = setToStringArray( 1555683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav SettingsProvider.sSecureMovedToGlobalSettings); 1556531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 1557531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani 1558531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani db.setTransactionSuccessful(); 1559531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani } finally { 1560531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani db.endTransaction(); 1561531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani } 1562531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani } 1563531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani upgradeVersion = 94; 1564531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani } 1565531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani 156684e2756c0f3794c6efe5568a9d09101ba689fb39Jeff Brown if (upgradeVersion == 94) { 156784e2756c0f3794c6efe5568a9d09101ba689fb39Jeff Brown // Add wireless charging started sound setting 156843765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 15692d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani db.beginTransaction(); 15702d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani SQLiteStatement stmt = null; 15712d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani try { 15722d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" 15732d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani + " VALUES(?,?);"); 15742d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani loadStringSetting(stmt, Settings.Global.WIRELESS_CHARGING_STARTED_SOUND, 15752d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani R.string.def_wireless_charging_started_sound); 15762d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani db.setTransactionSuccessful(); 15772d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani } finally { 15782d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani db.endTransaction(); 15792d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani if (stmt != null) stmt.close(); 15802d43fabaf7c15ded1dcb463725754edfe41b42a1Amith Yamasani } 158184e2756c0f3794c6efe5568a9d09101ba689fb39Jeff Brown } 158284e2756c0f3794c6efe5568a9d09101ba689fb39Jeff Brown upgradeVersion = 95; 158384e2756c0f3794c6efe5568a9d09101ba689fb39Jeff Brown } 158484e2756c0f3794c6efe5568a9d09101ba689fb39Jeff Brown 158558f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate if (upgradeVersion == 95) { 158643765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 158758f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate db.beginTransaction(); 158858f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate try { 158958f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate String[] settingsToMove = { Settings.Global.BUGREPORT_IN_POWER_MENU }; 159058f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true); 159158f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate db.setTransactionSuccessful(); 159258f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate } finally { 159358f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate db.endTransaction(); 159458f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate } 159558f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate } 159658f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate upgradeVersion = 96; 159758f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate } 159858f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91Christopher Tate 1599d1ed3cea37e4156eab14b7dc8207a520c9eab700Mike Cleron if (upgradeVersion == 96) { 1600447d94684ee73046d769649d8247aacd581bd6e3Svetoslav Ganov // NOP bump due to a reverted change that some people got on upgrade. 1601d1ed3cea37e4156eab14b7dc8207a520c9eab700Mike Cleron upgradeVersion = 97; 1602d1ed3cea37e4156eab14b7dc8207a520c9eab700Mike Cleron } 1603d1ed3cea37e4156eab14b7dc8207a520c9eab700Mike Cleron 1604dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler if (upgradeVersion == 97) { 160543765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 1606dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler db.beginTransaction(); 1607dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler SQLiteStatement stmt = null; 1608dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler try { 1609dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" 1610dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler + " VALUES(?,?);"); 1611dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler loadIntegerSetting(stmt, Settings.Global.LOW_BATTERY_SOUND_TIMEOUT, 1612dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler R.integer.def_low_battery_sound_timeout); 1613dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler db.setTransactionSuccessful(); 1614dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler } finally { 1615dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler db.endTransaction(); 1616dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler if (stmt != null) stmt.close(); 1617dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler } 1618dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler } 1619dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler upgradeVersion = 98; 1620dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler } 1621dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler 162282a6c5c5ff04ab26fde4b3094a8f25da95a0f5f4Dan Sandler if (upgradeVersion == 98) { 162352e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler // no-op; LOCK_SCREEN_SHOW_NOTIFICATIONS now handled in version 106 162482a6c5c5ff04ab26fde4b3094a8f25da95a0f5f4Dan Sandler upgradeVersion = 99; 162582a6c5c5ff04ab26fde4b3094a8f25da95a0f5f4Dan Sandler } 162682a6c5c5ff04ab26fde4b3094a8f25da95a0f5f4Dan Sandler 16271cdd7dda61b30358c843e534394c32f24bc5271fChris Wren if (upgradeVersion == 99) { 162852e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler // no-op; HEADS_UP_NOTIFICATIONS_ENABLED now handled in version 100 16291cdd7dda61b30358c843e534394c32f24bc5271fChris Wren upgradeVersion = 100; 16301cdd7dda61b30358c843e534394c32f24bc5271fChris Wren } 163152e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler 16325242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren if (upgradeVersion == 100) { 163352e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler // note: LOCK_SCREEN_SHOW_NOTIFICATIONS now handled in version 106 163443765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 16355242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren db.beginTransaction(); 16365242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren SQLiteStatement stmt = null; 16375242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren try { 163852e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" 16395242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren + " VALUES(?,?);"); 16405242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren loadIntegerSetting(stmt, Global.HEADS_UP_NOTIFICATIONS_ENABLED, 16415242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren R.integer.def_heads_up_enabled); 16425242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren db.setTransactionSuccessful(); 16435242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren } finally { 16445242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren db.endTransaction(); 16455242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren if (stmt != null) stmt.close(); 16465242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren } 16475242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren } 16485242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren upgradeVersion = 101; 16495242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren } 16501cdd7dda61b30358c843e534394c32f24bc5271fChris Wren 1651147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet if (upgradeVersion == 101) { 165243765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 1653147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet db.beginTransaction(); 1654147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet SQLiteStatement stmt = null; 1655147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet try { 1656147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet stmt = db.compileStatement("INSERT OR IGNORE INTO global(name,value)" 1657147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet + " VALUES(?,?);"); 1658147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet loadSetting(stmt, Settings.Global.DEVICE_NAME, getDefaultDeviceName()); 1659147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet db.setTransactionSuccessful(); 1660147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet } finally { 1661147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet db.endTransaction(); 1662147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet if (stmt != null) stmt.close(); 1663147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet } 1664147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet } 1665147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet upgradeVersion = 102; 1666147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet } 1667147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet 1668aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate if (upgradeVersion == 102) { 1669aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate db.beginTransaction(); 1670aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate SQLiteStatement stmt = null; 1671aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate try { 1672aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate // The INSTALL_NON_MARKET_APPS setting is becoming per-user rather 1673aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate // than device-global. 167443765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 1675aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate // In the owner user, the global table exists so we can migrate the 1676aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate // entry from there to the secure table, preserving its value. 1677aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate String[] globalToSecure = { 1678aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate Settings.Secure.INSTALL_NON_MARKET_APPS 1679aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate }; 1680aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate moveSettingsToNewTable(db, TABLE_GLOBAL, TABLE_SECURE, globalToSecure, true); 1681aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate } else { 1682aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate // Secondary users' dbs don't have the global table, so institute the 1683aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate // default. 1684aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 1685aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate + " VALUES(?,?);"); 1686aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS, 1687aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate R.bool.def_install_non_market_apps); 1688aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate } 1689aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate db.setTransactionSuccessful(); 1690aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate } finally { 1691aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate db.endTransaction(); 1692aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate if (stmt != null) stmt.close(); 1693aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate } 1694aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate upgradeVersion = 103; 1695aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate } 1696a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown 1697a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown if (upgradeVersion == 103) { 1698a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown db.beginTransaction(); 1699a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown SQLiteStatement stmt = null; 1700a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown try { 1701a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" 1702a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown + " VALUES(?,?);"); 1703a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown loadBooleanSetting(stmt, Settings.Secure.WAKE_GESTURE_ENABLED, 1704a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown R.bool.def_wake_gesture_enabled); 1705a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown db.setTransactionSuccessful(); 1706a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown } finally { 1707a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown db.endTransaction(); 1708a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown if (stmt != null) stmt.close(); 1709a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown } 1710a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown upgradeVersion = 104; 1711a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown } 1712a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown 17131e9c21871e81642669079cd290ef47818a3165bdAmith Yamasani if (upgradeVersion < 105) { 1714cd86ebf1c965c191f46b6480145c9d217a7d841eFyodor Kupolov // No-op: GUEST_USER_ENABLED setting was removed 17151e9c21871e81642669079cd290ef47818a3165bdAmith Yamasani upgradeVersion = 105; 17161e9c21871e81642669079cd290ef47818a3165bdAmith Yamasani } 17171e9c21871e81642669079cd290ef47818a3165bdAmith Yamasani 171852e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler if (upgradeVersion < 106) { 171952e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler // LOCK_SCREEN_SHOW_NOTIFICATIONS is now per-user. 172052e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler db.beginTransaction(); 172152e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler SQLiteStatement stmt = null; 172252e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler try { 172352e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 172452e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler + " VALUES(?,?);"); 1725cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren loadIntegerSetting(stmt, Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 1726cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren R.integer.def_lock_screen_show_notifications); 172743765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 172852e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler final int oldShow = getIntValueFromTable(db, 172952e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler TABLE_GLOBAL, Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, -1); 173052e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler if (oldShow >= 0) { 173152e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler // overwrite the default with whatever you had 173252e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler loadSetting(stmt, Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, oldShow); 173352e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler final SQLiteStatement deleteStmt 173452e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler = db.compileStatement("DELETE FROM global WHERE name=?"); 173552e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler deleteStmt.bindString(1, Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS); 173652e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler deleteStmt.execute(); 173752e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler } 173852e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler } 173952e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler db.setTransactionSuccessful(); 174052e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler } finally { 174152e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler db.endTransaction(); 174252e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler if (stmt != null) stmt.close(); 174352e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler } 174452e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler upgradeVersion = 106; 174552e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler } 174649e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos 174749e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos if (upgradeVersion < 107) { 174849e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos // Add trusted sound setting 174943765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 175049e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos db.beginTransaction(); 175149e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos SQLiteStatement stmt = null; 175249e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos try { 175349e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" 175449e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos + " VALUES(?,?);"); 175549e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos loadStringSetting(stmt, Settings.Global.TRUSTED_SOUND, 175649e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos R.string.def_trusted_sound); 175749e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos db.setTransactionSuccessful(); 175849e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos } finally { 175949e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos db.endTransaction(); 176049e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos if (stmt != null) stmt.close(); 176149e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos } 176249e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos } 176349e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos upgradeVersion = 107; 176449e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos } 176549e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos 176649cb613c993a5fecf11d7ee6198068315762814eJeff Brown if (upgradeVersion < 108) { 176749cb613c993a5fecf11d7ee6198068315762814eJeff Brown // Reset the auto-brightness setting to default since the behavior 176849cb613c993a5fecf11d7ee6198068315762814eJeff Brown // of the feature is now quite different and is being presented to 176949cb613c993a5fecf11d7ee6198068315762814eJeff Brown // the user in a new way as "adaptive brightness". 177049cb613c993a5fecf11d7ee6198068315762814eJeff Brown db.beginTransaction(); 177149cb613c993a5fecf11d7ee6198068315762814eJeff Brown SQLiteStatement stmt = null; 177249cb613c993a5fecf11d7ee6198068315762814eJeff Brown try { 177349cb613c993a5fecf11d7ee6198068315762814eJeff Brown stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 177449cb613c993a5fecf11d7ee6198068315762814eJeff Brown + " VALUES(?,?);"); 177549cb613c993a5fecf11d7ee6198068315762814eJeff Brown loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE, 177649cb613c993a5fecf11d7ee6198068315762814eJeff Brown R.bool.def_screen_brightness_automatic_mode); 177749cb613c993a5fecf11d7ee6198068315762814eJeff Brown db.setTransactionSuccessful(); 177849cb613c993a5fecf11d7ee6198068315762814eJeff Brown } finally { 177949cb613c993a5fecf11d7ee6198068315762814eJeff Brown db.endTransaction(); 178049cb613c993a5fecf11d7ee6198068315762814eJeff Brown if (stmt != null) stmt.close(); 178149cb613c993a5fecf11d7ee6198068315762814eJeff Brown } 178249cb613c993a5fecf11d7ee6198068315762814eJeff Brown upgradeVersion = 108; 178349cb613c993a5fecf11d7ee6198068315762814eJeff Brown } 178449cb613c993a5fecf11d7ee6198068315762814eJeff Brown 1785cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren if (upgradeVersion < 109) { 1786cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren db.beginTransaction(); 1787cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren SQLiteStatement stmt = null; 1788cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren try { 1789cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 1790cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren + " VALUES(?,?);"); 1791cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren loadBooleanSetting(stmt, Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1792cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren R.bool.def_lock_screen_allow_private_notifications); 1793cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren db.setTransactionSuccessful(); 1794cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren } finally { 1795cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren db.endTransaction(); 1796cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren if (stmt != null) stmt.close(); 1797cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren } 1798cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren upgradeVersion = 109; 1799cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren } 1800cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren 18012c830a2905b07639984499529f9a19aeb779a539Tyler Gunn if (upgradeVersion < 110) { 18022c830a2905b07639984499529f9a19aeb779a539Tyler Gunn // The SIP_CALL_OPTIONS value SIP_ASK_EACH_TIME is being deprecated. 18032c830a2905b07639984499529f9a19aeb779a539Tyler Gunn // If the SIP_CALL_OPTIONS setting is set to SIP_ASK_EACH_TIME, default to 18042c830a2905b07639984499529f9a19aeb779a539Tyler Gunn // SIP_ADDRESS_ONLY. 18052c830a2905b07639984499529f9a19aeb779a539Tyler Gunn db.beginTransaction(); 18062c830a2905b07639984499529f9a19aeb779a539Tyler Gunn SQLiteStatement stmt = null; 18072c830a2905b07639984499529f9a19aeb779a539Tyler Gunn try { 18082c830a2905b07639984499529f9a19aeb779a539Tyler Gunn stmt = db.compileStatement("UPDATE system SET value = ? " + 18092c830a2905b07639984499529f9a19aeb779a539Tyler Gunn "WHERE name = ? AND value = ?;"); 18102c830a2905b07639984499529f9a19aeb779a539Tyler Gunn stmt.bindString(1, Settings.System.SIP_ADDRESS_ONLY); 18112c830a2905b07639984499529f9a19aeb779a539Tyler Gunn stmt.bindString(2, Settings.System.SIP_CALL_OPTIONS); 18122c830a2905b07639984499529f9a19aeb779a539Tyler Gunn stmt.bindString(3, Settings.System.SIP_ASK_ME_EACH_TIME); 18132c830a2905b07639984499529f9a19aeb779a539Tyler Gunn stmt.execute(); 18142c830a2905b07639984499529f9a19aeb779a539Tyler Gunn db.setTransactionSuccessful(); 18152c830a2905b07639984499529f9a19aeb779a539Tyler Gunn } finally { 18162c830a2905b07639984499529f9a19aeb779a539Tyler Gunn db.endTransaction(); 18172c830a2905b07639984499529f9a19aeb779a539Tyler Gunn if (stmt != null) stmt.close(); 18182c830a2905b07639984499529f9a19aeb779a539Tyler Gunn } 18192c830a2905b07639984499529f9a19aeb779a539Tyler Gunn upgradeVersion = 110; 18202c830a2905b07639984499529f9a19aeb779a539Tyler Gunn } 18212c830a2905b07639984499529f9a19aeb779a539Tyler Gunn 18227d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock if (upgradeVersion < 111) { 18237d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock // reset ringer mode, so it doesn't force zen mode to follow 182443765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 18257d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock db.beginTransaction(); 18267d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock SQLiteStatement stmt = null; 18277d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock try { 18287d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" 18297d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock + " VALUES(?,?);"); 18307d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock loadSetting(stmt, Settings.Global.MODE_RINGER, AudioManager.RINGER_MODE_NORMAL); 18317d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock db.setTransactionSuccessful(); 18327d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock } finally { 18337d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock db.endTransaction(); 18347d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock if (stmt != null) stmt.close(); 18357d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock } 18367d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock } 18377d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock upgradeVersion = 111; 18387d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock } 18397d424b6c5080133c25e0c19dd0d6ce212e352a1dJohn Spurlock 1840550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet if (upgradeVersion < 112) { 184143765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 1842550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet // When device name was added, we went with Manufacturer + Model, device name should 1843550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet // actually be Model only. 1844550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet // Update device name to Model if it wasn't modified by user. 1845550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet db.beginTransaction(); 1846550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet SQLiteStatement stmt = null; 1847550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet try { 1848550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet stmt = db.compileStatement("UPDATE global SET value = ? " 1849550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet + " WHERE name = ? AND value = ?"); 1850550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet stmt.bindString(1, getDefaultDeviceName()); // new default device name 1851550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet stmt.bindString(2, Settings.Global.DEVICE_NAME); 1852550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet stmt.bindString(3, getOldDefaultDeviceName()); // old default device name 1853550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet stmt.execute(); 1854550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet db.setTransactionSuccessful(); 1855550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet } finally { 1856550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet db.endTransaction(); 1857550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet if (stmt != null) stmt.close(); 1858550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet } 1859550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet } 1860550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet upgradeVersion = 112; 1861550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet } 1862550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet 186305af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown if (upgradeVersion < 113) { 186405af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown db.beginTransaction(); 186505af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown SQLiteStatement stmt = null; 186605af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown try { 186705af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 186805af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown + " VALUES(?,?);"); 186905af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown loadIntegerSetting(stmt, Settings.Secure.SLEEP_TIMEOUT, 187005af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown R.integer.def_sleep_timeout); 187105af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown db.setTransactionSuccessful(); 187205af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown } finally { 187305af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown db.endTransaction(); 187405af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown if (stmt != null) stmt.close(); 187505af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown } 187605af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown upgradeVersion = 113; 187705af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown } 187805af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown 1879fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee // We skipped 114 to handle a merge conflict with the introduction of theater mode. 1880fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee 1881fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee if (upgradeVersion < 115) { 188243765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 1883fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee db.beginTransaction(); 1884fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee SQLiteStatement stmt = null; 1885fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee try { 1886fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee stmt = db.compileStatement("INSERT OR IGNORE INTO global(name,value)" 1887fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee + " VALUES(?,?);"); 1888fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee loadBooleanSetting(stmt, Global.THEATER_MODE_ON, 1889fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee R.bool.def_theater_mode_on); 1890fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee db.setTransactionSuccessful(); 1891fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee } finally { 1892fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee db.endTransaction(); 1893fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee if (stmt != null) stmt.close(); 1894fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee } 1895fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee } 1896fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee upgradeVersion = 115; 1897fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee } 1898fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee 1899fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee if (upgradeVersion < 116) { 190043765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 190104e6827ace936e0cbb666d8ef94635b73672aa41Christopher Tate db.beginTransaction(); 190204e6827ace936e0cbb666d8ef94635b73672aa41Christopher Tate SQLiteStatement stmt = null; 190304e6827ace936e0cbb666d8ef94635b73672aa41Christopher Tate try { 190404e6827ace936e0cbb666d8ef94635b73672aa41Christopher Tate stmt = db.compileStatement("INSERT OR IGNORE INTO global(name,value)" 190504e6827ace936e0cbb666d8ef94635b73672aa41Christopher Tate + " VALUES(?,?);"); 1906683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav loadSetting(stmt, Settings.Global.ENHANCED_4G_MODE_ENABLED, 1907683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav ImsConfig.FeatureValueConstants.ON); 190804e6827ace936e0cbb666d8ef94635b73672aa41Christopher Tate db.setTransactionSuccessful(); 190904e6827ace936e0cbb666d8ef94635b73672aa41Christopher Tate } finally { 191004e6827ace936e0cbb666d8ef94635b73672aa41Christopher Tate db.endTransaction(); 191104e6827ace936e0cbb666d8ef94635b73672aa41Christopher Tate if (stmt != null) stmt.close(); 191204e6827ace936e0cbb666d8ef94635b73672aa41Christopher Tate } 19130499bb5de45cf5542db7ac42406cd856d3386f1fLibin.Tang@motorola.com } 1914fb1cf36aa739da5dbebc64e61900e9ff96134e26Bryce Lee upgradeVersion = 116; 19150499bb5de45cf5542db7ac42406cd856d3386f1fLibin.Tang@motorola.com } 1916584a44517950204a04ef01345be70b33d8ba43f9Bryce Lee 191794cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk if (upgradeVersion < 117) { 191894cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk db.beginTransaction(); 191994cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk try { 192094cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk String[] systemToSecure = { 192194cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk Settings.Secure.LOCK_TO_APP_EXIT_LOCKED 192294cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk }; 192394cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, systemToSecure, true); 192494cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk db.setTransactionSuccessful(); 192594cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk } finally { 192694cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk db.endTransaction(); 192794cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk } 192894cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk upgradeVersion = 117; 192994cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk } 193094cfd9d7c42287c18bde29aa1ae34944eb448f45Jason Monk 19318c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock if (upgradeVersion < 118) { 19328c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock // Reset rotation-lock-for-accessibility on upgrade, since it now hides the display 19338c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock // setting. 19348c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock db.beginTransaction(); 19358c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock SQLiteStatement stmt = null; 19368c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock try { 19378c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 19388c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock + " VALUES(?,?);"); 19398c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock loadSetting(stmt, Settings.System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY, 0); 19408c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock db.setTransactionSuccessful(); 19418c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock } finally { 19428c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock db.endTransaction(); 19438c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock if (stmt != null) stmt.close(); 19448c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock } 19458c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock upgradeVersion = 118; 19468c51d0b7114c4ad9e270ba1f9d6c15d59a8b5b42John Spurlock } 1947683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav 1948503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown /* 1949683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav * IMPORTANT: Do not add any more upgrade steps here as the global, 1950683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav * secure, and system settings are no longer stored in a database 1951503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * but are kept in memory and persisted to XML. 1952683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav * 1953503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * See: SettingsProvider.UpgradeController#onUpgradeLocked 1954683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav */ 1955683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav 19561c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler if (upgradeVersion != currentVersion) { 1957683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav recreateDatabase(db, oldVersion, upgradeVersion, currentVersion); 195854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 195954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 196054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1961683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav public void recreateDatabase(SQLiteDatabase db, int oldVersion, 1962683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav int upgradeVersion, int currentVersion) { 1963683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP TABLE IF EXISTS global"); 1964683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP TABLE IF EXISTS globalIndex1"); 1965683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP TABLE IF EXISTS system"); 1966683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP INDEX IF EXISTS systemIndex1"); 1967683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP TABLE IF EXISTS secure"); 1968683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP INDEX IF EXISTS secureIndex1"); 1969683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP TABLE IF EXISTS gservices"); 1970683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP INDEX IF EXISTS gservicesIndex1"); 1971683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP TABLE IF EXISTS bluetooth_devices"); 1972683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP TABLE IF EXISTS bookmarks"); 1973683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP INDEX IF EXISTS bookmarksIndex1"); 1974683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP INDEX IF EXISTS bookmarksIndex2"); 1975683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("DROP TABLE IF EXISTS favorites"); 1976683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav 1977683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav onCreate(db); 1978683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav 1979683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav // Added for diagnosing settings.db wipes after the fact 1980683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav String wipeReason = oldVersion + "/" + upgradeVersion + "/" + currentVersion; 1981683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav db.execSQL("INSERT INTO secure(name,value) values('" + 1982683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav "wiped_db_reason" + "','" + wipeReason + "');"); 1983683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav } 1984683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav 1985683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav private String[] setToStringArray(Set<String> set) { 1986a96798e4a548f5ec0e387b2cdd8d419378498ebdChristopher Tate String[] array = new String[set.size()]; 1987a96798e4a548f5ec0e387b2cdd8d419378498ebdChristopher Tate return set.toArray(array); 1988a96798e4a548f5ec0e387b2cdd8d419378498ebdChristopher Tate } 1989a96798e4a548f5ec0e387b2cdd8d419378498ebdChristopher Tate 199006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate private void moveSettingsToNewTable(SQLiteDatabase db, 199106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate String sourceTable, String destTable, 19929219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate String[] settingsToMove, boolean doIgnore) { 199306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate // Copy settings values from the source table to the dest, and remove from the source 1994156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani SQLiteStatement insertStmt = null; 1995156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani SQLiteStatement deleteStmt = null; 1996156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 1997156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani db.beginTransaction(); 1998156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani try { 19999219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate insertStmt = db.compileStatement("INSERT " 20009219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate + (doIgnore ? " OR IGNORE " : "") 20019219874be99cc07660807cc5dc94b0d157ef8808Christopher Tate + " INTO " + destTable + " (name,value) SELECT name,value FROM " 200206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate + sourceTable + " WHERE name=?"); 200306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate deleteStmt = db.compileStatement("DELETE FROM " + sourceTable + " WHERE name=?"); 2004156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 2005156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani for (String setting : settingsToMove) { 2006156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani insertStmt.bindString(1, setting); 2007156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani insertStmt.execute(); 2008156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 2009156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani deleteStmt.bindString(1, setting); 2010156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani deleteStmt.execute(); 2011156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 2012156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani db.setTransactionSuccessful(); 2013156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } finally { 2014156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani db.endTransaction(); 2015156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani if (insertStmt != null) { 2016156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani insertStmt.close(); 2017156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 2018156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani if (deleteStmt != null) { 2019156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani deleteStmt.close(); 2020156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 2021156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 2022156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 2023156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 20240ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey /** 20250ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey * Move any settings with the given prefixes from the source table to the 20260ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey * destination table. 20270ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey */ 20280ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey private void movePrefixedSettingsToNewTable( 20290ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey SQLiteDatabase db, String sourceTable, String destTable, String[] prefixesToMove) { 20300ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey SQLiteStatement insertStmt = null; 20310ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey SQLiteStatement deleteStmt = null; 20320ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey 20330ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey db.beginTransaction(); 20340ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey try { 20350ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey insertStmt = db.compileStatement("INSERT INTO " + destTable 20360ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey + " (name,value) SELECT name,value FROM " + sourceTable 20370ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey + " WHERE substr(name,0,?)=?"); 20380ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey deleteStmt = db.compileStatement( 20390ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey "DELETE FROM " + sourceTable + " WHERE substr(name,0,?)=?"); 20400ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey 20410ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey for (String prefix : prefixesToMove) { 20420ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey insertStmt.bindLong(1, prefix.length() + 1); 20430ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey insertStmt.bindString(2, prefix); 20440ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey insertStmt.execute(); 20450ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey 20460ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey deleteStmt.bindLong(1, prefix.length() + 1); 20470ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey deleteStmt.bindString(2, prefix); 20480ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey deleteStmt.execute(); 20490ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey } 20500ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey db.setTransactionSuccessful(); 20510ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey } finally { 20520ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey db.endTransaction(); 20530ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey if (insertStmt != null) { 20540ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey insertStmt.close(); 20550ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey } 20560ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey if (deleteStmt != null) { 20570ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey deleteStmt.close(); 20580ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey } 20590ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey } 20600ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey } 20610ac1028b0dc8713296e2face40abe5451ecd479cJeff Sharkey 206254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void upgradeLockPatternLocation(SQLiteDatabase db) { 206306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate Cursor c = db.query(TABLE_SYSTEM, new String[] {"_id", "value"}, "name='lock_pattern'", 206454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project null, null, null, null); 206554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (c.getCount() > 0) { 206654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project c.moveToFirst(); 206754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String lockPattern = c.getString(1); 206854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!TextUtils.isEmpty(lockPattern)) { 206954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Convert lock pattern 207054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 207131f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller LockPatternUtils lpu = new LockPatternUtils(mContext); 20729bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh List<LockPatternView.Cell> cellPattern = 207354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LockPatternUtils.stringToPattern(lockPattern); 207443765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen lpu.saveLockPattern(cellPattern, null, UserHandle.USER_SYSTEM); 207554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (IllegalArgumentException e) { 207654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Don't want corrupted lock pattern to hang the reboot process 207754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 207854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 207954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project c.close(); 208006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate db.delete(TABLE_SYSTEM, "name='lock_pattern'", null); 208154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 208254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project c.close(); 208354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 208454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 208554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 2086b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani private void upgradeScreenTimeoutFromNever(SQLiteDatabase db) { 2087b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani // See if the timeout is -1 (for "Never"). 208806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate Cursor c = db.query(TABLE_SYSTEM, new String[] { "_id", "value" }, "name=? AND value=?", 2089b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani new String[] { Settings.System.SCREEN_OFF_TIMEOUT, "-1" }, 2090b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani null, null, null); 2091b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 2092b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani SQLiteStatement stmt = null; 2093b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani if (c.getCount() > 0) { 2094b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani c.close(); 2095b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani try { 2096b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 2097b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani + " VALUES(?,?);"); 20983c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 2099b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani // Set the timeout to 30 minutes in milliseconds 2100cd66caf015d18baa03a86796649550cb65cd99eaAmith Yamasani loadSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, 2101cd66caf015d18baa03a86796649550cb65cd99eaAmith Yamasani Integer.toString(30 * 60 * 1000)); 2102b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } finally { 2103b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani if (stmt != null) stmt.close(); 2104b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 2105b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } else { 2106b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani c.close(); 2107b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 2108b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 2109b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 2110398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani private void upgradeVibrateSettingFromNone(SQLiteDatabase db) { 2111398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani int vibrateSetting = getIntValueFromSystem(db, Settings.System.VIBRATE_ON, 0); 2112398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani // If the ringer vibrate value is invalid, set it to the default 2113398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani if ((vibrateSetting & 3) == AudioManager.VIBRATE_SETTING_OFF) { 21146156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock vibrateSetting = AudioSystem.getValueForVibrateSetting(0, 2115398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ONLY_SILENT); 2116398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani } 2117398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani // Apply the same setting to the notification vibrate value 21186156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock vibrateSetting = AudioSystem.getValueForVibrateSetting(vibrateSetting, 2119398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani AudioManager.VIBRATE_TYPE_NOTIFICATION, vibrateSetting); 2120398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani 2121398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani SQLiteStatement stmt = null; 2122398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani try { 2123398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 2124398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani + " VALUES(?,?);"); 2125398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani loadSetting(stmt, Settings.System.VIBRATE_ON, vibrateSetting); 2126398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani } finally { 2127398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani if (stmt != null) 2128398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani stmt.close(); 2129398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani } 2130398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani } 2131398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani 213279373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani private void upgradeScreenTimeout(SQLiteDatabase db) { 213379373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani // Change screen timeout to current default 213479373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani db.beginTransaction(); 213579373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani SQLiteStatement stmt = null; 213679373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani try { 213779373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 213879373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani + " VALUES(?,?);"); 213979373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, 214079373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani R.integer.def_screen_off_timeout); 214179373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani db.setTransactionSuccessful(); 214279373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani } finally { 214379373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani db.endTransaction(); 214479373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani if (stmt != null) 214579373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani stmt.close(); 214679373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani } 214779373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani } 214879373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani 2149f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani private void upgradeAutoBrightness(SQLiteDatabase db) { 2150f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani db.beginTransaction(); 2151f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani try { 2152f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani String value = 2153f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani mContext.getResources().getBoolean( 2154f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani R.bool.def_screen_brightness_automatic_mode) ? "1" : "0"; 2155f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani db.execSQL("INSERT OR REPLACE INTO system(name,value) values('" + 2156f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani Settings.System.SCREEN_BRIGHTNESS_MODE + "','" + value + "');"); 2157f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani db.setTransactionSuccessful(); 2158f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani } finally { 2159f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani db.endTransaction(); 2160f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani } 2161f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani } 2162f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani 216354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 216454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Loads the default set of bookmarked shortcuts from an xml file. 216554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 216654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param db The database to write the values into 216754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 21686651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown private void loadBookmarks(SQLiteDatabase db) { 216954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ContentValues values = new ContentValues(); 217054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 217154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project PackageManager packageManager = mContext.getPackageManager(); 2172f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy try { 2173f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy XmlResourceParser parser = mContext.getResources().getXml(R.xml.bookmarks); 217454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project XmlUtils.beginDocument(parser, "bookmarks"); 217554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 2176f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy final int depth = parser.getDepth(); 2177f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy int type; 2178f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 2179f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy while (((type = parser.next()) != XmlPullParser.END_TAG || 2180f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) { 2181f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 2182f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy if (type != XmlPullParser.START_TAG) { 2183f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy continue; 2184f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy } 218554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 218654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String name = parser.getName(); 218754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!"bookmark".equals(name)) { 218854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 218954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 219054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 219154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String pkg = parser.getAttributeValue(null, "package"); 219254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String cls = parser.getAttributeValue(null, "class"); 219354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String shortcutStr = parser.getAttributeValue(null, "shortcut"); 21946651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown String category = parser.getAttributeValue(null, "category"); 2195f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 2196585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov int shortcutValue = shortcutStr.charAt(0); 219754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (TextUtils.isEmpty(shortcutStr)) { 219854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Unable to get shortcut for: " + pkg + "/" + cls); 21996651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown continue; 220054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 2201f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 22026651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown final Intent intent; 22036651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown final String title; 22046651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown if (pkg != null && cls != null) { 22056651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown ActivityInfo info = null; 22066651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown ComponentName cn = new ComponentName(pkg, cls); 2207f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy try { 2208f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy info = packageManager.getActivityInfo(cn, 0); 22096651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } catch (PackageManager.NameNotFoundException e) { 22106651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown String[] packages = packageManager.canonicalToCurrentPackageNames( 22116651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown new String[] { pkg }); 22126651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown cn = new ComponentName(packages[0], cls); 22136651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown try { 22146651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown info = packageManager.getActivityInfo(cn, 0); 22156651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } catch (PackageManager.NameNotFoundException e1) { 22166651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown Log.w(TAG, "Unable to add bookmark: " + pkg + "/" + cls, e); 22176651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown continue; 22186651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } 2219f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy } 22206651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown 22216651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown intent = new Intent(Intent.ACTION_MAIN, null); 22226651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown intent.addCategory(Intent.CATEGORY_LAUNCHER); 222354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project intent.setComponent(cn); 22246651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown title = info.loadLabel(packageManager).toString(); 22256651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } else if (category != null) { 2226f5b8671c340f189c50b41c53622f979b6d5e0a57Dianne Hackborn intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, category); 22276651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown title = ""; 22286651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } else { 22296651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown Log.w(TAG, "Unable to add bookmark for shortcut " + shortcutStr 22306651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown + ": missing package/class or category attributes"); 22316651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown continue; 223254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 22336651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown 22346651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 22356651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown values.put(Settings.Bookmarks.INTENT, intent.toUri(0)); 22366651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown values.put(Settings.Bookmarks.TITLE, title); 22376651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown values.put(Settings.Bookmarks.SHORTCUT, shortcutValue); 22386651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown db.delete("bookmarks", "shortcut = ?", 22396651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown new String[] { Integer.toString(shortcutValue) }); 22406651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown db.insert("bookmarks", null, values); 224154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 224254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (XmlPullParserException e) { 224354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Got execption parsing bookmarks.", e); 224454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (IOException e) { 224554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Got execption parsing bookmarks.", e); 224654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 224754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 224854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 224954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 225054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Loads the default volume levels. It is actually inserting the index of 225154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * the volume array for each of the volume controls. 225254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 225354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param db the database to insert the volume levels into 225454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 225554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadVolumeLevels(SQLiteDatabase db) { 225689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 225789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 225889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 225989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 22603c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 226189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_MUSIC, 22626156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_MUSIC)); 226389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_RING, 22646156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_RING)); 226589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_SYSTEM, 22666156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_SYSTEM)); 226789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting( 226889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt, 226989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori Settings.System.VOLUME_VOICE, 22706156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_VOICE_CALL)); 227189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_ALARM, 22726156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_ALARM)); 227389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting( 227489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt, 227589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori Settings.System.VOLUME_NOTIFICATION, 22766156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_NOTIFICATION)); 227789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting( 227889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt, 227989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori Settings.System.VOLUME_BLUETOOTH_SCO, 22806156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO)); 22813c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 2282c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent // By default: 2283c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent // - ringtones, notification, system and music streams are affected by ringer mode 2284c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent // on non voice capable devices (tablets) 2285c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent // - ringtones, notification and system streams are affected by ringer mode 2286c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent // on voice capable devices (phones) 2287c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent int ringerModeAffectedStreams = (1 << AudioManager.STREAM_RING) | 2288c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent (1 << AudioManager.STREAM_NOTIFICATION) | 2289c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent (1 << AudioManager.STREAM_SYSTEM) | 2290c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent (1 << AudioManager.STREAM_SYSTEM_ENFORCED); 2291c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent if (!mContext.getResources().getBoolean( 2292c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent com.android.internal.R.bool.config_voice_capable)) { 2293c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent ringerModeAffectedStreams |= (1 << AudioManager.STREAM_MUSIC); 2294c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent } 229589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.MODE_RINGER_STREAMS_AFFECTED, 2296c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent ringerModeAffectedStreams); 2297c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent 229889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.MUTE_STREAMS_AFFECTED, 22996156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock AudioSystem.DEFAULT_MUTE_STREAMS_AFFECTED); 230089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 230189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 230289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 23033c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 23043c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa loadVibrateWhenRingingSetting(db); 230554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 230654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 230754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadVibrateSetting(SQLiteDatabase db, boolean deleteOld) { 230854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (deleteOld) { 230954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DELETE FROM system WHERE name='" + Settings.System.VIBRATE_ON + "'"); 231054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 23119bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 231289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 231389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 231489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 231589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 23163c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 23175cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Vibrate on by default for ringer, on for notification 231889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori int vibrate = 0; 23196156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock vibrate = AudioSystem.getValueForVibrateSetting(vibrate, 23205cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani AudioManager.VIBRATE_TYPE_NOTIFICATION, 23215cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani AudioManager.VIBRATE_SETTING_ONLY_SILENT); 23226156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock vibrate |= AudioSystem.getValueForVibrateSetting(vibrate, 23235cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ONLY_SILENT); 232489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VIBRATE_ON, vibrate); 232589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 232689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 232789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 232854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 232954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 23303c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa private void loadVibrateWhenRingingSetting(SQLiteDatabase db) { 23313c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa // The default should be off. VIBRATE_SETTING_ONLY_SILENT should also be ignored here. 23323c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa // Phone app should separately check whether AudioManager#getRingerMode() returns 23333c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa // RINGER_MODE_VIBRATE, with which the device should vibrate anyway. 23343c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa int vibrateSetting = getIntValueFromSystem(db, Settings.System.VIBRATE_ON, 23353c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa AudioManager.VIBRATE_SETTING_OFF); 23363c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa boolean vibrateWhenRinging = ((vibrateSetting & 3) == AudioManager.VIBRATE_SETTING_ON); 23373c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 23383c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa SQLiteStatement stmt = null; 23393c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa try { 23403c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 23413c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa + " VALUES(?,?);"); 23423c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa loadSetting(stmt, Settings.System.VIBRATE_WHEN_RINGING, vibrateWhenRinging ? 1 : 0); 23433c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa } finally { 23443c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa if (stmt != null) stmt.close(); 23453c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa } 23463c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa } 23473c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 234854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadSettings(SQLiteDatabase db) { 2349f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project loadSystemSettings(db); 23509bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh loadSecureSettings(db); 235143765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen // The global table only exists for the 'owner/system' user 235243765b77a0286403fd9f7f5305219f0d9a10c953Xiaohui Chen if (mUserHandle == UserHandle.USER_SYSTEM) { 235306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadGlobalSettings(db); 235406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } 2355f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 23569bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 2357f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void loadSystemSettings(SQLiteDatabase db) { 235889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 235989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 236089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 236189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 23623c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 236389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.DIM_SCREEN, 236489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_dim_screen); 236589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, 236689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.integer.def_screen_off_timeout); 23673c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 236889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default cdma DTMF type 236989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0); 23703c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 237189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default hearing aid 237289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.HEARING_AID, 0); 23733c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 237489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default tty mode 237589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.TTY_MODE, 0); 23763c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 237789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS, 237889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.integer.def_screen_brightness); 23793c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 238089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE, 238189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_screen_brightness_automatic_mode); 23823c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 238389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadDefaultAnimationSettings(stmt); 23843c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 238589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION, 238689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_accelerometer_rotation); 23873c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 238889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadDefaultHapticSettings(stmt); 23893c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 239089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, 239189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_notification_pulse); 239242722bfa136f5616872a2c4e199813e804621c81Amith Yamasani 239389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadUISoundEffectsSettings(stmt); 239442722bfa136f5616872a2c4e199813e804621c81Amith Yamasani 23951a84fd1fb7a51f3fe4f8865e1cdd09f3490f696cJeff Brown loadIntegerSetting(stmt, Settings.System.POINTER_SPEED, 23961a84fd1fb7a51f3fe4f8865e1cdd09f3490f696cJeff Brown R.integer.def_pointer_speed); 2397503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown 2398503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown /* 2399503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * IMPORTANT: Do not add any more upgrade steps here as the global, 2400503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * secure, and system settings are no longer stored in a database 2401503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * but are kept in memory and persisted to XML. 2402503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * 2403503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * See: SettingsProvider.UpgradeController#onUpgradeLocked 2404503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown */ 240589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 240689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 240789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 2408f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 24099bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 24100e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler private void loadUISoundEffectsSettings(SQLiteStatement stmt) { 241142722bfa136f5616872a2c4e199813e804621c81Amith Yamasani loadBooleanSetting(stmt, Settings.System.DTMF_TONE_WHEN_DIALING, 241242722bfa136f5616872a2c4e199813e804621c81Amith Yamasani R.bool.def_dtmf_tones_enabled); 241342722bfa136f5616872a2c4e199813e804621c81Amith Yamasani loadBooleanSetting(stmt, Settings.System.SOUND_EFFECTS_ENABLED, 241442722bfa136f5616872a2c4e199813e804621c81Amith Yamasani R.bool.def_sound_effects_enabled); 241542722bfa136f5616872a2c4e199813e804621c81Amith Yamasani loadBooleanSetting(stmt, Settings.System.HAPTIC_FEEDBACK_ENABLED, 241642722bfa136f5616872a2c4e199813e804621c81Amith Yamasani R.bool.def_haptic_feedback); 24170e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 24180e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadIntegerSetting(stmt, Settings.System.LOCKSCREEN_SOUNDS_ENABLED, 24190e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.integer.def_lockscreen_sounds_enabled); 24200e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } 24210e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 24229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadDefaultAnimationSettings(SQLiteStatement stmt) { 24239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadFractionSetting(stmt, Settings.System.WINDOW_ANIMATION_SCALE, 24249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project R.fraction.def_window_animation_scale, 1); 24259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadFractionSetting(stmt, Settings.System.TRANSITION_ANIMATION_SCALE, 24269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project R.fraction.def_window_transition_scale, 1); 24279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24289bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 2429075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn private void loadDefaultHapticSettings(SQLiteStatement stmt) { 2430075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn loadBooleanSetting(stmt, Settings.System.HAPTIC_FEEDBACK_ENABLED, 2431075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn R.bool.def_haptic_feedback); 2432075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } 2433075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn 2434f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void loadSecureSettings(SQLiteDatabase db) { 243589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 243689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 243789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 243889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 24393c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 244089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadStringSetting(stmt, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, 244189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.string.def_location_providers_allowed); 24423c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 244389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist"); 244489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (!TextUtils.isEmpty(wifiWatchList)) { 244589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.WIFI_WATCHDOG_WATCH_LIST, wifiWatchList); 244689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 24473c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 244889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Don't do this. The SystemServer will initialize ADB_ENABLED from a 244989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // persistent system property instead. 245089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori //loadSetting(stmt, Settings.Secure.ADB_ENABLED, 0); 24513c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 245289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Allow mock locations default, based on build 245389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.ALLOW_MOCK_LOCATION, 245489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori "1".equals(SystemProperties.get("ro.allow.mock.location")) ? 1 : 0); 24553c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 245689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSecure35Settings(stmt); 24573c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 245889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND, 245989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_play_notification_snd); 24603c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 246189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_AUTOSTART, 246289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_ums_autostart); 24633c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 246489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_PROMPT, 246589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_ums_prompt); 24663c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 246789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED, 246889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_ums_notify_enabled); 2469585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov 2470585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 2471585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov R.bool.def_accessibility_script_injection); 2472585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov 2473585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS, 2474585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov R.string.def_accessibility_web_content_key_bindings); 2475d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook 247654d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov loadIntegerSetting(stmt, Settings.Secure.LONG_PRESS_TIMEOUT, 247754d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov R.integer.def_long_press_timeout_millis); 2478a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov 2479a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 2480a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov R.bool.def_touch_exploration_enabled); 248155f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov 248255f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, 248355f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov R.bool.def_accessibility_speak_password); 24843ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov 24853ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL, 24863ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov R.string.def_accessibility_screen_reader_url); 248786aeb06635ef8c7f3fb1b4a935d5e8da819e2a88Mike Lockwood 2488d1645f8d0f30709340eb6b6d6da5022bbab77024Amith Yamasani if (SystemProperties.getBoolean("ro.lockscreen.disable.default", false) == true) { 2489d1645f8d0f30709340eb6b6d6da5022bbab77024Amith Yamasani loadSetting(stmt, Settings.System.LOCKSCREEN_DISABLED, "1"); 2490d1645f8d0f30709340eb6b6d6da5022bbab77024Amith Yamasani } else { 2491d1645f8d0f30709340eb6b6d6da5022bbab77024Amith Yamasani loadBooleanSetting(stmt, Settings.System.LOCKSCREEN_DISABLED, 2492d1645f8d0f30709340eb6b6d6da5022bbab77024Amith Yamasani R.bool.def_lockscreen_disabled); 2493d1645f8d0f30709340eb6b6d6da5022bbab77024Amith Yamasani } 24942395527c9bb1cdc3bcd3dfcbc8b72b90ed3e7080Mike Lockwood 2495634471edc409f00f38633e334cd6853954a2b093John Spurlock loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ENABLED, 2496ed108f3d125b0a4cc465057e3514caf781cdea19John Spurlock com.android.internal.R.bool.config_dreamsEnabledByDefault); 2497634471edc409f00f38633e334cd6853954a2b093John Spurlock loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 2498ed108f3d125b0a4cc465057e3514caf781cdea19John Spurlock com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault); 24991a868b7981ca5f52e893fdf9f8f538c9d5ce241dJohn Spurlock loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 2500ed108f3d125b0a4cc465057e3514caf781cdea19John Spurlock com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault); 25011a868b7981ca5f52e893fdf9f8f538c9d5ce241dJohn Spurlock loadStringSetting(stmt, Settings.Secure.SCREENSAVER_COMPONENTS, 2502ed108f3d125b0a4cc465057e3514caf781cdea19John Spurlock com.android.internal.R.string.config_dreamsDefaultComponent); 25031a868b7981ca5f52e893fdf9f8f538c9d5ce241dJohn Spurlock loadStringSetting(stmt, Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT, 2504ed108f3d125b0a4cc465057e3514caf781cdea19John Spurlock com.android.internal.R.string.config_dreamsDefaultComponent); 25051cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov 25061cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 25071cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov R.bool.def_accessibility_display_magnification_enabled); 25081cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov 25091cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov loadFractionSetting(stmt, Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, 25101cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov R.fraction.def_accessibility_display_magnification_scale, 1); 25111cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov 25121cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov loadBooleanSetting(stmt, 25131cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE, 25141cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganov R.bool.def_accessibility_display_magnification_auto_update); 25157f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock 25167f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock loadBooleanSetting(stmt, Settings.Secure.USER_SETUP_COMPLETE, 25177f1c248e80c747663396c6112bd637b0ee558dcbJohn Spurlock R.bool.def_user_setup_complete); 2518c02c4a7c5b393c5527de17faca759ff00be61ce5Mike Lockwood 2519c02c4a7c5b393c5527de17faca759ff00be61ce5Mike Lockwood loadStringSetting(stmt, Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS, 2520c02c4a7c5b393c5527de17faca759ff00be61ce5Mike Lockwood R.string.def_immersive_mode_confirmations); 2521c02c4a7c5b393c5527de17faca759ff00be61ce5Mike Lockwood 2522aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS, 2523aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate R.bool.def_install_non_market_apps); 2524aa036a2db08e19397285062c98aaab7acbf80717Christopher Tate 2525a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown loadBooleanSetting(stmt, Settings.Secure.WAKE_GESTURE_ENABLED, 2526a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown R.bool.def_wake_gesture_enabled); 2527a20dda4a6eedeee1dcaf105d76c8d7d126ce0f1bJeff Brown 252852e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler loadIntegerSetting(stmt, Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 252952e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler R.integer.def_lock_screen_show_notifications); 253052e5701eea2da526191e997f9df5c41ef1e1c938Dan Sandler 2531cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren loadBooleanSetting(stmt, Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 2532cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren R.bool.def_lock_screen_allow_private_notifications); 2533cd8f4f71fc75b4f57d21c4e9f80f1107101ca369Chris Wren 253405af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown loadIntegerSetting(stmt, Settings.Secure.SLEEP_TIMEOUT, 253505af6adb8d4fd5ea069c9aead5a877da9085daa8Jeff Brown R.integer.def_sleep_timeout); 2536503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown 2537503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown /* 2538503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * IMPORTANT: Do not add any more upgrade steps here as the global, 2539503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * secure, and system settings are no longer stored in a database 2540503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * but are kept in memory and persisted to XML. 2541503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * 2542503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * See: SettingsProvider.UpgradeController#onUpgradeLocked 2543503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown */ 254489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 254589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 25469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 254754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 254854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 2549cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn private void loadSecure35Settings(SQLiteStatement stmt) { 2550cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn loadBooleanSetting(stmt, Settings.Secure.BACKUP_ENABLED, 2551cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn R.bool.def_backup_enabled); 255231f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller 2553cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn loadStringSetting(stmt, Settings.Secure.BACKUP_TRANSPORT, 2554cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn R.string.def_backup_transport); 2555cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn } 25566176677e01964cb5751ff217c091571ce6a8b5fbJim Miller 255706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate private void loadGlobalSettings(SQLiteDatabase db) { 255806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate SQLiteStatement stmt = null; 255906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate try { 256006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate stmt = db.compileStatement("INSERT OR IGNORE INTO global(name,value)" 256106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate + " VALUES(?,?);"); 256206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 256306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate // --- Previously in 'system' 256406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadBooleanSetting(stmt, Settings.Global.AIRPLANE_MODE_ON, 256506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.bool.def_airplane_mode_on); 256606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 2567584a44517950204a04ef01345be70b33d8ba43f9Bryce Lee loadBooleanSetting(stmt, Settings.Global.THEATER_MODE_ON, 2568584a44517950204a04ef01345be70b33d8ba43f9Bryce Lee R.bool.def_theater_mode_on); 2569584a44517950204a04ef01345be70b33d8ba43f9Bryce Lee 257006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadStringSetting(stmt, Settings.Global.AIRPLANE_MODE_RADIOS, 257106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.string.def_airplane_mode_radios); 257206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 257306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadStringSetting(stmt, Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS, 257406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.string.airplane_mode_toggleable_radios); 257506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 257606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadBooleanSetting(stmt, Settings.Global.ASSISTED_GPS_ENABLED, 257706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.bool.assisted_gps_enabled); 257806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 257906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadBooleanSetting(stmt, Settings.Global.AUTO_TIME, 258006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.bool.def_auto_time); // Sync time to NITZ 258106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 258206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadBooleanSetting(stmt, Settings.Global.AUTO_TIME_ZONE, 258306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.bool.def_auto_time_zone); // Sync timezone to NITZ 258406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 258506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadSetting(stmt, Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 258606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate ("1".equals(SystemProperties.get("ro.kernel.qemu")) || 258706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate mContext.getResources().getBoolean(R.bool.def_stay_on_while_plugged_in)) 258806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate ? 1 : 0); 258906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 259006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadIntegerSetting(stmt, Settings.Global.WIFI_SLEEP_POLICY, 259106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.integer.def_wifi_sleep_policy); 259206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 259355b02226c07f276e143f9da6f752963882fb60d5Eric Laurent loadSetting(stmt, Settings.Global.MODE_RINGER, 259455b02226c07f276e143f9da6f752963882fb60d5Eric Laurent AudioManager.RINGER_MODE_NORMAL); 259555b02226c07f276e143f9da6f752963882fb60d5Eric Laurent 259606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate // --- Previously in 'secure' 25976f5a9a96523ecf97a9828a410dd1226df47ec4e6Christopher Tate loadBooleanSetting(stmt, Settings.Global.PACKAGE_VERIFIER_ENABLE, 25986f5a9a96523ecf97a9828a410dd1226df47ec4e6Christopher Tate R.bool.def_package_verifier_enable); 25996f5a9a96523ecf97a9828a410dd1226df47ec4e6Christopher Tate 26006f5a9a96523ecf97a9828a410dd1226df47ec4e6Christopher Tate loadBooleanSetting(stmt, Settings.Global.WIFI_ON, 26016f5a9a96523ecf97a9828a410dd1226df47ec4e6Christopher Tate R.bool.def_wifi_on); 26026f5a9a96523ecf97a9828a410dd1226df47ec4e6Christopher Tate 26036f5a9a96523ecf97a9828a410dd1226df47ec4e6Christopher Tate loadBooleanSetting(stmt, Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 26046f5a9a96523ecf97a9828a410dd1226df47ec4e6Christopher Tate R.bool.def_networks_available_notification_on); 26056f5a9a96523ecf97a9828a410dd1226df47ec4e6Christopher Tate 260606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadBooleanSetting(stmt, Settings.Global.BLUETOOTH_ON, 260706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.bool.def_bluetooth_on); 260806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 260906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate // Enable or disable Cell Broadcast SMS 261006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadSetting(stmt, Settings.Global.CDMA_CELL_BROADCAST_SMS, 261106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED); 261206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 261306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate // Data roaming default, based on build 261406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadSetting(stmt, Settings.Global.DATA_ROAMING, 261506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate "true".equalsIgnoreCase( 261606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate SystemProperties.get("ro.com.android.dataroaming", 261706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate "false")) ? 1 : 0); 261806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 261906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadBooleanSetting(stmt, Settings.Global.DEVICE_PROVISIONED, 262006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.bool.def_device_provisioned); 262106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 262206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate final int maxBytes = mContext.getResources().getInteger( 262306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.integer.def_download_manager_max_bytes_over_mobile); 262406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate if (maxBytes > 0) { 262506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadSetting(stmt, Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE, 262606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate Integer.toString(maxBytes)); 262706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } 262806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 262906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate final int recommendedMaxBytes = mContext.getResources().getInteger( 263006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.integer.def_download_manager_recommended_max_bytes_over_mobile); 263106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate if (recommendedMaxBytes > 0) { 263206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadSetting(stmt, Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE, 263306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate Integer.toString(recommendedMaxBytes)); 263406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } 263506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 263606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate // Mobile Data default, based on build 263706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadSetting(stmt, Settings.Global.MOBILE_DATA, 263806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate "true".equalsIgnoreCase( 263906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate SystemProperties.get("ro.com.android.mobiledata", 264006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate "true")) ? 1 : 0); 264106efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 264206efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadBooleanSetting(stmt, Settings.Global.NETSTATS_ENABLED, 264306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.bool.def_netstats_enabled); 264406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 264506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadBooleanSetting(stmt, Settings.Global.USB_MASS_STORAGE_ENABLED, 264606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.bool.def_usb_mass_storage_enabled); 264706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 264806efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate loadIntegerSetting(stmt, Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT, 264906efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate R.integer.def_max_dhcp_retries); 265006efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 265189d5546d7fd3a3bb19820c42e8b4527013dd6545Jeff Brown loadBooleanSetting(stmt, Settings.Global.WIFI_DISPLAY_ON, 265289d5546d7fd3a3bb19820c42e8b4527013dd6545Jeff Brown R.bool.def_wifi_display_on); 265389d5546d7fd3a3bb19820c42e8b4527013dd6545Jeff Brown 2654b14288d4b13d7629f578c4854f5a14d4d9a06783Jim Miller loadStringSetting(stmt, Settings.Global.LOCK_SOUND, 2655b14288d4b13d7629f578c4854f5a14d4d9a06783Jim Miller R.string.def_lock_sound); 2656b14288d4b13d7629f578c4854f5a14d4d9a06783Jim Miller loadStringSetting(stmt, Settings.Global.UNLOCK_SOUND, 2657b14288d4b13d7629f578c4854f5a14d4d9a06783Jim Miller R.string.def_unlock_sound); 265849e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos loadStringSetting(stmt, Settings.Global.TRUSTED_SOUND, 265949e057d7eedb44f5397781254acab4e0ef08a9cfAdrian Roos R.string.def_trusted_sound); 2660531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani loadIntegerSetting(stmt, Settings.Global.POWER_SOUNDS_ENABLED, 2661531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani R.integer.def_power_sounds_enabled); 2662531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani loadStringSetting(stmt, Settings.Global.LOW_BATTERY_SOUND, 2663531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani R.string.def_low_battery_sound); 2664531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani loadIntegerSetting(stmt, Settings.Global.DOCK_SOUNDS_ENABLED, 2665531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani R.integer.def_dock_sounds_enabled); 2666531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani loadStringSetting(stmt, Settings.Global.DESK_DOCK_SOUND, 2667531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani R.string.def_desk_dock_sound); 2668531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani loadStringSetting(stmt, Settings.Global.DESK_UNDOCK_SOUND, 2669531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani R.string.def_desk_undock_sound); 2670531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani loadStringSetting(stmt, Settings.Global.CAR_DOCK_SOUND, 2671531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani R.string.def_car_dock_sound); 2672531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani loadStringSetting(stmt, Settings.Global.CAR_UNDOCK_SOUND, 2673531c237b82a948ac6599ba472bb95e26f71006cfAmith Yamasani R.string.def_car_undock_sound); 267484e2756c0f3794c6efe5568a9d09101ba689fb39Jeff Brown loadStringSetting(stmt, Settings.Global.WIRELESS_CHARGING_STARTED_SOUND, 267584e2756c0f3794c6efe5568a9d09101ba689fb39Jeff Brown R.string.def_wireless_charging_started_sound); 2676b14288d4b13d7629f578c4854f5a14d4d9a06783Jim Miller 2677729f6685f9dfb7a1813a89dbf2298024d9da3813Dmytro Dubovyk loadIntegerSetting(stmt, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 2678729f6685f9dfb7a1813a89dbf2298024d9da3813Dmytro Dubovyk R.integer.def_dock_audio_media_enabled); 2679729f6685f9dfb7a1813a89dbf2298024d9da3813Dmytro Dubovyk 26806e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey loadSetting(stmt, Settings.Global.SET_INSTALL_LOCATION, 0); 26816e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey loadSetting(stmt, Settings.Global.DEFAULT_INSTALL_LOCATION, 26826e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey PackageHelper.APP_INSTALL_AUTO); 26836e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey 26846e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey // Set default cdma emergency tone 26856e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey loadSetting(stmt, Settings.Global.EMERGENCY_TONE, 0); 26866e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey 26876e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey // Set default cdma call auto retry 26886e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey loadSetting(stmt, Settings.Global.CALL_AUTO_RETRY, 0); 26896e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey 269097ecc9ec24056259495d2de4d10a4b312d83a57aNaveen Kalla // Set the preferred network mode to target desired value or Default 269197ecc9ec24056259495d2de4d10a4b312d83a57aNaveen Kalla // value defined in RILConstants 26926e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey int type; 26934fea0923be8d961312908aded2f72011a044903cAmit Mahajan type = RILConstants.PREFERRED_NETWORK_MODE; 26946e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey loadSetting(stmt, Settings.Global.PREFERRED_NETWORK_MODE, type); 26956e2bee75cea415621165698fdd9ce857bbb8872eJeff Sharkey 2696b4d485c18448eadb92083c74fc84722250daeb5dNaveen Kalla // Set the preferred cdma subscription source to target desired value or default 2697b4d485c18448eadb92083c74fc84722250daeb5dNaveen Kalla // value defined in CdmaSubscriptionSourceManager 2698b4d485c18448eadb92083c74fc84722250daeb5dNaveen Kalla type = SystemProperties.getInt("ro.telephony.default_cdma_sub", 2699b4d485c18448eadb92083c74fc84722250daeb5dNaveen Kalla CdmaSubscriptionSourceManager.PREFERRED_CDMA_SUBSCRIPTION); 2700b4d485c18448eadb92083c74fc84722250daeb5dNaveen Kalla loadSetting(stmt, Settings.Global.CDMA_SUBSCRIPTION_MODE, type); 2701b4d485c18448eadb92083c74fc84722250daeb5dNaveen Kalla 2702dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler loadIntegerSetting(stmt, Settings.Global.LOW_BATTERY_SOUND_TIMEOUT, 2703dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler R.integer.def_low_battery_sound_timeout); 2704dea6462aab31049d1f1055314491bc33a6f16b0dDaniel Sandler 27052c4254e4765b4fa675c268550e66a3d4341282bcOskar Grönqvist loadIntegerSetting(stmt, Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 27062c4254e4765b4fa675c268550e66a3d4341282bcOskar Grönqvist R.integer.def_wifi_scan_always_available); 27072c4254e4765b4fa675c268550e66a3d4341282bcOskar Grönqvist 27085242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren loadIntegerSetting(stmt, Global.HEADS_UP_NOTIFICATIONS_ENABLED, 27095242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren R.integer.def_heads_up_enabled); 27105242cf3b38b29e4676a70091d38b51af5e5467e1Chris Wren 2711147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet loadSetting(stmt, Settings.Global.DEVICE_NAME, getDefaultDeviceName()); 2712147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet 2713683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav loadSetting(stmt, Settings.Global.ENHANCED_4G_MODE_ENABLED, 2714683914bfb13908bf380a25258cd45bcf43f13dc9Svetoslav ImsConfig.FeatureValueConstants.ON); 2715503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown 2716503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown /* 2717503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * IMPORTANT: Do not add any more upgrade steps here as the global, 2718503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * secure, and system settings are no longer stored in a database 2719503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * but are kept in memory and persisted to XML. 2720503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * 2721503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown * See: SettingsProvider.UpgradeController#onUpgradeLocked 2722503cffc18121cdbb7d969b3a4de3168f13c75459Jeff Brown */ 272306efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } finally { 272406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate if (stmt != null) stmt.close(); 272506efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } 272606efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate } 272706efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate 272854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadSetting(SQLiteStatement stmt, String key, Object value) { 272954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project stmt.bindString(1, key); 273054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project stmt.bindString(2, value.toString()); 273154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project stmt.execute(); 273254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 27339bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 27349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadStringSetting(SQLiteStatement stmt, String key, int resid) { 27359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, mContext.getResources().getString(resid)); 27369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 27379bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 27389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadBooleanSetting(SQLiteStatement stmt, String key, int resid) { 27399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, 27409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mContext.getResources().getBoolean(resid) ? "1" : "0"); 27419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 27429bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 27439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadIntegerSetting(SQLiteStatement stmt, String key, int resid) { 27449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, 27459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Integer.toString(mContext.getResources().getInteger(resid))); 27469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 27479bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 27489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadFractionSetting(SQLiteStatement stmt, String key, int resid, int base) { 27499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, 27509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Float.toString(mContext.getResources().getFraction(resid, base, base))); 27519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 27525cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani 27535cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani private int getIntValueFromSystem(SQLiteDatabase db, String name, int defaultValue) { 275406efb530a479ea12398c1b3ee4b80e2ac85a1680Christopher Tate return getIntValueFromTable(db, TABLE_SYSTEM, name, defaultValue); 27558631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 27568631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov 27578631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov private int getIntValueFromTable(SQLiteDatabase db, String table, String name, 27588631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov int defaultValue) { 27598631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov String value = getStringValueFromTable(db, table, name, null); 27608631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov return (value != null) ? Integer.parseInt(value) : defaultValue; 27618631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 27628631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov 27638631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov private String getStringValueFromTable(SQLiteDatabase db, String table, String name, 27648631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov String defaultValue) { 27655cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani Cursor c = null; 27665cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani try { 27678631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov c = db.query(table, new String[] { Settings.System.VALUE }, "name='" + name + "'", 27685cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani null, null, null, null); 27695cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani if (c != null && c.moveToFirst()) { 27705cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani String val = c.getString(0); 27718631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov return val == null ? defaultValue : val; 27725cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani } 27735cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani } finally { 27745cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani if (c != null) c.close(); 27755cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani } 27768631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov return defaultValue; 27775cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani } 2778147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet 2779550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet private String getOldDefaultDeviceName() { 2780ad59c43072a3e053eecb2cca831488dc49a3af33Jeff Sharkey return mContext.getResources().getString(R.string.def_device_name, 2781550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet Build.MANUFACTURER, Build.MODEL); 2782550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet } 2783550021ec5a2c8d741506c3fe5d1ee85139bc794aJerome Poichet 2784147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet private String getDefaultDeviceName() { 2785ad59c43072a3e053eecb2cca831488dc49a3af33Jeff Sharkey return mContext.getResources().getString(R.string.def_device_name_simple, Build.MODEL); 2786147b4d75e1d4ca795d45ffe51d83efd19a754cf2Jerome Poichet } 278754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 2788