Do not remove file_cache when exiting demo mode
When clearing /data/preloads directory, keep files in file_cache directory. The content there will only be removed if systems runs low on storage. Test: manual + RetailDemoModeServiceTest Bug: 31008665 Change-Id: Id335d84940ee829617986f5345f169271a333de1
This commit is contained in:
@@ -379,6 +379,24 @@ public class Environment {
|
||||
return new File(getDataPreloadsDirectory(), "media");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns location of preloaded cache directory for package name
|
||||
* @see #getDataPreloadsDirectory()
|
||||
* {@hide}
|
||||
*/
|
||||
public static File getDataPreloadsFileCacheDirectory(String packageName) {
|
||||
return new File(getDataPreloadsFileCacheDirectory(), packageName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns location of preloaded cache directory.
|
||||
* @see #getDataPreloadsDirectory()
|
||||
* {@hide}
|
||||
*/
|
||||
public static File getDataPreloadsFileCacheDirectory() {
|
||||
return new File(getDataPreloadsDirectory(), "file_cache");
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the primary shared/external storage directory. This directory may
|
||||
* not currently be accessible if it has been mounted by the user on their
|
||||
|
||||
@@ -254,12 +254,9 @@ public class RetailDemoModeService extends SystemService {
|
||||
mInjector.systemPropertiesSet(SYSTEM_PROPERTY_RETAIL_DEMO_ENABLED, "0");
|
||||
|
||||
// Run on the bg thread to not block the fg thread
|
||||
BackgroundThread.getHandler().post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!deletePreloadsFolderContents()) {
|
||||
Slog.w(TAG, "Failed to delete preloads folder contents");
|
||||
}
|
||||
BackgroundThread.getHandler().post(() -> {
|
||||
if (!deletePreloadsFolderContents()) {
|
||||
Slog.w(TAG, "Failed to delete preloads folder contents");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -443,8 +440,29 @@ public class RetailDemoModeService extends SystemService {
|
||||
|
||||
private boolean deletePreloadsFolderContents() {
|
||||
final File dir = mInjector.getDataPreloadsDirectory();
|
||||
final File[] files = FileUtils.listFilesOrEmpty(dir);
|
||||
final File fileCacheDirectory = mInjector.getDataPreloadsFileCacheDirectory();
|
||||
Slog.i(TAG, "Deleting contents of " + dir);
|
||||
return FileUtils.deleteContents(dir);
|
||||
boolean success = true;
|
||||
for (File file : files) {
|
||||
if (file.isFile()) {
|
||||
if (!file.delete()) {
|
||||
success = false;
|
||||
Slog.w(TAG, "Cannot delete file " + file);
|
||||
}
|
||||
} else {
|
||||
// Do not remove file_cache dir
|
||||
if (!file.equals(fileCacheDirectory)) {
|
||||
if (!FileUtils.deleteContentsAndDir(file)) {
|
||||
success = false;
|
||||
Slog.w(TAG, "Cannot delete dir and its content " + file);
|
||||
}
|
||||
} else {
|
||||
Slog.i(TAG, "Skipping directory with file cache " + file);
|
||||
}
|
||||
}
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
private void registerBroadcastReceiver() {
|
||||
@@ -818,6 +836,10 @@ public class RetailDemoModeService extends SystemService {
|
||||
return Environment.getDataPreloadsDirectory();
|
||||
}
|
||||
|
||||
File getDataPreloadsFileCacheDirectory() {
|
||||
return Environment.getDataPreloadsFileCacheDirectory();
|
||||
}
|
||||
|
||||
void publishLocalService(RetailDemoModeService service,
|
||||
RetailDemoModeServiceInternal localService) {
|
||||
service.publishLocalService(RetailDemoModeServiceInternal.class, localService);
|
||||
|
||||
@@ -448,6 +448,11 @@ public class RetailDemoModeServiceTest {
|
||||
return mTestPreloadsDir;
|
||||
}
|
||||
|
||||
@Override
|
||||
File getDataPreloadsFileCacheDirectory() {
|
||||
return new File(mTestPreloadsDir, "file_cache");
|
||||
}
|
||||
|
||||
@Override
|
||||
void publishLocalService(RetailDemoModeService service,
|
||||
RetailDemoModeServiceInternal localService) {
|
||||
|
||||
Reference in New Issue
Block a user