Cleanup USER_OWNER in SettingsProvider[Test]
Fixed up the tests and re-enabled it.
Still suppressed one test because what it relies on Settings.Bookmarks
is broken because Settings query format changed.
Fixed a bug in SettingsProvider that the package query is using the
wrong user id.
Bug: 19913735
Change-Id: Ied86a261defba2706f726a13bc32f385f7d93787
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 5a14967..ee296d9 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -109,7 +109,7 @@
static String dbNameForUser(final int userHandle) {
// The owner gets the unadorned db name;
- if (userHandle == UserHandle.USER_OWNER) {
+ if (userHandle == UserHandle.USER_SYSTEM) {
return DATABASE_NAME;
} else {
// Place the database in the user-specific data tree so that it's
@@ -186,8 +186,8 @@
createSecureTable(db);
- // Only create the global table for the singleton 'owner' user
- if (mUserHandle == UserHandle.USER_OWNER) {
+ // Only create the global table for the singleton 'owner/system' user
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
createGlobalTable(db);
}
@@ -1252,7 +1252,7 @@
if (upgradeVersion == 82) {
// Move to per-user settings dbs
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
@@ -1306,7 +1306,7 @@
}
if (upgradeVersion == 84) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
@@ -1331,7 +1331,7 @@
}
if (upgradeVersion == 85) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
// Fix up the migration, ignoring already-migrated elements, to snap up to
@@ -1348,7 +1348,7 @@
}
if (upgradeVersion == 86) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] settingsToMove = {
@@ -1367,7 +1367,7 @@
}
if (upgradeVersion == 87) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] settingsToMove = {
@@ -1386,7 +1386,7 @@
}
if (upgradeVersion == 88) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] settingsToMove = {
@@ -1432,7 +1432,7 @@
}
if (upgradeVersion == 89) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] prefixesToMove = {
@@ -1452,7 +1452,7 @@
}
if (upgradeVersion == 90) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] systemToGlobal = {
@@ -1485,7 +1485,7 @@
}
if (upgradeVersion == 91) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
// Move ringer mode from system to global settings
@@ -1505,7 +1505,7 @@
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
+ " VALUES(?,?);");
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
// consider existing primary users to have made it through user setup
// if the globally-scoped device-provisioned bit is set
// (indicating they already made it through setup as primary)
@@ -1526,7 +1526,7 @@
if (upgradeVersion == 93) {
// Redo this step, since somehow it didn't work the first time for some users
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
// Migrate now-global settings
@@ -1547,7 +1547,7 @@
if (upgradeVersion == 94) {
// Add wireless charging started sound setting
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
@@ -1565,7 +1565,7 @@
}
if (upgradeVersion == 95) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] settingsToMove = { Settings.Global.BUGREPORT_IN_POWER_MENU };
@@ -1584,7 +1584,7 @@
}
if (upgradeVersion == 97) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
@@ -1613,7 +1613,7 @@
if (upgradeVersion == 100) {
// note: LOCK_SCREEN_SHOW_NOTIFICATIONS now handled in version 106
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
@@ -1631,7 +1631,7 @@
}
if (upgradeVersion == 101) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
@@ -1653,7 +1653,7 @@
try {
// The INSTALL_NON_MARKET_APPS setting is becoming per-user rather
// than device-global.
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
// In the owner user, the global table exists so we can migrate the
// entry from there to the secure table, preserving its value.
String[] globalToSecure = {
@@ -1693,7 +1693,7 @@
}
if (upgradeVersion < 105) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
@@ -1719,7 +1719,7 @@
+ " VALUES(?,?);");
loadIntegerSetting(stmt, Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
R.integer.def_lock_screen_show_notifications);
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
final int oldShow = getIntValueFromTable(db,
TABLE_GLOBAL, Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, -1);
if (oldShow >= 0) {
@@ -1741,7 +1741,7 @@
if (upgradeVersion < 107) {
// Add trusted sound setting
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
@@ -1816,7 +1816,7 @@
if (upgradeVersion < 111) {
// reset ringer mode, so it doesn't force zen mode to follow
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
@@ -1833,7 +1833,7 @@
}
if (upgradeVersion < 112) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
// When device name was added, we went with Manufacturer + Model, device name should
// actually be Model only.
// Update device name to Model if it wasn't modified by user.
@@ -1874,7 +1874,7 @@
// We skipped 114 to handle a merge conflict with the introduction of theater mode.
if (upgradeVersion < 115) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
@@ -1892,7 +1892,7 @@
}
if (upgradeVersion < 116) {
- if (mUserHandle == UserHandle.USER_OWNER) {
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
@@ -2066,7 +2066,7 @@
LockPatternUtils lpu = new LockPatternUtils(mContext);
List<LockPatternView.Cell> cellPattern =
LockPatternUtils.stringToPattern(lockPattern);
- lpu.saveLockPattern(cellPattern, null, UserHandle.USER_OWNER);
+ lpu.saveLockPattern(cellPattern, null, UserHandle.USER_SYSTEM);
} catch (IllegalArgumentException e) {
// Don't want corrupted lock pattern to hang the reboot process
}
@@ -2343,8 +2343,8 @@
private void loadSettings(SQLiteDatabase db) {
loadSystemSettings(db);
loadSecureSettings(db);
- // The global table only exists for the 'owner' user
- if (mUserHandle == UserHandle.USER_OWNER) {
+ // The global table only exists for the 'owner/system' user
+ if (mUserHandle == UserHandle.USER_SYSTEM) {
loadGlobalSettings(db);
}
}
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
index 952b220..1d71346 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
@@ -123,7 +123,8 @@
}
if (sBroadcastOnRestore.contains(name)) {
- oldValue = table.lookup(cr, name, UserHandle.USER_OWNER);
+ // TODO: http://b/22388012
+ oldValue = table.lookup(cr, name, UserHandle.USER_SYSTEM);
sendBroadcast = true;
}
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 73971ad..8b1caf9 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -18,7 +18,7 @@
import android.Manifest;
import android.app.ActivityManager;
-import android.app.AppOpsManager;
+import android.app.AppGlobals;
import android.app.backup.BackupManager;
import android.content.BroadcastReceiver;
import android.content.ContentProvider;
@@ -27,6 +27,7 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
@@ -47,6 +48,7 @@
import android.os.Message;
import android.os.ParcelFileDescriptor;
import android.os.Process;
+import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
@@ -208,13 +210,13 @@
private volatile UserManager mUserManager;
// We have to call in the package manager with no lock held,
- private volatile PackageManager mPackageManager;
+ private volatile IPackageManager mPackageManager;
@Override
public boolean onCreate() {
synchronized (mLock) {
- mUserManager = (UserManager) getContext().getSystemService(Context.USER_SERVICE);
- mPackageManager = getContext().getPackageManager();
+ mUserManager = UserManager.get(getContext());
+ mPackageManager = AppGlobals.getPackageManager();
mSettingsRegistry = new SettingsRegistry();
}
registerBroadcastReceivers();
@@ -496,7 +498,7 @@
}
private void dumpForUser(int userId, PrintWriter pw) {
- if (userId == UserHandle.USER_OWNER) {
+ if (userId == UserHandle.USER_SYSTEM) {
pw.println("GLOBAL SETTINGS (user " + userId + ")");
Cursor globalCursor = getAllGlobalSettings(ALL_COLUMNS);
dumpSettings(globalCursor, pw);
@@ -547,7 +549,7 @@
@Override
public void onReceive(Context context, Intent intent) {
final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE,
- UserHandle.USER_OWNER);
+ UserHandle.USER_SYSTEM);
switch (intent.getAction()) {
case Intent.ACTION_USER_REMOVED: {
@@ -584,7 +586,7 @@
synchronized (mLock) {
// Get the settings.
SettingsState settingsState = mSettingsRegistry.getSettingsLocked(
- SettingsRegistry.SETTINGS_TYPE_GLOBAL, UserHandle.USER_OWNER);
+ SettingsRegistry.SETTINGS_TYPE_GLOBAL, UserHandle.USER_SYSTEM);
List<String> names = settingsState.getSettingNamesLocked();
@@ -612,7 +614,7 @@
// Get the value.
synchronized (mLock) {
return mSettingsRegistry.getSettingLocked(SettingsRegistry.SETTINGS_TYPE_GLOBAL,
- UserHandle.USER_OWNER, name);
+ UserHandle.USER_SYSTEM, name);
}
}
@@ -656,19 +658,19 @@
case MUTATION_OPERATION_INSERT: {
return mSettingsRegistry
.insertSettingLocked(SettingsRegistry.SETTINGS_TYPE_GLOBAL,
- UserHandle.USER_OWNER, name, value, getCallingPackage());
+ UserHandle.USER_SYSTEM, name, value, getCallingPackage());
}
case MUTATION_OPERATION_DELETE: {
return mSettingsRegistry.deleteSettingLocked(
SettingsRegistry.SETTINGS_TYPE_GLOBAL,
- UserHandle.USER_OWNER, name);
+ UserHandle.USER_SYSTEM, name);
}
case MUTATION_OPERATION_UPDATE: {
return mSettingsRegistry
.updateSettingLocked(SettingsRegistry.SETTINGS_TYPE_GLOBAL,
- UserHandle.USER_OWNER, name, value, getCallingPackage());
+ UserHandle.USER_SYSTEM, name, value, getCallingPackage());
}
}
}
@@ -903,7 +905,7 @@
}
// Enforce what the calling package can mutate the system settings.
- enforceRestrictedSystemSettingsMutationForCallingPackage(operation, name);
+ enforceRestrictedSystemSettingsMutationForCallingPackage(operation, name, runAsUserId);
// Resolve the userId on whose behalf the call is made.
final int callingUserId = resolveCallingUserIdEnforcingPermissionsLocked(runAsUserId);
@@ -1001,7 +1003,7 @@
}
private void enforceRestrictedSystemSettingsMutationForCallingPackage(int operation,
- String name) {
+ String name, int userId) {
// System/root/shell can mutate whatever secure settings they want.
final int callingUid = Binder.getCallingUid();
if (callingUid == android.os.Process.SYSTEM_UID
@@ -1019,7 +1021,7 @@
}
// The calling package is already verified.
- PackageInfo packageInfo = getCallingPackageInfoOrThrow();
+ PackageInfo packageInfo = getCallingPackageInfoOrThrow(userId);
// Privileged apps can do whatever they want.
if ((packageInfo.applicationInfo.privateFlags
@@ -1039,7 +1041,7 @@
}
// The calling package is already verified.
- PackageInfo packageInfo = getCallingPackageInfoOrThrow();
+ PackageInfo packageInfo = getCallingPackageInfoOrThrow(userId);
// Privileged apps can do whatever they want.
if ((packageInfo.applicationInfo.privateFlags &
@@ -1053,17 +1055,17 @@
}
}
- private PackageInfo getCallingPackageInfoOrThrow() {
+ private PackageInfo getCallingPackageInfoOrThrow(int userId) {
try {
- return mPackageManager.getPackageInfo(getCallingPackage(), 0);
- } catch (PackageManager.NameNotFoundException e) {
+ return mPackageManager.getPackageInfo(getCallingPackage(), 0, userId);
+ } catch (RemoteException e) {
throw new IllegalStateException("Calling package doesn't exist");
}
}
private int getGroupParentLocked(int userId) {
// Most frequent use case.
- if (userId == UserHandle.USER_OWNER) {
+ if (userId == UserHandle.USER_SYSTEM) {
return userId;
}
// We are in the same process with the user manager and the returned
@@ -1401,8 +1403,8 @@
migrateLegacySettingsForUserIfNeededLocked(userId);
// Ensure global settings loaded if owner.
- if (userId == UserHandle.USER_OWNER) {
- final int globalKey = makeKey(SETTINGS_TYPE_GLOBAL, UserHandle.USER_OWNER);
+ if (userId == UserHandle.USER_SYSTEM) {
+ final int globalKey = makeKey(SETTINGS_TYPE_GLOBAL, UserHandle.USER_SYSTEM);
ensureSettingsStateLocked(globalKey);
}
@@ -1541,7 +1543,7 @@
private void migrateAllLegacySettingsIfNeeded() {
synchronized (mLock) {
- final int key = makeKey(SETTINGS_TYPE_GLOBAL, UserHandle.USER_OWNER);
+ final int key = makeKey(SETTINGS_TYPE_GLOBAL, UserHandle.USER_SYSTEM);
File globalFile = getSettingsFile(key);
if (globalFile.exists()) {
return;
@@ -1591,7 +1593,7 @@
private void migrateLegacySettingsForUserLocked(DatabaseHelper dbHelper,
SQLiteDatabase database, int userId) {
// Move over the global settings if owner.
- if (userId == UserHandle.USER_OWNER) {
+ if (userId == UserHandle.USER_SYSTEM) {
final int globalKey = makeKey(SETTINGS_TYPE_GLOBAL, userId);
ensureSettingsStateLocked(globalKey);
SettingsState globalSettings = mSettingsStates.get(globalKey);
@@ -1898,7 +1900,7 @@
}
// Set the global settings version if owner.
- if (mUserId == UserHandle.USER_OWNER) {
+ if (mUserId == UserHandle.USER_SYSTEM) {
SettingsState globalSettings = getSettingsLocked(
SettingsRegistry.SETTINGS_TYPE_GLOBAL, mUserId);
globalSettings.setVersionLocked(newVersion);
@@ -1914,7 +1916,7 @@
}
private SettingsState getGlobalSettingsLocked() {
- return getSettingsLocked(SETTINGS_TYPE_GLOBAL, UserHandle.USER_OWNER);
+ return getSettingsLocked(SETTINGS_TYPE_GLOBAL, UserHandle.USER_SYSTEM);
}
private SettingsState getSecureSettingsLocked(int userId) {
@@ -1960,7 +1962,7 @@
// v119: Reset zen + ringer mode.
if (currentVersion == 118) {
- if (userId == UserHandle.USER_OWNER) {
+ if (userId == UserHandle.USER_SYSTEM) {
final SettingsState globalSettings = getGlobalSettingsLocked();
globalSettings.updateSettingLocked(Settings.Global.ZEN_MODE,
Integer.toString(Settings.Global.ZEN_MODE_OFF),