DatabaseHelper.java revision 24117ce3ae32c40798d2d9bda80675814f76730d
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;
24a9c1625e71ddd7a9cdaf9d1720be8c58e4809fa6Suchi Amalapurapuimport android.content.pm.PackageInfo;
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;
3154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.media.AudioManager;
3254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.media.AudioService;
3354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.net.ConnectivityManager;
3454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.SystemProperties;
3554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.provider.Settings;
36156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasaniimport android.provider.Settings.Secure;
3754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.text.TextUtils;
38f02811f7853202c0934622702ebb9c82e6ab0592Romain Guyimport android.util.AttributeSet;
3954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.util.Config;
4054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.util.Log;
4154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.util.Xml;
4240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu
4340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapuimport com.android.internal.content.PackageHelper;
4404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savilleimport com.android.internal.telephony.RILConstants;
452269d1572e5fcfb725ea55f5764d8c3280d69f6dDianne Hackbornimport com.android.internal.util.XmlUtils;
4654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport com.android.internal.widget.LockPatternUtils;
4754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport com.android.internal.widget.LockPatternView;
4854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport org.xmlpull.v1.XmlPullParser;
4954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport org.xmlpull.v1.XmlPullParserException;
5054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
5154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.io.IOException;
5224117ce3ae32c40798d2d9bda80675814f76730dDianne Hackbornimport java.util.HashSet;
5354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.util.List;
5454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
5554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/**
5654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Database helper class for {@link SettingsProvider}.
5754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Mostly just has a bit {@link #onCreate} to initialize the database.
5854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */
59074da8f9aa424b25d84f4e4eb762ca534ea96716James Wylderpublic class DatabaseHelper extends SQLiteOpenHelper {
6054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    private static final String TAG = "SettingsProvider";
6154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    private static final String DATABASE_NAME = "settings.db";
62f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller
63f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller    // Please, please please. If you update the database version, check to make sure the
64f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller    // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
65f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller    // is properly propagated through your change.  Not doing so will result in a loss of user
66f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller    // settings.
6740e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu    private static final int DATABASE_VERSION = 56;
689bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
6954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    private Context mContext;
7054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
7124117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn    private static final HashSet<String> mValidTables = new HashSet<String>();
7224117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn
7324117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn    static {
7424117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn        mValidTables.add("system");
7524117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn        mValidTables.add("secure");
7624117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn        mValidTables.add("bluetooth_devices");
7724117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn        mValidTables.add("bookmarks");
7824117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn
7924117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn        // These are old.
8024117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn        mValidTables.add("favorites");
8124117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn        mValidTables.add("gservices");
8224117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn        mValidTables.add("old_favorites");
8324117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn    }
8424117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn
8554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public DatabaseHelper(Context context) {
8654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        super(context, DATABASE_NAME, null, DATABASE_VERSION);
8754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        mContext = context;
8854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
8954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
9024117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn    public static boolean isValidTable(String name) {
9124117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn        return mValidTables.contains(name);
9224117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn    }
9324117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn
94f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project    private void createSecureTable(SQLiteDatabase db) {
95f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        db.execSQL("CREATE TABLE secure (" +
96f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
97f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                "name TEXT UNIQUE ON CONFLICT REPLACE," +
98f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                "value TEXT" +
99f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                ");");
100f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        db.execSQL("CREATE INDEX secureIndex1 ON secure (name);");
101f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project    }
1029bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
10354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    @Override
10454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public void onCreate(SQLiteDatabase db) {
10554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        db.execSQL("CREATE TABLE system (" +
10654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
10754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "name TEXT UNIQUE ON CONFLICT REPLACE," +
10854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "value TEXT" +
10954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    ");");
11054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        db.execSQL("CREATE INDEX systemIndex1 ON system (name);");
11154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
112f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        createSecureTable(db);
113f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
11454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        db.execSQL("CREATE TABLE bluetooth_devices (" +
11554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "_id INTEGER PRIMARY KEY," +
11654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "name TEXT," +
11754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "addr TEXT," +
11854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "channel INTEGER," +
11954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "type INTEGER" +
12054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    ");");
12154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
12254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        db.execSQL("CREATE TABLE bookmarks (" +
12354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "_id INTEGER PRIMARY KEY," +
12454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "title TEXT," +
12554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "folder TEXT," +
12654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "intent TEXT," +
12754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "shortcut INTEGER," +
12854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "ordering INTEGER" +
12954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    ");");
13054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
13154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        db.execSQL("CREATE INDEX bookmarksIndex1 ON bookmarks (folder);");
13254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        db.execSQL("CREATE INDEX bookmarksIndex2 ON bookmarks (shortcut);");
13354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
13454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        // Populate bookmarks table with initial bookmarks
13554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        loadBookmarks(db);
13654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
13754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        // Load initial volume levels into DB
13854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        loadVolumeLevels(db);
13954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
14054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        // Load inital settings values
14154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        loadSettings(db);
14254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
14354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
14454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    @Override
14554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) {
14654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        Log.w(TAG, "Upgrading settings database from version " + oldVersion + " to "
14754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                + currentVersion);
1489bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
14954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        int upgradeVersion = oldVersion;
15054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
15154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        // Pattern for upgrade blocks:
15254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        //
15354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        //    if (upgradeVersion == [the DATABASE_VERSION you set] - 1) {
15454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        //        .. your upgrade logic..
15554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        //        upgradeVersion = [the DATABASE_VERSION you set]
15654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        //    }
1579bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
15854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        if (upgradeVersion == 20) {
15954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /*
16054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * Version 21 is part of the volume control refresh. There is no
16154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * longer a UI-visible for setting notification vibrate on/off (in
16254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * our design), but the functionality still exists. Force the
16354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * notification vibrate to on.
16454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
16554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            loadVibrateSetting(db, true);
16654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
16754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            upgradeVersion = 21;
16854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
1699bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
17054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        if (upgradeVersion < 22) {
17154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            upgradeVersion = 22;
17254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // Upgrade the lock gesture storage location and format
17354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            upgradeLockPatternLocation(db);
17454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
17554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
17654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        if (upgradeVersion < 23) {
17754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.execSQL("UPDATE favorites SET iconResource=0 WHERE iconType=0");
17854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            upgradeVersion = 23;
17954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
18054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
18154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        if (upgradeVersion == 23) {
18254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.beginTransaction();
18354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            try {
18454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                db.execSQL("ALTER TABLE favorites ADD spanX INTEGER");
18554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                db.execSQL("ALTER TABLE favorites ADD spanY INTEGER");
18654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                // Shortcuts, applications, folders
18754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                db.execSQL("UPDATE favorites SET spanX=1, spanY=1 WHERE itemType<=0");
18854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                // Photo frames, clocks
18904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville                db.execSQL(
19004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville                    "UPDATE favorites SET spanX=2, spanY=2 WHERE itemType=1000 or itemType=1002");
19154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                // Search boxes
19254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                db.execSQL("UPDATE favorites SET spanX=4, spanY=1 WHERE itemType=1001");
19354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                db.setTransactionSuccessful();
19454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            } finally {
19554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                db.endTransaction();
19654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
19754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            upgradeVersion = 24;
19854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
1999bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
20054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        if (upgradeVersion == 24) {
20154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.beginTransaction();
20254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            try {
20354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                // The value of the constants for preferring wifi or preferring mobile have been
20454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                // swapped, so reload the default.
20554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                db.execSQL("DELETE FROM system WHERE name='network_preference'");
20654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                db.execSQL("INSERT INTO system ('name', 'value') values ('network_preference', '" +
20754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        ConnectivityManager.DEFAULT_NETWORK_PREFERENCE + "')");
20854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                db.setTransactionSuccessful();
20954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            } finally {
21054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                db.endTransaction();
21154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
21254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            upgradeVersion = 25;
21354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
214f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
215f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        if (upgradeVersion == 25) {
216f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            db.beginTransaction();
217f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            try {
218f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                db.execSQL("ALTER TABLE favorites ADD uri TEXT");
219f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                db.execSQL("ALTER TABLE favorites ADD displayMode INTEGER");
220f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                db.setTransactionSuccessful();
221f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            } finally {
222f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                db.endTransaction();
223f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            }
224f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            upgradeVersion = 26;
225f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        }
2269bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
227f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        if (upgradeVersion == 26) {
228f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            // This introduces the new secure settings table.
229f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            db.beginTransaction();
230f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            try {
231f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                createSecureTable(db);
232f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                db.setTransactionSuccessful();
233f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            } finally {
234f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                db.endTransaction();
235f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            }
236f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            upgradeVersion = 27;
237f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        }
2389bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
239f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        if (upgradeVersion == 27) {
240156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            String[] settingsToMove = {
241f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.ADB_ENABLED,
242f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.ANDROID_ID,
243f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.BLUETOOTH_ON,
244f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.DATA_ROAMING,
245f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.DEVICE_PROVISIONED,
246f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.HTTP_PROXY,
247f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.INSTALL_NON_MARKET_APPS,
248f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
249f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.LOGGING_ID,
250f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.NETWORK_PREFERENCE,
251f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.PARENTAL_CONTROL_ENABLED,
252f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.PARENTAL_CONTROL_LAST_UPDATE,
253f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.PARENTAL_CONTROL_REDIRECT_URL,
254f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.SETTINGS_CLASSNAME,
255f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.USB_MASS_STORAGE_ENABLED,
256f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.USE_GOOGLE_MAIL,
257f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
258f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY,
259f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_NUM_OPEN_NETWORKS_KEPT,
260f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_ON,
261f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE,
262f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_WATCHDOG_AP_COUNT,
263f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS,
264f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED,
265f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS,
266f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT,
267f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_WATCHDOG_MAX_AP_CHECKS,
268f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_WATCHDOG_ON,
269f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_WATCHDOG_PING_COUNT,
270f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_WATCHDOG_PING_DELAY_MS,
271f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                    Settings.Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS,
272f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                };
273156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            moveFromSystemToSecure(db, settingsToMove);
274f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            upgradeVersion = 28;
275f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        }
2769bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
277f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        if (upgradeVersion == 28 || upgradeVersion == 29) {
278f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            // Note: The upgrade to 28 was flawed since it didn't delete the old
279f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            // setting first before inserting. Combining 28 and 29 with the
280f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            // fixed version.
281f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
282f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            // This upgrade adds the STREAM_NOTIFICATION type to the list of
283f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            // types affected by ringer modes (silent, vibrate, etc.)
284f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            db.beginTransaction();
285f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            try {
286f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                db.execSQL("DELETE FROM system WHERE name='"
287f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                        + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'");
288f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                int newValue = (1 << AudioManager.STREAM_RING)
289f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                        | (1 << AudioManager.STREAM_NOTIFICATION)
290f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                        | (1 << AudioManager.STREAM_SYSTEM);
291f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                db.execSQL("INSERT INTO system ('name', 'value') values ('"
292f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                        + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '"
293f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                        + String.valueOf(newValue) + "')");
294f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                db.setTransactionSuccessful();
295f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            } finally {
296f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project                db.endTransaction();
297f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            }
2989bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
299f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            upgradeVersion = 30;
300f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        }
3019bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
3029266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project        if (upgradeVersion == 30) {
3039266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project            /*
3049266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project             * Upgrade 31 clears the title for all quick launch shortcuts so the
3059266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project             * activities' titles will be resolved at display time. Also, the
3069266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project             * folder is changed to '@quicklaunch'.
3079266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project             */
3089266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project            db.beginTransaction();
3099266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project            try {
3109266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project                db.execSQL("UPDATE bookmarks SET folder = '@quicklaunch'");
3119266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project                db.execSQL("UPDATE bookmarks SET title = ''");
3129266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project                db.setTransactionSuccessful();
3139266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project            } finally {
3149266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project                db.endTransaction();
3159266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project            }
3169266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project            upgradeVersion = 31;
3179266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project        }
318f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (upgradeVersion == 31) {
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            /*
321ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project             * Animations are now managed in preferences, and may be
322ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project             * enabled or disabled based on product resources.
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             */
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            db.beginTransaction();
32589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            SQLiteStatement stmt = null;
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            try {
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                db.execSQL("DELETE FROM system WHERE name='"
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        + Settings.System.WINDOW_ANIMATION_SCALE + "'");
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                db.execSQL("DELETE FROM system WHERE name='"
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        + Settings.System.TRANSITION_ANIMATION_SCALE + "'");
33189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                stmt = db.compileStatement("INSERT INTO system(name,value)"
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        + " VALUES(?,?);");
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                loadDefaultAnimationSettings(stmt);
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                db.setTransactionSuccessful();
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } finally {
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                db.endTransaction();
33789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                if (stmt != null) stmt.close();
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            upgradeVersion = 32;
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (upgradeVersion == 32) {
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // The Wi-Fi watchdog SSID list is now seeded with the value of
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // the property ro.com.android.wifi-watchlist
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist");
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (!TextUtils.isEmpty(wifiWatchList)) {
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                db.beginTransaction();
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                try {
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    db.execSQL("INSERT OR IGNORE INTO secure(name,value) values('" +
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            Settings.Secure.WIFI_WATCHDOG_WATCH_LIST + "','" +
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            wifiWatchList + "');");
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    db.setTransactionSuccessful();
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                } finally {
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    db.endTransaction();
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                }
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            upgradeVersion = 33;
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3599bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
3604df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project        if (upgradeVersion == 33) {
3614df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project            // Set the default zoom controls to: tap-twice to bring up +/-
3624df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project            db.beginTransaction();
3634df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project            try {
3644df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project                db.execSQL("INSERT INTO system(name,value) values('zoom','2');");
3654df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project                db.setTransactionSuccessful();
3664df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project            } finally {
3674df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project                db.endTransaction();
3684df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project            }
3694df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project            upgradeVersion = 34;
3704df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project        }
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
372bcab8df83e6e769a7cbcc742e72b47d665998793Mike Lockwood        if (upgradeVersion == 34) {
373bcab8df83e6e769a7cbcc742e72b47d665998793Mike Lockwood            db.beginTransaction();
37489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            SQLiteStatement stmt = null;
375bcab8df83e6e769a7cbcc742e72b47d665998793Mike Lockwood            try {
37689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
377cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn                        + " VALUES(?,?);");
378cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn                loadSecure35Settings(stmt);
379cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn                db.setTransactionSuccessful();
380cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn            } finally {
381cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn                db.endTransaction();
38289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                if (stmt != null) stmt.close();
383cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn            }
384f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller            upgradeVersion = 35;
38502901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood        }
38602901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood            // due to a botched merge from donut to eclair, the initialization of ASSISTED_GPS_ENABLED
38702901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood            // was accidentally done out of order here.
38802901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood            // to fix this, ASSISTED_GPS_ENABLED is now initialized while upgrading from 38 to 39,
38902901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood            // and we intentionally do nothing from 35 to 36 now.
39002901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood        if (upgradeVersion == 35) {
391575d1af980f4b4866325bfc487455f54606cf49eThe Android Open Source Project            upgradeVersion = 36;
392cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn        }
39302901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood
394a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent        if (upgradeVersion == 36) {
395a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent           // This upgrade adds the STREAM_SYSTEM_ENFORCED type to the list of
396a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent            // types affected by ringer modes (silent, vibrate, etc.)
397a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent            db.beginTransaction();
398a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent            try {
399a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent                db.execSQL("DELETE FROM system WHERE name='"
400a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent                        + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'");
401a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent                int newValue = (1 << AudioManager.STREAM_RING)
402a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent                        | (1 << AudioManager.STREAM_NOTIFICATION)
403a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent                        | (1 << AudioManager.STREAM_SYSTEM)
404a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent                        | (1 << AudioManager.STREAM_SYSTEM_ENFORCED);
405a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent                db.execSQL("INSERT INTO system ('name', 'value') values ('"
406a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent                        + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '"
407a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent                        + String.valueOf(newValue) + "')");
408a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent                db.setTransactionSuccessful();
409a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent            } finally {
410a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent                db.endTransaction();
411a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent            }
4124880575bacd9f49d864e8b61efca8cdeb231895cJim Miller            upgradeVersion = 37;
413a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent        }
414a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent
415bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood        if (upgradeVersion == 37) {
416bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood            db.beginTransaction();
41789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            SQLiteStatement stmt = null;
418bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood            try {
41989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
420bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood                        + " VALUES(?,?);");
421bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood                loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
422bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood                        R.string.airplane_mode_toggleable_radios);
423bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood                db.setTransactionSuccessful();
424bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood            } finally {
425bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood                db.endTransaction();
42689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                if (stmt != null) stmt.close();
427bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood            }
428bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood            upgradeVersion = 38;
429bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood        }
430bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood
43102901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood        if (upgradeVersion == 38) {
43202901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood            db.beginTransaction();
43302901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood            try {
43402901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood                String value =
43502901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood                        mContext.getResources().getBoolean(R.bool.assisted_gps_enabled) ? "1" : "0";
43602901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood                db.execSQL("INSERT OR IGNORE INTO secure(name,value) values('" +
43702901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood                        Settings.Secure.ASSISTED_GPS_ENABLED + "','" + value + "');");
43802901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood                db.setTransactionSuccessful();
43902901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood            } finally {
44002901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood                db.endTransaction();
44102901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood            }
44202901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood
44302901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood            upgradeVersion = 39;
44402901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood        }
44502901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood
446951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy        if (upgradeVersion == 39) {
447951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy            db.beginTransaction();
448951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy            try {
449951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy                String value =
450951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy                        mContext.getResources().getBoolean(
451951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy                        R.bool.def_screen_brightness_automatic_mode) ? "1" : "0";
452951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy                db.execSQL("INSERT OR IGNORE INTO system(name,value) values('" +
453951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy                        Settings.System.SCREEN_BRIGHTNESS_MODE + "','" + value + "');");
454951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy                db.setTransactionSuccessful();
455951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy            } finally {
456951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy                db.endTransaction();
457951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy            }
458951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy
459951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy            upgradeVersion = 40;
460951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy        }
461951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy
462bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn        if (upgradeVersion == 40) {
463bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn            /*
464bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn             * All animations are now turned on by default!
465bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn             */
466bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn            db.beginTransaction();
46789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            SQLiteStatement stmt = null;
468bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn            try {
469bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn                db.execSQL("DELETE FROM system WHERE name='"
470bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn                        + Settings.System.WINDOW_ANIMATION_SCALE + "'");
471bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn                db.execSQL("DELETE FROM system WHERE name='"
472bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn                        + Settings.System.TRANSITION_ANIMATION_SCALE + "'");
47389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                stmt = db.compileStatement("INSERT INTO system(name,value)"
474bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn                        + " VALUES(?,?);");
475bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn                loadDefaultAnimationSettings(stmt);
476bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn                db.setTransactionSuccessful();
477bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn            } finally {
478bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn                db.endTransaction();
47989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                if (stmt != null) stmt.close();
480bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn            }
481bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn            upgradeVersion = 41;
482bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn        }
483bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn
484075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn        if (upgradeVersion == 41) {
485075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn            /*
486075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn             * Initialize newly public haptic feedback setting
487075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn             */
488075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn            db.beginTransaction();
48989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            SQLiteStatement stmt = null;
490075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn            try {
491075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn                db.execSQL("DELETE FROM system WHERE name='"
492075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn                        + Settings.System.HAPTIC_FEEDBACK_ENABLED + "'");
49389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                stmt = db.compileStatement("INSERT INTO system(name,value)"
494075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn                        + " VALUES(?,?);");
495075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn                loadDefaultHapticSettings(stmt);
496075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn                db.setTransactionSuccessful();
497075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn            } finally {
498075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn                db.endTransaction();
49989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                if (stmt != null) stmt.close();
500075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn            }
501075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn            upgradeVersion = 42;
502075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn        }
503075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn
504ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani        if (upgradeVersion == 42) {
505ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani            /*
506ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani             * Initialize new notification pulse setting
507ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani             */
508ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani            db.beginTransaction();
50989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            SQLiteStatement stmt = null;
510ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani            try {
51189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                stmt = db.compileStatement("INSERT INTO system(name,value)"
512ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani                        + " VALUES(?,?);");
513ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani                loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE,
514ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani                        R.bool.def_notification_pulse);
515ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani                db.setTransactionSuccessful();
516ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani            } finally {
517ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani                db.endTransaction();
51889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                if (stmt != null) stmt.close();
519ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani            }
520ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani            upgradeVersion = 43;
521ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani        }
522ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani
523484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent        if (upgradeVersion == 43) {
524484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent            /*
525484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent             * This upgrade stores bluetooth volume separately from voice volume
526484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent             */
527484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent            db.beginTransaction();
52889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            SQLiteStatement stmt = null;
529484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent            try {
53089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
531484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent                        + " VALUES(?,?);");
532484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent                loadSetting(stmt, Settings.System.VOLUME_BLUETOOTH_SCO,
533484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent                        AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]);
534484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent                db.setTransactionSuccessful();
535484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent            } finally {
536484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent                db.endTransaction();
53789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                if (stmt != null) stmt.close();
538484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent            }
539484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent            upgradeVersion = 44;
540484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent        }
541484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent
542aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker        if (upgradeVersion == 44) {
543aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker            /*
544aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker             * Gservices was moved into vendor/google.
545aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker             */
546aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker            db.execSQL("DROP TABLE IF EXISTS gservices");
547aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker            db.execSQL("DROP INDEX IF EXISTS gservicesIndex1");
548aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker            upgradeVersion = 45;
549aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker        }
55087734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat
55187734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat        if (upgradeVersion == 45) {
55287734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat             /*
55387734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat              * New settings for MountService
55487734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat              */
55587734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat            db.beginTransaction();
55687734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat            try {
55787734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat                db.execSQL("INSERT INTO secure(name,value) values('" +
55887734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat                        Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND + "','1');");
55987734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat                db.execSQL("INSERT INTO secure(name,value) values('" +
56087734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat                        Settings.Secure.MOUNT_UMS_AUTOSTART + "','0');");
56187734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat                db.execSQL("INSERT INTO secure(name,value) values('" +
56287734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat                        Settings.Secure.MOUNT_UMS_PROMPT + "','1');");
56387734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat                db.execSQL("INSERT INTO secure(name,value) values('" +
56487734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat                        Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED + "','1');");
56587734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat                db.setTransactionSuccessful();
56687734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat            } finally {
56787734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat                db.endTransaction();
56887734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat            }
56987734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat            upgradeVersion = 46;
57087734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat        }
57187734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat
572df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn        if (upgradeVersion == 46) {
573df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn            /*
574df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn             * The password mode constants have changed; reset back to no
575df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn             * password.
576df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn             */
577df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn            db.beginTransaction();
578df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn            try {
579df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn                db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';");
580df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn                db.setTransactionSuccessful();
581df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn            } finally {
582df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn                db.endTransaction();
583df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn            }
584df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn           upgradeVersion = 47;
585df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn       }
586df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn
5876176677e01964cb5751ff217c091571ce6a8b5fbJim Miller
5889327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn        if (upgradeVersion == 47) {
5899327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn            /*
5909327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn             * The password mode constants have changed again; reset back to no
5919327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn             * password.
5929327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn             */
5939327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn            db.beginTransaction();
5949327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn            try {
5959327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn                db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';");
5969327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn                db.setTransactionSuccessful();
5979327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn            } finally {
5989327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn                db.endTransaction();
5999327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn            }
6009327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn           upgradeVersion = 48;
6019327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn       }
6026176677e01964cb5751ff217c091571ce6a8b5fbJim Miller
6035d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau       if (upgradeVersion == 48) {
6045d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau           /*
60521f1bd17b2dfe361acbb28453b3f3b1a110932faDianne Hackborn            * Default recognition service no longer initialized here,
60621f1bd17b2dfe361acbb28453b3f3b1a110932faDianne Hackborn            * moved to RecognitionManagerService.
6075d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau            */
6085d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau           upgradeVersion = 49;
6095d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau       }
61031f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller
6110e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler       if (upgradeVersion == 49) {
6120e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler           /*
6130e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            * New settings for new user interface noises.
6140e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            */
6150e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler           db.beginTransaction();
61689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori           SQLiteStatement stmt = null;
6170e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler           try {
61889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                stmt = db.compileStatement("INSERT INTO system(name,value)"
6190e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler                        + " VALUES(?,?);");
6200e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler                loadUISoundEffectsSettings(stmt);
6210e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler                db.setTransactionSuccessful();
6220e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            } finally {
6230e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler                db.endTransaction();
62489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                if (stmt != null) stmt.close();
6250e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            }
6260e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler
6270e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler           upgradeVersion = 50;
6280e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler       }
6290e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler
630f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor       if (upgradeVersion == 50) {
631f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor           /*
63240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu            * Install location no longer initiated here.
633f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor            */
634f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor           upgradeVersion = 51;
635f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor       }
636f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor
637156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani       if (upgradeVersion == 51) {
638156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani           /* Move the lockscreen related settings to Secure, including some private ones. */
639156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani           String[] settingsToMove = {
640156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                   Secure.LOCK_PATTERN_ENABLED,
641156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                   Secure.LOCK_PATTERN_VISIBLE,
642156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                   Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED,
643156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                   "lockscreen.password_type",
644156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                   "lockscreen.lockoutattemptdeadline",
645156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                   "lockscreen.patterneverchosen",
646156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                   "lock_pattern_autolock",
647156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                   "lockscreen.lockedoutpermanently",
648156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                   "lockscreen.password_salt"
649156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani           };
650156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani           moveFromSystemToSecure(db, settingsToMove);
651156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani           upgradeVersion = 52;
652156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani       }
653156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani
6541c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler        if (upgradeVersion == 52) {
6551c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler            // new vibration/silent mode settings
6561c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler            db.beginTransaction();
65789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            SQLiteStatement stmt = null;
6581c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler            try {
65989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                stmt = db.compileStatement("INSERT INTO system(name,value)"
6601c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler                        + " VALUES(?,?);");
6611c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler                loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT,
6621c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler                        R.bool.def_vibrate_in_silent);
6631c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler                db.setTransactionSuccessful();
6641c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler            } finally {
6651c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler                db.endTransaction();
66689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                if (stmt != null) stmt.close();
6671c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler            }
6681c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler
6691c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler            upgradeVersion = 53;
6701c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler        }
671089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu
672089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu        if (upgradeVersion == 53) {
673089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu            /*
67440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu             * New settings for set install location UI no longer initiated here.
675089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu             */
676089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu            upgradeVersion = 54;
677089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu        }
6781c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler
679b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani        if (upgradeVersion == 54) {
680b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani            /*
681b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani             * Update the screen timeout value if set to never
682b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani             */
683b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani            db.beginTransaction();
684b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani            try {
685b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani                upgradeScreenTimeoutFromNever(db);
686b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani                db.setTransactionSuccessful();
687b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani            } finally {
688b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani                db.endTransaction();
689b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani            }
690b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani
691b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani            upgradeVersion = 55;
692b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani        }
693b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani
69440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu        if (upgradeVersion == 55) {
69540e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu            /* Move the install location settings. */
69640e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu            String[] settingsToMove = {
69740e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu                    Secure.SET_INSTALL_LOCATION,
69840e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu                    Secure.DEFAULT_INSTALL_LOCATION
69940e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu            };
70040e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu            moveFromSystemToSecure(db, settingsToMove);
70140e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu            db.beginTransaction();
70240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu            SQLiteStatement stmt = null;
70340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu            try {
70440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu                stmt = db.compileStatement("INSERT INTO system(name,value)"
70540e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu                        + " VALUES(?,?);");
70640e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu                loadSetting(stmt, Secure.SET_INSTALL_LOCATION, 0);
70740e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu                loadSetting(stmt, Secure.DEFAULT_INSTALL_LOCATION,
70840e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu                        PackageHelper.APP_INSTALL_AUTO);
70940e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu                db.setTransactionSuccessful();
71040e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu             } finally {
71140e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu                 db.endTransaction();
71240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu                 if (stmt != null) stmt.close();
71340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu             }
71440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu            upgradeVersion = 56;
71540e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu        }
7161c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler        // *** Remember to update DATABASE_VERSION above!
7171c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler
7181c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler        if (upgradeVersion != currentVersion) {
71954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Log.w(TAG, "Got stuck trying to upgrade from version " + upgradeVersion
72054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    + ", must wipe the settings provider");
72154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.execSQL("DROP TABLE IF EXISTS system");
72254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.execSQL("DROP INDEX IF EXISTS systemIndex1");
723f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            db.execSQL("DROP TABLE IF EXISTS secure");
724f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            db.execSQL("DROP INDEX IF EXISTS secureIndex1");
72554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.execSQL("DROP TABLE IF EXISTS gservices");
72654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.execSQL("DROP INDEX IF EXISTS gservicesIndex1");
72754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.execSQL("DROP TABLE IF EXISTS bluetooth_devices");
72854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.execSQL("DROP TABLE IF EXISTS bookmarks");
72954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.execSQL("DROP INDEX IF EXISTS bookmarksIndex1");
73054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.execSQL("DROP INDEX IF EXISTS bookmarksIndex2");
73154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.execSQL("DROP TABLE IF EXISTS favorites");
73254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            onCreate(db);
7336176677e01964cb5751ff217c091571ce6a8b5fbJim Miller
7346176677e01964cb5751ff217c091571ce6a8b5fbJim Miller            // Added for diagnosing settings.db wipes after the fact
7356176677e01964cb5751ff217c091571ce6a8b5fbJim Miller            String wipeReason = oldVersion + "/" + upgradeVersion + "/" + currentVersion;
7366176677e01964cb5751ff217c091571ce6a8b5fbJim Miller            db.execSQL("INSERT INTO secure(name,value) values('" +
7376176677e01964cb5751ff217c091571ce6a8b5fbJim Miller                    "wiped_db_reason" + "','" + wipeReason + "');");
73854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
73954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
74054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
741156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani    private void moveFromSystemToSecure(SQLiteDatabase db, String [] settingsToMove) {
742156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani        // Copy settings values from 'system' to 'secure' and delete them from 'system'
743156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani        SQLiteStatement insertStmt = null;
744156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani        SQLiteStatement deleteStmt = null;
745156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani
746156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani        db.beginTransaction();
747156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani        try {
748156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            insertStmt =
749156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                db.compileStatement("INSERT INTO secure (name,value) SELECT name,value FROM "
750156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                    + "system WHERE name=?");
751156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            deleteStmt = db.compileStatement("DELETE FROM system WHERE name=?");
752156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani
753156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani
754156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            for (String setting : settingsToMove) {
755156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                insertStmt.bindString(1, setting);
756156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                insertStmt.execute();
757156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani
758156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                deleteStmt.bindString(1, setting);
759156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                deleteStmt.execute();
760156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            }
761156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            db.setTransactionSuccessful();
762156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani        } finally {
763156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            db.endTransaction();
764156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            if (insertStmt != null) {
765156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                insertStmt.close();
766156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            }
767156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            if (deleteStmt != null) {
768156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani                deleteStmt.close();
769156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani            }
770156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani        }
771156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani    }
772156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani
77354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    private void upgradeLockPatternLocation(SQLiteDatabase db) {
7749bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh        Cursor c = db.query("system", new String[] {"_id", "value"}, "name='lock_pattern'",
77554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                null, null, null, null);
77654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        if (c.getCount() > 0) {
77754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            c.moveToFirst();
77854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            String lockPattern = c.getString(1);
77954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (!TextUtils.isEmpty(lockPattern)) {
78054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                // Convert lock pattern
78154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                try {
78231f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller                    LockPatternUtils lpu = new LockPatternUtils(mContext);
7839bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh                    List<LockPatternView.Cell> cellPattern =
78454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                            LockPatternUtils.stringToPattern(lockPattern);
78554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    lpu.saveLockPattern(cellPattern);
78654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                } catch (IllegalArgumentException e) {
78754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    // Don't want corrupted lock pattern to hang the reboot process
78854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
78954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
79054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            c.close();
79154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.delete("system", "name='lock_pattern'", null);
79254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        } else {
79354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            c.close();
79454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
79554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
79654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
797b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani    private void upgradeScreenTimeoutFromNever(SQLiteDatabase db) {
798b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani        // See if the timeout is -1 (for "Never").
799b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani        Cursor c = db.query("system", new String[] { "_id", "value" }, "name=? AND value=?",
800b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani                new String[] { Settings.System.SCREEN_OFF_TIMEOUT, "-1" },
801b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani                null, null, null);
802b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani
803b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani        SQLiteStatement stmt = null;
804b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani        if (c.getCount() > 0) {
805b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani            c.close();
806b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani            try {
807b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani                stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)"
808b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani                        + " VALUES(?,?);");
809b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani
810b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani                // Set the timeout to 30 minutes in milliseconds
811cd66caf015d18baa03a86796649550cb65cd99eaAmith Yamasani                loadSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT,
812cd66caf015d18baa03a86796649550cb65cd99eaAmith Yamasani                        Integer.toString(30 * 60 * 1000));
813b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani            } finally {
814b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani                if (stmt != null) stmt.close();
815b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani            }
816b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani        } else {
817b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani            c.close();
818b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani        }
819b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani    }
820b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani
82154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
82254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Loads the default set of bookmarked shortcuts from an xml file.
82354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     *
82454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * @param db The database to write the values into
82554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * @param startingIndex The zero-based position at which bookmarks in this file should begin
82654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
827f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy    private int loadBookmarks(SQLiteDatabase db, int startingIndex) {
82854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        Intent intent = new Intent(Intent.ACTION_MAIN, null);
82954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        intent.addCategory(Intent.CATEGORY_LAUNCHER);
83054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        ContentValues values = new ContentValues();
83154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
83254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        PackageManager packageManager = mContext.getPackageManager();
83354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        int i = startingIndex;
83454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
835f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy        try {
836f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy            XmlResourceParser parser = mContext.getResources().getXml(R.xml.bookmarks);
83754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            XmlUtils.beginDocument(parser, "bookmarks");
83854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
839f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy            final int depth = parser.getDepth();
840f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy            int type;
841f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy
842f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy            while (((type = parser.next()) != XmlPullParser.END_TAG ||
843f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                    parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) {
844f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy
845f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                if (type != XmlPullParser.START_TAG) {
846f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                    continue;
847f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                }
84854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
84954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                String name = parser.getName();
85054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                if (!"bookmark".equals(name)) {
85154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    break;
85254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
85354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
85454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                String pkg = parser.getAttributeValue(null, "package");
85554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                String cls = parser.getAttributeValue(null, "class");
85654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                String shortcutStr = parser.getAttributeValue(null, "shortcut");
857f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy
85854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                int shortcutValue = (int) shortcutStr.charAt(0);
85954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                if (TextUtils.isEmpty(shortcutStr)) {
86054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    Log.w(TAG, "Unable to get shortcut for: " + pkg + "/" + cls);
86154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
862f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy
863f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                ActivityInfo info = null;
864f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                ComponentName cn = new ComponentName(pkg, cls);
86554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                try {
86654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    info = packageManager.getActivityInfo(cn, 0);
867f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                } catch (PackageManager.NameNotFoundException e) {
868f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                    String[] packages = packageManager.canonicalToCurrentPackageNames(
869f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                            new String[] { pkg });
870f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                    cn = new ComponentName(packages[0], cls);
871f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                    try {
872f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                        info = packageManager.getActivityInfo(cn, 0);
873f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                    } catch (PackageManager.NameNotFoundException e1) {
874f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                        Log.w(TAG, "Unable to add bookmark: " + pkg + "/" + cls, e);
875f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                    }
876f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                }
877f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy
878f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                if (info != null) {
87954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    intent.setComponent(cn);
88054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
881f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy                    values.put(Settings.Bookmarks.INTENT, intent.toUri(0));
88254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    values.put(Settings.Bookmarks.TITLE,
88354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                            info.loadLabel(packageManager).toString());
88454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    values.put(Settings.Bookmarks.SHORTCUT, shortcutValue);
88554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    db.insert("bookmarks", null, values);
88654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    i++;
88754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
88854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
88954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        } catch (XmlPullParserException e) {
89054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Log.w(TAG, "Got execption parsing bookmarks.", e);
89154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        } catch (IOException e) {
89254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Log.w(TAG, "Got execption parsing bookmarks.", e);
89354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
89454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
89554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        return i;
89654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
89754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
89854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
89954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Loads the default set of bookmark packages.
90054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     *
90154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * @param db The database to write the values into
90254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
90354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    private void loadBookmarks(SQLiteDatabase db) {
904f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy        loadBookmarks(db, 0);
90554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
90654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
90754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
90854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Loads the default volume levels. It is actually inserting the index of
90954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * the volume array for each of the volume controls.
91054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     *
91154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * @param db the database to insert the volume levels into
91254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
91354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    private void loadVolumeLevels(SQLiteDatabase db) {
91489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        SQLiteStatement stmt = null;
91589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        try {
91689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
91789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    + " VALUES(?,?);");
91889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
91989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.VOLUME_MUSIC,
92089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_MUSIC]);
92189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.VOLUME_RING,
92289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_RING]);
92389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.VOLUME_SYSTEM,
92489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_SYSTEM]);
92589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(
92689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    stmt,
92789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    Settings.System.VOLUME_VOICE,
92889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_VOICE_CALL]);
92989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.VOLUME_ALARM,
93089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_ALARM]);
93189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(
93289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    stmt,
93389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    Settings.System.VOLUME_NOTIFICATION,
93489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_NOTIFICATION]);
93589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(
93689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    stmt,
93789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    Settings.System.VOLUME_BLUETOOTH_SCO,
93889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]);
93989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
94089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.MODE_RINGER,
94189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    AudioManager.RINGER_MODE_NORMAL);
94289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
94389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadVibrateSetting(db, false);
94489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
94589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // By default, only the ring/notification and system streams are affected
94689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.MODE_RINGER_STREAMS_AFFECTED,
94789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    (1 << AudioManager.STREAM_RING) | (1 << AudioManager.STREAM_NOTIFICATION) |
94889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    (1 << AudioManager.STREAM_SYSTEM) | (1 << AudioManager.STREAM_SYSTEM_ENFORCED));
94989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
95089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.MUTE_STREAMS_AFFECTED,
95189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    ((1 << AudioManager.STREAM_MUSIC) |
95289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                     (1 << AudioManager.STREAM_RING) |
95389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                     (1 << AudioManager.STREAM_NOTIFICATION) |
95489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                     (1 << AudioManager.STREAM_SYSTEM)));
95589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        } finally {
95689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            if (stmt != null) stmt.close();
95789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        }
95854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
95954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
96054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    private void loadVibrateSetting(SQLiteDatabase db, boolean deleteOld) {
96154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        if (deleteOld) {
96254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            db.execSQL("DELETE FROM system WHERE name='" + Settings.System.VIBRATE_ON + "'");
96354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
9649bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
96589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        SQLiteStatement stmt = null;
96689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        try {
96789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
96889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    + " VALUES(?,?);");
96989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
97089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Vibrate off by default for ringer, on for notification
97189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            int vibrate = 0;
97289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            vibrate = AudioService.getValueForVibrateSetting(vibrate,
97389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON);
97489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            vibrate = AudioService.getValueForVibrateSetting(vibrate,
97589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
97689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.VIBRATE_ON, vibrate);
97789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        } finally {
97889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            if (stmt != null) stmt.close();
97989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        }
98054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
98154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
98254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    private void loadSettings(SQLiteDatabase db) {
983f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project        loadSystemSettings(db);
9849bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh        loadSecureSettings(db);
985f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project    }
9869bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
987f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project    private void loadSystemSettings(SQLiteDatabase db) {
98889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        SQLiteStatement stmt = null;
98989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        try {
99089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
99189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    + " VALUES(?,?);");
99289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
99389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.System.DIM_SCREEN,
99489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_dim_screen);
99589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.STAY_ON_WHILE_PLUGGED_IN,
99689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    "1".equals(SystemProperties.get("ro.kernel.qemu")) ? 1 : 0);
99789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT,
99889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.integer.def_screen_off_timeout);
99989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
100089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Set default cdma emergency tone
100189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.EMERGENCY_TONE, 0);
100289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
100389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Set default cdma call auto retry
100489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.CALL_AUTO_RETRY, 0);
100589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
100689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Set default cdma DTMF type
100789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0);
100889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
100989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Set default hearing aid
101089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.HEARING_AID, 0);
101189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
101289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Set default tty mode
101389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.System.TTY_MODE, 0);
101489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
101589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.System.AIRPLANE_MODE_ON,
101689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_airplane_mode_on);
101789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
101889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_RADIOS,
101989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.string.def_airplane_mode_radios);
102089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
102189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
102289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.string.airplane_mode_toggleable_radios);
102389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
102489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.System.AUTO_TIME,
102589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_auto_time); // Sync time to NITZ
102689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
102789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS,
102889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.integer.def_screen_brightness);
102989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
103089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE,
103189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_screen_brightness_automatic_mode);
103289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
103389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadDefaultAnimationSettings(stmt);
103489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
103589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION,
103689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_accelerometer_rotation);
103789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
103889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadDefaultHapticSettings(stmt);
103989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
104089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE,
104189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_notification_pulse);
104240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu            loadSetting(stmt, Settings.Secure.SET_INSTALL_LOCATION, 0);
104340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu            loadSetting(stmt, Settings.Secure.DEFAULT_INSTALL_LOCATION,
104440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu                    PackageHelper.APP_INSTALL_AUTO);
104589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
104689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadUISoundEffectsSettings(stmt);
104789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
104889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT,
104989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_vibrate_in_silent);
105089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        } finally {
105189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            if (stmt != null) stmt.close();
105289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        }
1053f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project    }
10549bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
10550e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler    private void loadUISoundEffectsSettings(SQLiteStatement stmt) {
10560e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler        loadIntegerSetting(stmt, Settings.System.POWER_SOUNDS_ENABLED,
10570e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            R.integer.def_power_sounds_enabled);
10580e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler        loadStringSetting(stmt, Settings.System.LOW_BATTERY_SOUND,
10590e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            R.string.def_low_battery_sound);
10600e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler
10610e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler        loadIntegerSetting(stmt, Settings.System.DOCK_SOUNDS_ENABLED,
10620e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            R.integer.def_dock_sounds_enabled);
10630e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler        loadStringSetting(stmt, Settings.System.DESK_DOCK_SOUND,
10640e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            R.string.def_desk_dock_sound);
10650e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler        loadStringSetting(stmt, Settings.System.DESK_UNDOCK_SOUND,
10660e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            R.string.def_desk_undock_sound);
10670e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler        loadStringSetting(stmt, Settings.System.CAR_DOCK_SOUND,
10680e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            R.string.def_car_dock_sound);
10690e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler        loadStringSetting(stmt, Settings.System.CAR_UNDOCK_SOUND,
10700e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            R.string.def_car_undock_sound);
10710e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler
10720e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler        loadIntegerSetting(stmt, Settings.System.LOCKSCREEN_SOUNDS_ENABLED,
10730e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            R.integer.def_lockscreen_sounds_enabled);
10740e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler        loadStringSetting(stmt, Settings.System.LOCK_SOUND,
10750e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            R.string.def_lock_sound);
10760e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler        loadStringSetting(stmt, Settings.System.UNLOCK_SOUND,
10770e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler            R.string.def_unlock_sound);
10780e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler    }
10790e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler
10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private void loadDefaultAnimationSettings(SQLiteStatement stmt) {
10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        loadFractionSetting(stmt, Settings.System.WINDOW_ANIMATION_SCALE,
10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                R.fraction.def_window_animation_scale, 1);
10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        loadFractionSetting(stmt, Settings.System.TRANSITION_ANIMATION_SCALE,
10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                R.fraction.def_window_transition_scale, 1);
10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
10869bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
1087075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn    private void loadDefaultHapticSettings(SQLiteStatement stmt) {
1088075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn        loadBooleanSetting(stmt, Settings.System.HAPTIC_FEEDBACK_ENABLED,
1089075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn                R.bool.def_haptic_feedback);
1090075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn    }
1091075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn
1092f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project    private void loadSecureSettings(SQLiteDatabase db) {
109389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        SQLiteStatement stmt = null;
109489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        try {
109589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
109689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    + " VALUES(?,?);");
109789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
109889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.Secure.BLUETOOTH_ON,
109989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_bluetooth_on);
110089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
110189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Data roaming default, based on build
110289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.Secure.DATA_ROAMING,
110389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    "true".equalsIgnoreCase(
110489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                            SystemProperties.get("ro.com.android.dataroaming",
110589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                                    "false")) ? 1 : 0);
110689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
110789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS,
110889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_install_non_market_apps);
110989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
111089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadStringSetting(stmt, Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
111189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.string.def_location_providers_allowed);
111289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
111389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.Secure.ASSISTED_GPS_ENABLED,
111489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.assisted_gps_enabled);
111589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
111689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadIntegerSetting(stmt, Settings.Secure.NETWORK_PREFERENCE,
111789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.integer.def_network_preference);
111889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
111989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.Secure.USB_MASS_STORAGE_ENABLED,
112089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_usb_mass_storage_enabled);
112189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
112289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.Secure.WIFI_ON,
112389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_wifi_on);
112489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
112589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_networks_available_notification_on);
112689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
112789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist");
112889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            if (!TextUtils.isEmpty(wifiWatchList)) {
112989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                loadSetting(stmt, Settings.Secure.WIFI_WATCHDOG_WATCH_LIST, wifiWatchList);
113089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            }
113189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
113289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Set the preferred network mode to 0 = Global, CDMA default
113389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            int type = SystemProperties.getInt("ro.telephony.default_network",
113489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    RILConstants.PREFERRED_NETWORK_MODE);
113589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.Secure.PREFERRED_NETWORK_MODE, type);
113689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
113789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Enable or disable Cell Broadcast SMS
113889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.Secure.CDMA_CELL_BROADCAST_SMS,
113989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED);
114089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
114189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Set the preferred cdma subscription to 0 = Subscription from RUIM, when available
114289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.Secure.PREFERRED_CDMA_SUBSCRIPTION,
114389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    RILConstants.PREFERRED_CDMA_SUBSCRIPTION);
114489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
114589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Don't do this.  The SystemServer will initialize ADB_ENABLED from a
114689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // persistent system property instead.
114789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            //loadSetting(stmt, Settings.Secure.ADB_ENABLED, 0);
114889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
114989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            // Allow mock locations default, based on build
115089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSetting(stmt, Settings.Secure.ALLOW_MOCK_LOCATION,
115189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    "1".equals(SystemProperties.get("ro.allow.mock.location")) ? 1 : 0);
115289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
115389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadSecure35Settings(stmt);
115489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
115589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND,
115689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_mount_play_notification_snd);
115789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
115889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_AUTOSTART,
115989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_mount_ums_autostart);
116089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
116189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_PROMPT,
116289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_mount_ums_prompt);
116389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori
116489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED,
116589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori                    R.bool.def_mount_ums_notify_enabled);
116689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori        } finally {
116789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori            if (stmt != null) stmt.close();
11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
116954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
117054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
1171cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn    private void loadSecure35Settings(SQLiteStatement stmt) {
1172cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn        loadBooleanSetting(stmt, Settings.Secure.BACKUP_ENABLED,
1173cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn                R.bool.def_backup_enabled);
117431f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller
1175cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn        loadStringSetting(stmt, Settings.Secure.BACKUP_TRANSPORT,
1176cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn                R.string.def_backup_transport);
1177cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn    }
11786176677e01964cb5751ff217c091571ce6a8b5fbJim Miller
117954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    private void loadSetting(SQLiteStatement stmt, String key, Object value) {
118054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        stmt.bindString(1, key);
118154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        stmt.bindString(2, value.toString());
118254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        stmt.execute();
118354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
11849bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private void loadStringSetting(SQLiteStatement stmt, String key, int resid) {
11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        loadSetting(stmt, key, mContext.getResources().getString(resid));
11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
11889bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
11899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private void loadBooleanSetting(SQLiteStatement stmt, String key, int resid) {
11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        loadSetting(stmt, key,
11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                mContext.getResources().getBoolean(resid) ? "1" : "0");
11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
11939bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
11949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private void loadIntegerSetting(SQLiteStatement stmt, String key, int resid) {
11959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        loadSetting(stmt, key,
11969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                Integer.toString(mContext.getResources().getInteger(resid)));
11979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
11989bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh
11999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private void loadFractionSetting(SQLiteStatement stmt, String key, int resid, int base) {
12009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        loadSetting(stmt, key,
12019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                Float.toString(mContext.getResources().getFraction(resid, base, base)));
12029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
120354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project}
1204