Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6cc3e76a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Do not remove file_cache when exiting demo mode"

parents d5bb9851 6e68706f
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -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
+29 −7
Original line number Diff line number Diff line
@@ -254,13 +254,10 @@ 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() {
                    BackgroundThread.getHandler().post(() -> {
                        if (!deletePreloadsFolderContents()) {
                            Slog.w(TAG, "Failed to delete preloads folder contents");
                        }
                        }
                    });

                    stopDemoMode();
@@ -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);
+5 −0
Original line number Diff line number Diff line
@@ -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) {