Add ErrorCode::kUserCanceled.
To accomodate the posibility of canceling an ongoing update, this patch
adds a new ErrorCode signaling a user canceling the update.
This patch also removes the now useless unittests that checks if you
added a new error code since the compiler fails if you don't add the
error code to the method mentioned in the test.
Bug: None
TEST=FEATURES=test emerge-link update_engine
TEST=`mmma system/update_engine` on edison-eng and aosp_arm-eng
Change-Id: I991dab1dd8b6c0bb0c24d51cca4e1b75440a86b4
diff --git a/common/error_code.h b/common/error_code.h
index 2bbdcfa..32155f2 100644
--- a/common/error_code.h
+++ b/common/error_code.h
@@ -71,6 +71,7 @@
kUnsupportedMinorPayloadVersion = 45,
kOmahaRequestXMLHasEntityDecl = 46,
kFilesystemVerifierError = 47,
+ kUserCanceled = 48,
// VERY IMPORTANT! When adding new error codes:
//
@@ -122,8 +123,8 @@
// Mask that indicates bit positions that are used to indicate special flags
// that are embedded in the error code to provide additional context about
// the system in which the error was encountered.
- kSpecialFlags = (kDevModeFlag | kResumedFlag | kTestImageFlag |
- kTestOmahaUrlFlag)
+ kSpecialFlags =
+ (kDevModeFlag | kResumedFlag | kTestImageFlag | kTestOmahaUrlFlag)
};
inline std::ostream& operator<<(std::ostream& os, ErrorCode val) {
diff --git a/common/utils.cc b/common/utils.cc
index 41a75f8..a09b425 100644
--- a/common/utils.cc
+++ b/common/utils.cc
@@ -1110,6 +1110,8 @@
return "ErrorCode::kOmahaRequestXMLHasEntityDecl";
case ErrorCode::kFilesystemVerifierError:
return "ErrorCode::kFilesystemVerifierError";
+ case ErrorCode::kUserCanceled:
+ return "ErrorCode::kUserCanceled";
// 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.h b/metrics.h
index ec9d880..bb9fa5e 100644
--- a/metrics.h
+++ b/metrics.h
@@ -149,6 +149,7 @@
kVerificationFailed, // Root or Kernel partition verification failed.
kPostInstallFailed, // The postinstall step failed.
kAbnormalTermination, // The attempt ended abnormally.
+ kUpdateCanceled, // Update canceled by the user.
kNumConstants,
diff --git a/metrics_utils.cc b/metrics_utils.cc
index eb99c7d..11260fc 100644
--- a/metrics_utils.cc
+++ b/metrics_utils.cc
@@ -85,6 +85,9 @@
case ErrorCode::kPostinstallFirmwareRONotUpdatable:
return metrics::AttemptResult::kPostInstallFailed;
+ case ErrorCode::kUserCanceled:
+ return metrics::AttemptResult::kUpdateCanceled;
+
// We should never get these errors in the update-attempt stage so
// return internal error if this happens.
case ErrorCode::kError:
@@ -201,6 +204,7 @@
case ErrorCode::kUnsupportedMinorPayloadVersion:
case ErrorCode::kOmahaRequestXMLHasEntityDecl:
case ErrorCode::kFilesystemVerifierError:
+ case ErrorCode::kUserCanceled:
break;
// Special flags. These can't happen (we mask them out above) but
diff --git a/payload_state.cc b/payload_state.cc
index d7ccee5..38a36f9 100644
--- a/payload_state.cc
+++ b/payload_state.cc
@@ -340,6 +340,7 @@
case ErrorCode::kUpdateCanceledByChannelChange:
case ErrorCode::kOmahaRequestXMLHasEntityDecl:
case ErrorCode::kFilesystemVerifierError:
+ case ErrorCode::kUserCanceled:
LOG(INFO) << "Not incrementing URL index or failure count for this error";
break;
@@ -608,6 +609,7 @@
case metrics::AttemptResult::kVerificationFailed:
case metrics::AttemptResult::kPostInstallFailed:
case metrics::AttemptResult::kAbnormalTermination:
+ case metrics::AttemptResult::kUpdateCanceled:
case metrics::AttemptResult::kNumConstants:
case metrics::AttemptResult::kUnset:
break;
diff --git a/payload_state_unittest.cc b/payload_state_unittest.cc
index a8067dc..4490637 100644
--- a/payload_state_unittest.cc
+++ b/payload_state_unittest.cc
@@ -101,17 +101,6 @@
class PayloadStateTest : public ::testing::Test { };
-TEST(PayloadStateTest, DidYouAddANewErrorCode) {
- if (static_cast<int>(ErrorCode::kUmaReportedMax) != 48) {
- LOG(ERROR) << "The following failure is intentional. If you added a new "
- << "ErrorCode enum value, make sure to add it to the "
- << "PayloadState::UpdateFailed method and then update this test "
- << "to the new value of ErrorCode::kUmaReportedMax, which is "
- << ErrorCode::kUmaReportedMax;
- EXPECT_FALSE("Please see the log line above");
- }
-}
-
TEST(PayloadStateTest, SetResponseWorksWithEmptyResponse) {
OmahaResponse response;
FakeSystemState fake_system_state;
diff --git a/update_manager/chromeos_policy.cc b/update_manager/chromeos_policy.cc
index e3d99d0..9abb21f 100644
--- a/update_manager/chromeos_policy.cc
+++ b/update_manager/chromeos_policy.cc
@@ -129,6 +129,7 @@
case ErrorCode::kUpdateCanceledByChannelChange:
case ErrorCode::kOmahaRequestXMLHasEntityDecl:
case ErrorCode::kFilesystemVerifierError:
+ case ErrorCode::kUserCanceled:
LOG(INFO) << "Not changing URL index or failure count due to error "
<< chromeos_update_engine::utils::CodeToString(err_code)
<< " (" << static_cast<int>(err_code) << ")";
@@ -137,7 +138,7 @@
case ErrorCode::kSuccess: // success code
case ErrorCode::kUmaReportedMax: // not an error code
case ErrorCode::kOmahaRequestHTTPResponseBase: // aggregated already
- case ErrorCode::kDevModeFlag: // not an error code
+ case ErrorCode::kDevModeFlag: // not an error code
case ErrorCode::kResumedFlag: // not an error code
case ErrorCode::kTestImageFlag: // not an error code
case ErrorCode::kTestOmahaUrlFlag: // not an error code