Support a range of major and minor version.

In DeltaPerformer we set a supported major and minor version and only
accept that perticular version, but in reality we still support older
versions to test backward comatibility.

This CL change the supported major and minor version to a range to
reflect the truth of which version is supported and moved them to
payload_constants.

This is also useful when we have multi payload and want to reuse old
payload for non system partition while updating the system partition
to use a higher minor version.

Bug: 36289531
Test: update_engine_unittests
Change-Id: I49d73d69e64d78dfc2db21446faa98b3579ff995
Merged-In: I49d73d69e64d78dfc2db21446faa98b3579ff995
diff --git a/payload_consumer/payload_metadata.cc b/payload_consumer/payload_metadata.cc
index fe2df0a..f700228 100644
--- a/payload_consumer/payload_metadata.cc
+++ b/payload_consumer/payload_metadata.cc
@@ -60,9 +60,7 @@
 }
 
 MetadataParseResult PayloadMetadata::ParsePayloadHeader(
-    const brillo::Blob& payload,
-    uint64_t supported_major_version,
-    ErrorCode* error) {
+    const brillo::Blob& payload, ErrorCode* error) {
   uint64_t manifest_offset;
   // Ensure we have data to cover the major payload version.
   if (payload.size() < kDeltaManifestSizeOffset)
@@ -84,8 +82,8 @@
   // Switch big endian to host.
   major_payload_version_ = be64toh(major_payload_version_);
 
-  if (major_payload_version_ != supported_major_version &&
-      major_payload_version_ != kChromeOSMajorPayloadVersion) {
+  if (major_payload_version_ < kMinSupportedMajorPayloadVersion ||
+      major_payload_version_ > kMaxSupportedMajorPayloadVersion) {
     LOG(ERROR) << "Bad payload format -- unsupported payload version: "
                << major_payload_version_;
     *error = ErrorCode::kUnsupportedMajorPayloadVersion;