Add specific error codes to enable better error handling am: be0a349a6d

Original change: https://android-review.googlesource.com/c/platform/system/update_engine/+/2857466

Change-Id: I20b93b539bcd864a1f9d2d05f03a9f3d245d8a4b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/aosp/update_attempter_android.cc b/aosp/update_attempter_android.cc
index ea83d9a..0f4b2e4 100644
--- a/aosp/update_attempter_android.cc
+++ b/aosp/update_attempter_android.cc
@@ -242,18 +242,18 @@
     const vector<string>& key_value_pair_headers,
     Error* error) {
   if (status_ == UpdateStatus::UPDATED_NEED_REBOOT) {
-    return LogAndSetGenericError(
-        error,
-        __LINE__,
-        __FILE__,
-        "An update already applied, waiting for reboot");
+    return LogAndSetError(error,
+                          __LINE__,
+                          __FILE__,
+                          "An update already applied, waiting for reboot",
+                          ErrorCode::kUpdateAlreadyInstalled);
   }
   if (processor_->IsRunning()) {
-    return LogAndSetGenericError(
-        error,
-        __LINE__,
-        __FILE__,
-        "Already processing an update, cancel it first.");
+    return LogAndSetError(error,
+                          __LINE__,
+                          __FILE__,
+                          "Already processing an update, cancel it first.",
+                          ErrorCode::kUpdateProcessing);
   }
   DCHECK_EQ(status_, UpdateStatus::IDLE);
 
diff --git a/common/error_code.h b/common/error_code.h
index 7924579..8954f72 100644
--- a/common/error_code.h
+++ b/common/error_code.h
@@ -88,6 +88,8 @@
   kPackageExcludedFromUpdate = 62,
   kPostInstallMountError = 63,
   kOverlayfsenabledError = 64,
+  kUpdateProcessing = 65,
+  kUpdateAlreadyInstalled = 66,
 
   // VERY IMPORTANT! When adding new error codes:
   //
diff --git a/common/error_code_utils.cc b/common/error_code_utils.cc
index 12a98bf..421e124 100644
--- a/common/error_code_utils.cc
+++ b/common/error_code_utils.cc
@@ -177,6 +177,10 @@
       return "ErrorCode::kPostInstallMountError";
     case ErrorCode::kOverlayfsenabledError:
       return "ErrorCode::kOverlayfsenabledError";
+    case ErrorCode::kUpdateProcessing:
+      return "ErrorCode::kUpdateProcessing";
+    case ErrorCode::kUpdateAlreadyInstalled:
+      return "ErrorCode::kUpdateAlreadyInstalled";
       // Don't add a default case to let the compiler warn about newly added
       // error codes which should be added here.
   }
diff --git a/metrics_utils.cc b/metrics_utils.cc
index 94a0520..35bbcf4 100644
--- a/metrics_utils.cc
+++ b/metrics_utils.cc
@@ -138,6 +138,8 @@
     case ErrorCode::kTestImageFlag:
     case ErrorCode::kTestOmahaUrlFlag:
     case ErrorCode::kSpecialFlags:
+    case ErrorCode::kUpdateProcessing:
+    case ErrorCode::kUpdateAlreadyInstalled:
       break;
   }
 
@@ -245,6 +247,8 @@
     case ErrorCode::kNotEnoughSpace:
     case ErrorCode::kDeviceCorrupted:
     case ErrorCode::kPackageExcludedFromUpdate:
+    case ErrorCode::kUpdateProcessing:
+    case ErrorCode::kUpdateAlreadyInstalled:
       break;
 
     // Special flags. These can't happen (we mask them out above) but