Loading packages/SettingsProvider/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ android_library { "unsupportedappusage", ], static_libs: [ "aconfig_demo_flags_java_lib", "device_config_service_flags_java", "libaconfig_java_proto_lite", "SettingsLibDeviceStateRotationLock", Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +28 −14 Original line number Diff line number Diff line Loading @@ -60,16 +60,17 @@ import libcore.io.IoUtils; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.PosixFileAttributes; import java.nio.file.attribute.PosixFilePermission; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; Loading Loading @@ -165,8 +166,8 @@ final class SettingsState { private static final String STORAGE_MIGRATION_FLAG = "core_experiments_team_internal/com.android.providers.settings.storage_test_mission_1"; private static final String STORAGE_MIGRATION_LOG = "/metadata/aconfig/flags/storage_migration.log"; private static final String STORAGE_MIGRATION_MARKER_FILE = "/metadata/aconfig/storage_test_mission_1"; /** * This tag is applied to all aconfig default value-loaded flags. Loading Loading @@ -1467,16 +1468,29 @@ final class SettingsState { } } if (name != null && name.equals(STORAGE_MIGRATION_FLAG) && value.equals("true")) { File file = new File(STORAGE_MIGRATION_LOG); if (!file.exists()) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(STORAGE_MIGRATION_LOG))) { final long timestamp = System.currentTimeMillis(); String entry = String.format("%d | Log init", timestamp); writer.write(entry); } catch (IOException e) { Slog.e(LOG_TAG, "failed to write storage migration file", e); if (isConfigSettingsKey(mKey) && name != null && name.equals(STORAGE_MIGRATION_FLAG)) { if (value.equals("true")) { Path path = Paths.get(STORAGE_MIGRATION_MARKER_FILE); if (!Files.exists(path)) { Files.createFile(path); } Set<PosixFilePermission> perms = Files.readAttributes(path, PosixFileAttributes.class).permissions(); perms.add(PosixFilePermission.OWNER_WRITE); perms.add(PosixFilePermission.OWNER_READ); perms.add(PosixFilePermission.GROUP_READ); perms.add(PosixFilePermission.OTHERS_READ); try { Files.setPosixFilePermissions(path, perms); } catch (Exception e) { Slog.e(LOG_TAG, "failed to set permissions on migration marker", e); } } else { java.nio.file.Path path = Paths.get(STORAGE_MIGRATION_MARKER_FILE); if (Files.exists(path)) { Files.delete(path); } } } Loading Loading
packages/SettingsProvider/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ android_library { "unsupportedappusage", ], static_libs: [ "aconfig_demo_flags_java_lib", "device_config_service_flags_java", "libaconfig_java_proto_lite", "SettingsLibDeviceStateRotationLock", Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +28 −14 Original line number Diff line number Diff line Loading @@ -60,16 +60,17 @@ import libcore.io.IoUtils; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.PosixFileAttributes; import java.nio.file.attribute.PosixFilePermission; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; Loading Loading @@ -165,8 +166,8 @@ final class SettingsState { private static final String STORAGE_MIGRATION_FLAG = "core_experiments_team_internal/com.android.providers.settings.storage_test_mission_1"; private static final String STORAGE_MIGRATION_LOG = "/metadata/aconfig/flags/storage_migration.log"; private static final String STORAGE_MIGRATION_MARKER_FILE = "/metadata/aconfig/storage_test_mission_1"; /** * This tag is applied to all aconfig default value-loaded flags. Loading Loading @@ -1467,16 +1468,29 @@ final class SettingsState { } } if (name != null && name.equals(STORAGE_MIGRATION_FLAG) && value.equals("true")) { File file = new File(STORAGE_MIGRATION_LOG); if (!file.exists()) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(STORAGE_MIGRATION_LOG))) { final long timestamp = System.currentTimeMillis(); String entry = String.format("%d | Log init", timestamp); writer.write(entry); } catch (IOException e) { Slog.e(LOG_TAG, "failed to write storage migration file", e); if (isConfigSettingsKey(mKey) && name != null && name.equals(STORAGE_MIGRATION_FLAG)) { if (value.equals("true")) { Path path = Paths.get(STORAGE_MIGRATION_MARKER_FILE); if (!Files.exists(path)) { Files.createFile(path); } Set<PosixFilePermission> perms = Files.readAttributes(path, PosixFileAttributes.class).permissions(); perms.add(PosixFilePermission.OWNER_WRITE); perms.add(PosixFilePermission.OWNER_READ); perms.add(PosixFilePermission.GROUP_READ); perms.add(PosixFilePermission.OTHERS_READ); try { Files.setPosixFilePermissions(path, perms); } catch (Exception e) { Slog.e(LOG_TAG, "failed to set permissions on migration marker", e); } } else { java.nio.file.Path path = Paths.get(STORAGE_MIGRATION_MARKER_FILE); if (Files.exists(path)) { Files.delete(path); } } } Loading