dumpstate: Add USF registry dump.

This collects the output of "usf_reg_edit save -" and adds it to the
bugreport. It is only done on userbuilds for PROTO* and EVT* devices.

Bug: 187081112
Test: Run "adb bugreport <zip>" and verify it contains the output
      from "usf_reg_edit save -".
Change-Id: Ie68b56a3bb211840f33bdb5afbc31b0759641c8e
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp
index aa2c2c9..8b49a36 100644
--- a/dumpstate/DumpstateDevice.cpp
+++ b/dumpstate/DumpstateDevice.cpp
@@ -49,6 +49,8 @@
 #define TCPDUMP_NUMBER_BUGREPORT "persist.vendor.tcpdump.log.br_num"
 #define TCPDUMP_PERSIST_PROPERTY "persist.vendor.tcpdump.log.alwayson"
 
+#define HW_REVISION "ro.boot.hardware.revision"
+
 using android::os::dumpstate::CommandOptions;
 using android::os::dumpstate::DumpFileToFd;
 using android::os::dumpstate::PropertiesHelper;
@@ -765,6 +767,17 @@
     RunCommandToFd(fd, "USF statistics",
                    {"/vendor/bin/sh", "-c", "usf_stats get --all"},
                    options);
+    if (!PropertiesHelper::IsUserBuild()) {
+        // Not a user build, if this is also not a production device dump the USF registry.
+        std::string hwRev = android::base::GetProperty(HW_REVISION, "");
+        if (hwRev.find("PROTO") != std::string::npos ||
+            hwRev.find("EVT") != std::string::npos ||
+            hwRev.find("DVT") != std::string::npos) {
+            RunCommandToFd(fd, "USF Registry",
+                           {"/vendor/bin/sh", "-c", "usf_reg_edit save -"},
+                           options);
+        }
+    }
 }
 
 struct abl_log_header {