Allow disable_vabc flag in full OTA

Previously, brillo_update_payload only honors --disable_vabc flag for
incremental OTA. Respect this flag for full OTA as well.

Test: Generate a full OTA with --disable_vabc
Change-Id: Ic18dfdffd3e43ab139d1ea0704679ea38dd082c2
diff --git a/payload_generator/generate_delta_main.cc b/payload_generator/generate_delta_main.cc
index 7288eca..b04fec0 100644
--- a/payload_generator/generate_delta_main.cc
+++ b/payload_generator/generate_delta_main.cc
@@ -599,7 +599,6 @@
   if (FLAGS_is_partial_update) {
     payload_config.is_partial_update = true;
   }
-  payload_config.disable_vabc = FLAGS_disable_vabc;
 
   if (!FLAGS_in_file.empty()) {
     return ApplyPayload(FLAGS_in_file, payload_config) ? 0 : 1;
@@ -627,6 +626,12 @@
     CHECK(store.Load(base::FilePath(FLAGS_dynamic_partition_info_file)));
     CHECK(payload_config.target.LoadDynamicPartitionMetadata(store));
     CHECK(payload_config.target.ValidateDynamicPartitionMetadata());
+    if (FLAGS_disable_vabc) {
+      LOG(INFO) << "Disabling VABC";
+      payload_config.target.dynamic_partition_metadata->set_vabc_enabled(false);
+      payload_config.target.dynamic_partition_metadata
+          ->set_vabc_compression_param("");
+    }
   }
 
   CHECK(!FLAGS_out_file.empty());
diff --git a/payload_generator/payload_file.cc b/payload_generator/payload_file.cc
index d303cfb..6ec219f 100644
--- a/payload_generator/payload_file.cc
+++ b/payload_generator/payload_file.cc
@@ -72,11 +72,6 @@
     *(manifest_.mutable_dynamic_partition_metadata()) =
         *(config.target.dynamic_partition_metadata);
 
-  if (config.disable_vabc) {
-    manifest_.mutable_dynamic_partition_metadata()->set_vabc_enabled(false);
-    manifest_.mutable_dynamic_partition_metadata()->set_vabc_compression_param(
-        "");
-  }
   if (config.is_partial_update) {
     manifest_.set_partial_update(true);
   }
diff --git a/payload_generator/payload_generation_config.cc b/payload_generator/payload_generation_config.cc
index 73c9ab3..d45de6a 100644
--- a/payload_generator/payload_generation_config.cc
+++ b/payload_generator/payload_generation_config.cc
@@ -177,7 +177,9 @@
   store.GetBoolean("virtual_ab", &snapshot_enabled);
   metadata->set_snapshot_enabled(snapshot_enabled);
   bool vabc_enabled = false;
-  if (store.GetBoolean("virtual_ab_compression", &vabc_enabled)) {
+  if (store.GetBoolean("virtual_ab_compression", &vabc_enabled) &&
+      vabc_enabled) {
+    LOG(INFO) << "Target build supports VABC";
     metadata->set_vabc_enabled(vabc_enabled);
   }
   // We use "gz" compression by default for VABC.
diff --git a/payload_generator/payload_generation_config.h b/payload_generator/payload_generation_config.h
index f7d0b6b..9c8c59f 100644
--- a/payload_generator/payload_generation_config.h
+++ b/payload_generator/payload_generation_config.h
@@ -231,11 +231,6 @@
   // The maximum timestamp of the OS allowed to apply this payload.
   int64_t max_timestamp = 0;
 
-  // Permit use of VABC by default. Even if this is set to true, the device must
-  // support VABC in order to use it. If this is set to false, device must not
-  // use VABC regardless.
-  bool disable_vabc = false;
-
   // Path to apex_info.pb, extracted from target_file.zip
   std::string apex_info_file;
 };
diff --git a/scripts/brillo_update_payload b/scripts/brillo_update_payload
index c510148..d1a1781 100755
--- a/scripts/brillo_update_payload
+++ b/scripts/brillo_update_payload
@@ -706,10 +706,11 @@
       GENERATOR_ARGS+=(
         --disable_verity_computation="${FLAGS_disable_verity_computation}" )
     fi
-    if [[ -n "${FLAGS_disable_vabc}" ]]; then
-      GENERATOR_ARGS+=(
-        --disable_vabc="${FLAGS_disable_vabc}" )
-    fi
+  fi
+
+  if [[ -n "${FLAGS_disable_vabc}" ]]; then
+    GENERATOR_ARGS+=(
+      --disable_vabc="${FLAGS_disable_vabc}" )
   fi
 
   # minor version is set only for delta or partial payload.