Merge "Centralize the creation of the user system directory" into jb-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
430e5b23cf
@@ -1879,7 +1879,7 @@ public class AccountManagerService
|
||||
|
||||
private static String getDatabaseName(int userId) {
|
||||
File systemDir = Environment.getSystemSecureDirectory();
|
||||
File databaseFile = new File(systemDir, "users/" + userId + "/" + DATABASE_NAME);
|
||||
File databaseFile = new File(Environment.getUserSystemDirectory(userId), DATABASE_NAME);
|
||||
if (userId == 0) {
|
||||
// Migrate old file, if it exists, to the new location.
|
||||
// Make sure the new file doesn't already exist. A dummy file could have been
|
||||
@@ -1888,7 +1888,7 @@ public class AccountManagerService
|
||||
File oldFile = new File(systemDir, DATABASE_NAME);
|
||||
if (oldFile.exists() && !databaseFile.exists()) {
|
||||
// Check for use directory; create if it doesn't exist, else renameTo will fail
|
||||
File userDir = new File(systemDir, "users/" + userId);
|
||||
File userDir = Environment.getUserSystemDirectory(userId);
|
||||
if (!userDir.exists()) {
|
||||
if (!userDir.mkdirs()) {
|
||||
throw new IllegalStateException("User dir cannot be created: " + userDir);
|
||||
|
||||
@@ -20,7 +20,9 @@ import android.app.WallpaperManager;
|
||||
import android.content.Context;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Point;
|
||||
import android.os.Environment;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Slog;
|
||||
import android.view.Display;
|
||||
import android.view.WindowManager;
|
||||
@@ -39,8 +41,12 @@ public class WallpaperBackupHelper extends FileBackupHelperBase implements Backu
|
||||
|
||||
// This path must match what the WallpaperManagerService uses
|
||||
// TODO: Will need to change if backing up non-primary user's wallpaper
|
||||
public static final String WALLPAPER_IMAGE = "/data/system/users/0/wallpaper";
|
||||
public static final String WALLPAPER_INFO = "/data/system/users/0/wallpaper_info.xml";
|
||||
public static final String WALLPAPER_IMAGE =
|
||||
new File(Environment.getUserSystemDirectory(UserHandle.USER_OWNER),
|
||||
"wallpaper").getAbsolutePath();
|
||||
public static final String WALLPAPER_INFO =
|
||||
new File(Environment.getUserSystemDirectory(UserHandle.USER_OWNER),
|
||||
"wallpaper_info.xml").getAbsolutePath();
|
||||
// Use old keys to keep legacy data compatibility and avoid writing two wallpapers
|
||||
public static final String WALLPAPER_IMAGE_KEY =
|
||||
"/data/data/com.android.settings/files/wallpaper";
|
||||
@@ -50,7 +56,9 @@ public class WallpaperBackupHelper extends FileBackupHelperBase implements Backu
|
||||
// will be saved to this file from the restore stream, then renamed to the proper
|
||||
// location if it's deemed suitable.
|
||||
// TODO: Will need to change if backing up non-primary user's wallpaper
|
||||
private static final String STAGE_FILE = "/data/system/users/0/wallpaper-tmp";
|
||||
private static final String STAGE_FILE =
|
||||
new File(Environment.getUserSystemDirectory(UserHandle.USER_OWNER),
|
||||
"wallpaper-tmp").getAbsolutePath();
|
||||
|
||||
Context mContext;
|
||||
String[] mFiles;
|
||||
|
||||
@@ -103,6 +103,17 @@ public class Environment {
|
||||
return MEDIA_STORAGE_DIRECTORY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the system directory for a user. This is for use by system services to store
|
||||
* files relating to the user. This directory will be automatically deleted when the user
|
||||
* is removed.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static File getUserSystemDirectory(int userId) {
|
||||
return new File(new File(getSystemSecureDirectory(), "users"), Integer.toString(userId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the Encrypted File System feature is enabled on the device or not.
|
||||
* @return <code>true</code> if Encrypted File System feature is enabled, <code>false</code>
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
import android.os.Binder;
|
||||
import android.os.Environment;
|
||||
import android.os.RemoteException;
|
||||
import android.os.SystemProperties;
|
||||
import android.os.UserHandle;
|
||||
@@ -173,7 +174,8 @@ public class LockSettingsService extends ILockSettings.Stub {
|
||||
// Leave it in the same place for user 0
|
||||
return dataSystemDirectory + LOCK_PATTERN_FILE;
|
||||
} else {
|
||||
return dataSystemDirectory + "users/" + userId + "/" + LOCK_PATTERN_FILE;
|
||||
return new File(Environment.getUserSystemDirectory(userId), LOCK_PATTERN_FILE)
|
||||
.getAbsolutePath();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,7 +187,8 @@ public class LockSettingsService extends ILockSettings.Stub {
|
||||
// Leave it in the same place for user 0
|
||||
return dataSystemDirectory + LOCK_PASSWORD_FILE;
|
||||
} else {
|
||||
return dataSystemDirectory + "users/" + userId + "/" + LOCK_PASSWORD_FILE;
|
||||
return new File(Environment.getUserSystemDirectory(userId), LOCK_PASSWORD_FILE)
|
||||
.getAbsolutePath();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ import android.graphics.Point;
|
||||
import android.net.Uri;
|
||||
import android.os.Binder;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
import android.os.SystemClock;
|
||||
@@ -1634,11 +1635,11 @@ class AppWidgetServiceImpl {
|
||||
}
|
||||
|
||||
static File getSettingsFile(int userId) {
|
||||
return new File("/data/system/users/" + userId + "/" + SETTINGS_FILENAME);
|
||||
return new File(Environment.getUserSystemDirectory(userId), SETTINGS_FILENAME);
|
||||
}
|
||||
|
||||
AtomicFile savedStateFile() {
|
||||
File dir = new File("/data/system/users/" + mUserId);
|
||||
File dir = Environment.getUserSystemDirectory(mUserId);
|
||||
File settingsFile = getSettingsFile(mUserId);
|
||||
if (!settingsFile.exists() && mUserId == 0) {
|
||||
if (!dir.exists()) {
|
||||
|
||||
@@ -24,8 +24,10 @@ import android.app.backup.FullBackup;
|
||||
import android.app.backup.FullBackupDataOutput;
|
||||
import android.app.backup.WallpaperBackupHelper;
|
||||
import android.content.Context;
|
||||
import android.os.Environment;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
import android.os.ServiceManager;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Slog;
|
||||
|
||||
|
||||
@@ -45,11 +47,13 @@ public class SystemBackupAgent extends BackupAgentHelper {
|
||||
private static final String WALLPAPER_INFO_FILENAME = "wallpaper_info.xml";
|
||||
|
||||
// TODO: Will need to change if backing up non-primary user's wallpaper
|
||||
private static final String WALLPAPER_IMAGE_DIR = "/data/system/users/0";
|
||||
private static final String WALLPAPER_IMAGE_DIR =
|
||||
Environment.getUserSystemDirectory(UserHandle.USER_OWNER).getAbsolutePath();
|
||||
private static final String WALLPAPER_IMAGE = WallpaperBackupHelper.WALLPAPER_IMAGE;
|
||||
|
||||
// TODO: Will need to change if backing up non-primary user's wallpaper
|
||||
private static final String WALLPAPER_INFO_DIR = "/data/system/users/0";
|
||||
private static final String WALLPAPER_INFO_DIR =
|
||||
Environment.getUserSystemDirectory(UserHandle.USER_OWNER).getAbsolutePath();
|
||||
private static final String WALLPAPER_INFO = WallpaperBackupHelper.WALLPAPER_INFO;
|
||||
// Use old keys to keep legacy data compatibility and avoid writing two wallpapers
|
||||
private static final String WALLPAPER_IMAGE_KEY = WallpaperBackupHelper.WALLPAPER_IMAGE_KEY;
|
||||
|
||||
@@ -92,8 +92,6 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
|
||||
* restarting it vs. just reverting to the static wallpaper.
|
||||
*/
|
||||
static final long MIN_WALLPAPER_CRASH_TIME = 10000;
|
||||
|
||||
static final File WALLPAPER_BASE_DIR = new File("/data/system/users");
|
||||
static final String WALLPAPER = "wallpaper";
|
||||
static final String WALLPAPER_INFO = "wallpaper_info.xml";
|
||||
|
||||
@@ -395,12 +393,12 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
|
||||
mIPackageManager = AppGlobals.getPackageManager();
|
||||
mMonitor = new MyPackageMonitor();
|
||||
mMonitor.register(context, null, true);
|
||||
WALLPAPER_BASE_DIR.mkdirs();
|
||||
loadSettingsLocked(0);
|
||||
getWallpaperDir(UserHandle.USER_OWNER).mkdirs();
|
||||
loadSettingsLocked(UserHandle.USER_OWNER);
|
||||
}
|
||||
|
||||
private static File getWallpaperDir(int userId) {
|
||||
return new File(WALLPAPER_BASE_DIR + "/" + userId);
|
||||
return Environment.getUserSystemDirectory(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -414,7 +412,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
|
||||
|
||||
public void systemReady() {
|
||||
if (DEBUG) Slog.v(TAG, "systemReady");
|
||||
WallpaperData wallpaper = mWallpaperMap.get(0);
|
||||
WallpaperData wallpaper = mWallpaperMap.get(UserHandle.USER_OWNER);
|
||||
switchWallpaper(wallpaper);
|
||||
wallpaper.wallpaperObserver = new WallpaperObserver(wallpaper);
|
||||
wallpaper.wallpaperObserver.startWatching();
|
||||
@@ -880,7 +878,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
|
||||
}
|
||||
|
||||
private static JournaledFile makeJournaledFile(int userId) {
|
||||
final String base = getWallpaperDir(userId) + "/" + WALLPAPER_INFO;
|
||||
final String base = new File(getWallpaperDir(userId), WALLPAPER_INFO).getAbsolutePath();
|
||||
return new JournaledFile(new File(base), new File(base + ".tmp"));
|
||||
}
|
||||
|
||||
|
||||
@@ -745,13 +745,12 @@ final class Settings {
|
||||
}
|
||||
|
||||
private File getUserPackagesStateFile(int userId) {
|
||||
return new File(mSystemDir,
|
||||
"users/" + userId + "/package-restrictions.xml");
|
||||
return new File(Environment.getUserSystemDirectory(userId), "package-restrictions.xml");
|
||||
}
|
||||
|
||||
private File getUserPackagesStateBackupFile(int userId) {
|
||||
return new File(mSystemDir,
|
||||
"users/" + userId + "/package-restrictions-backup.xml");
|
||||
return new File(Environment.getUserSystemDirectory(userId),
|
||||
"package-restrictions-backup.xml");
|
||||
}
|
||||
|
||||
void writeAllUsersPackageRestrictionsLPr() {
|
||||
|
||||
@@ -594,6 +594,7 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
// Update the user list
|
||||
writeUserListLocked();
|
||||
updateUserIdsLocked();
|
||||
removeDirectoryRecursive(Environment.getUserSystemDirectory(userHandle));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -603,6 +604,17 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
mContext.sendBroadcast(addedIntent, android.Manifest.permission.MANAGE_USERS);
|
||||
}
|
||||
|
||||
private void removeDirectoryRecursive(File parent) {
|
||||
if (parent.isDirectory()) {
|
||||
String[] files = parent.list();
|
||||
for (String filename : files) {
|
||||
File child = new File(parent, filename);
|
||||
removeDirectoryRecursive(child);
|
||||
}
|
||||
}
|
||||
parent.delete();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getUserSerialNumber(int userHandle) {
|
||||
synchronized (mPackagesLock) {
|
||||
|
||||
Reference in New Issue
Block a user