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

Commit 65b39d45 authored by Ted Bauer's avatar Ted Bauer
Browse files

Set test mission 1 marker file permissions

Allow the test mission 1 marker file to be read by anyone.
Also, add demo flags as a static lib dependency, so they become
available to codegen. Finally, delete storage marker file when migration
is disabled.

Bug: 328444881
Test: m
Change-Id: I81c643ce0121b0718692fd23f5b06a2b641f2b1e
parent 4f1fc19f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ android_library {
        "unsupportedappusage",
    ],
    static_libs: [
        "aconfig_demo_flags_java_lib",
        "device_config_service_flags_java",
        "libaconfig_java_proto_lite",
        "SettingsLibDeviceStateRotationLock",
+28 −14
Original line number Diff line number Diff line
@@ -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;
@@ -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.
@@ -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);
                        }
                    }
                }