Merge "aconfigd: migrate to full rust aconfigd" into main am: 910e04d7c0

Original change: https://android-review.googlesource.com/c/platform/system/server_configurable_flags/+/3370012

Change-Id: I32d8beb9e5f9afa9c96e7f8121afa9091bf18914
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/aconfigd/Android.bp b/aconfigd/Android.bp
index 340daa4..443e1ff 100644
--- a/aconfigd/Android.bp
+++ b/aconfigd/Android.bp
@@ -181,6 +181,7 @@
         "libcrypto",
         "libprotobuf-cpp-lite",
         "server_configurable_flags",
+        "libaconfig_flags_cc",
     ],
     data: [
         "tests/data/v1/package.map",
diff --git a/aconfigd/aconfigd.cpp b/aconfigd/aconfigd.cpp
index 9aa6259..bea7488 100644
--- a/aconfigd/aconfigd.cpp
+++ b/aconfigd/aconfigd.cpp
@@ -146,7 +146,6 @@
   result_msg->set_has_server_override(snapshot->has_server_override);
   result_msg->set_is_readwrite(snapshot->is_readwrite);
   result_msg->set_has_local_override(snapshot->has_local_override);
-  result_msg->set_container(snapshot->container);
   return {};
 }
 
@@ -214,7 +213,6 @@
     flag_msg->set_is_readwrite(flag.is_readwrite);
     flag_msg->set_has_server_override(flag.has_server_override);
     flag_msg->set_has_local_override(flag.has_local_override);
-    flag_msg->set_container(flag.container);
   }
   return {};
 }
@@ -297,6 +295,34 @@
                     + container);
   }
 
+  // TODO remove this logic once new storage launch complete
+  // if flag enable_only_new_storage is true, writes a marker file
+  {
+    auto flags = storage_files_manager_->ListFlagsInPackage("com.android.aconfig.flags");
+    RETURN_IF_ERROR(flags, "Failed to list flags");
+    bool enable_only_new_storage = false;
+    for (const auto& flag : *flags) {
+      if (flag.flag_name == "enable_only_new_storage") {
+        enable_only_new_storage = (flag.boot_flag_value == "true");
+        break;
+      }
+    }
+    auto marker_file = std::string("/metadata/aconfig/boot/enable_only_new_storage");
+    if (enable_only_new_storage) {
+      if (!FileExists(marker_file)) {
+        int fd = open(marker_file.c_str(), O_CREAT, 0644);
+        if (fd == -1) {
+          return ErrnoError() << "failed to create marker file";
+        }
+        close(fd);
+      }
+    } else {
+      if (FileExists(marker_file)) {
+        unlink(marker_file.c_str());
+      }
+    }
+  }
+
   return {};
 }
 
diff --git a/aconfigd/storage_files.cpp b/aconfigd/storage_files.cpp
index 4ec9060..2596aed 100644
--- a/aconfigd/storage_files.cpp
+++ b/aconfigd/storage_files.cpp
@@ -1007,7 +1007,6 @@
       snapshots[idx].is_readwrite = flag.is_readwrite;
       snapshots[idx].has_server_override = flag.has_server_override;
       snapshots[idx].has_local_override = flag.has_local_override;
-      snapshots[idx].container = storage_record_.container;
     }
 
     // fill local value
diff --git a/aconfigd/storage_files.h b/aconfigd/storage_files.h
index 7f6f440..5d57c49 100644
--- a/aconfigd/storage_files.h
+++ b/aconfigd/storage_files.h
@@ -177,7 +177,6 @@
         std::string local_flag_value;
         std::string boot_flag_value;
         std::string default_flag_value;
-        std::string container;
         bool is_readwrite;
         bool has_server_override;
         bool has_local_override;
diff --git a/libflags/Android.bp b/libflags/Android.bp
index 9908fd8..1cdb7f2 100644
--- a/libflags/Android.bp
+++ b/libflags/Android.bp
@@ -24,6 +24,11 @@
     ],
     min_sdk_version: "29",
     afdo: true,
+    target: {
+        windows: {
+            enabled: true,
+        },
+    },
 }
 
 // Tests