Merge "Remove obsolete java compilation artifacts" into main
diff --git a/tools/aconfig/aconfig_storage_file/protos/aconfig_storage_metadata.proto b/tools/aconfig/aconfig_storage_file/protos/aconfig_storage_metadata.proto
index 7de43ca..f6bf1a4 100644
--- a/tools/aconfig/aconfig_storage_file/protos/aconfig_storage_metadata.proto
+++ b/tools/aconfig/aconfig_storage_file/protos/aconfig_storage_metadata.proto
@@ -28,7 +28,8 @@
   optional string flag_val = 5;
   optional string flag_info = 6;
   optional string local_overrides = 7;
-  optional int64 timestamp = 8;
+  optional string default_flag_val = 8;
+  optional int64 timestamp = 9;
 }
 
 message storage_files {
diff --git a/tools/aconfig/aconfig_storage_read_api/include/aconfig_storage/aconfig_storage_read_api.hpp b/tools/aconfig/aconfig_storage_read_api/include/aconfig_storage/aconfig_storage_read_api.hpp
index b8ee06a..e6d7537 100644
--- a/tools/aconfig/aconfig_storage_read_api/include/aconfig_storage/aconfig_storage_read_api.hpp
+++ b/tools/aconfig/aconfig_storage_read_api/include/aconfig_storage/aconfig_storage_read_api.hpp
@@ -41,7 +41,7 @@
 struct MappedStorageFile {
   void* file_ptr;
   size_t file_size;
-  ~MappedStorageFile();
+  virtual ~MappedStorageFile();
 };
 
 /// Package read context query result
diff --git a/tools/aconfig/aconfig_storage_write_api/aconfig_storage_write_api.cpp b/tools/aconfig/aconfig_storage_write_api/aconfig_storage_write_api.cpp
index 197486d..f529f79 100644
--- a/tools/aconfig/aconfig_storage_write_api/aconfig_storage_write_api.cpp
+++ b/tools/aconfig/aconfig_storage_write_api/aconfig_storage_write_api.cpp
@@ -17,11 +17,6 @@
 
 namespace aconfig_storage {
 
-/// destructor
-MutableMappedStorageFile::~MutableMappedStorageFile() {
-  munmap(file_ptr, file_size);
-}
-
 /// Map a storage file
 Result<MutableMappedStorageFile*> map_mutable_storage_file(std::string const& file) {
   struct stat file_stat;
diff --git a/tools/aconfig/aconfig_storage_write_api/include/aconfig_storage/aconfig_storage_write_api.hpp b/tools/aconfig/aconfig_storage_write_api/include/aconfig_storage/aconfig_storage_write_api.hpp
index 1eca1e0..ff06cbc 100644
--- a/tools/aconfig/aconfig_storage_write_api/include/aconfig_storage/aconfig_storage_write_api.hpp
+++ b/tools/aconfig/aconfig_storage_write_api/include/aconfig_storage/aconfig_storage_write_api.hpp
@@ -11,11 +11,7 @@
 namespace aconfig_storage {
 
 /// Mapped flag value file
-struct MutableMappedStorageFile{
-  void* file_ptr;
-  size_t file_size;
-  ~MutableMappedStorageFile();
-};
+struct MutableMappedStorageFile : MappedStorageFile {};
 
 /// Map a storage file
 Result<MutableMappedStorageFile*> map_mutable_storage_file(
diff --git a/tools/aconfig/aconfig_storage_write_api/tests/storage_write_api_test.cpp b/tools/aconfig/aconfig_storage_write_api/tests/storage_write_api_test.cpp
index aeede49..5437379 100644
--- a/tools/aconfig/aconfig_storage_write_api/tests/storage_write_api_test.cpp
+++ b/tools/aconfig/aconfig_storage_write_api/tests/storage_write_api_test.cpp
@@ -80,13 +80,10 @@
   ASSERT_TRUE(mapped_file_result.ok());
   auto mapped_file = std::unique_ptr<api::MutableMappedStorageFile>(*mapped_file_result);
 
-  auto ro_mapped_file = api::MappedStorageFile();
-  ro_mapped_file.file_ptr = mapped_file->file_ptr;
-  ro_mapped_file.file_size = mapped_file->file_size;
   for (int offset = 0; offset < 8; ++offset) {
     auto update_result = api::set_boolean_flag_value(*mapped_file, offset, true);
     ASSERT_TRUE(update_result.ok());
-    auto value = api::get_boolean_flag_value(ro_mapped_file, offset);
+    auto value = api::get_boolean_flag_value(*mapped_file, offset);
     ASSERT_TRUE(value.ok());
     ASSERT_TRUE(*value);
   }
@@ -97,7 +94,6 @@
   auto mapped_file_result = api::map_mutable_storage_file(flag_val);
   ASSERT_TRUE(mapped_file_result.ok());
   auto mapped_file = std::unique_ptr<api::MutableMappedStorageFile>(*mapped_file_result);
-
   auto update_result = api::set_boolean_flag_value(*mapped_file, 8, true);
   ASSERT_FALSE(update_result.ok());
   ASSERT_EQ(update_result.error().message(),
@@ -110,16 +106,12 @@
   ASSERT_TRUE(mapped_file_result.ok());
   auto mapped_file = std::unique_ptr<api::MutableMappedStorageFile>(*mapped_file_result);
 
-  auto ro_mapped_file = api::MappedStorageFile();
-  ro_mapped_file.file_ptr = mapped_file->file_ptr;
-  ro_mapped_file.file_size = mapped_file->file_size;
-
   for (int offset = 0; offset < 8; ++offset) {
     auto update_result = api::set_flag_has_server_override(
         *mapped_file, api::FlagValueType::Boolean, offset, true);
     ASSERT_TRUE(update_result.ok()) << update_result.error();
     auto attribute = api::get_flag_attribute(
-        ro_mapped_file, api::FlagValueType::Boolean, offset);
+        *mapped_file, api::FlagValueType::Boolean, offset);
     ASSERT_TRUE(attribute.ok());
     ASSERT_TRUE(*attribute & api::FlagInfoBit::HasServerOverride);
 
@@ -127,7 +119,7 @@
         *mapped_file, api::FlagValueType::Boolean, offset, false);
     ASSERT_TRUE(update_result.ok());
     attribute = api::get_flag_attribute(
-        ro_mapped_file, api::FlagValueType::Boolean, offset);
+        *mapped_file, api::FlagValueType::Boolean, offset);
     ASSERT_TRUE(attribute.ok());
     ASSERT_FALSE(*attribute & api::FlagInfoBit::HasServerOverride);
   }
@@ -139,16 +131,12 @@
   ASSERT_TRUE(mapped_file_result.ok());
   auto mapped_file = std::unique_ptr<api::MutableMappedStorageFile>(*mapped_file_result);
 
-  auto ro_mapped_file = api::MappedStorageFile();
-  ro_mapped_file.file_ptr = mapped_file->file_ptr;
-  ro_mapped_file.file_size = mapped_file->file_size;
-
   for (int offset = 0; offset < 8; ++offset) {
     auto update_result = api::set_flag_has_local_override(
         *mapped_file, api::FlagValueType::Boolean, offset, true);
     ASSERT_TRUE(update_result.ok());
     auto attribute = api::get_flag_attribute(
-        ro_mapped_file, api::FlagValueType::Boolean, offset);
+        *mapped_file, api::FlagValueType::Boolean, offset);
     ASSERT_TRUE(attribute.ok());
     ASSERT_TRUE(*attribute & api::FlagInfoBit::HasLocalOverride);
 
@@ -156,7 +144,7 @@
         *mapped_file, api::FlagValueType::Boolean, offset, false);
     ASSERT_TRUE(update_result.ok());
     attribute = api::get_flag_attribute(
-        ro_mapped_file, api::FlagValueType::Boolean, offset);
+        *mapped_file, api::FlagValueType::Boolean, offset);
     ASSERT_TRUE(attribute.ok());
     ASSERT_FALSE(*attribute & api::FlagInfoBit::HasLocalOverride);
   }
diff --git a/tools/releasetools/ota_utils.py b/tools/releasetools/ota_utils.py
index 27364d0..048a497 100644
--- a/tools/releasetools/ota_utils.py
+++ b/tools/releasetools/ota_utils.py
@@ -1111,8 +1111,9 @@
       relative_path = path.removeprefix(input_dir).removeprefix("/")
       if not Fnmatch(relative_path, UNZIP_PATTERN):
         continue
-      target_path = os.path.join(
-          output_dir, relative_path)
-      os.makedirs(os.path.dirname(target_path), exist_ok=True)
-      shutil.copy(path, target_path)
+      if filename.endswith(".prop") or filename == "prop.default" or "/etc/vintf/" in relative_path:
+        target_path = os.path.join(
+            output_dir, relative_path)
+        os.makedirs(os.path.dirname(target_path), exist_ok=True)
+        shutil.copy(path, target_path)
   return output_dir