diff --git a/.gitignore b/.gitignore index 7e40555..fc4b4f7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,7 @@ .gradle build/ local.properties +.classpath +.project +.settings __pycache__ diff --git a/bbootimg/build.gradle.kts b/bbootimg/build.gradle.kts index c4e2171..18cbc1c 100644 --- a/bbootimg/build.gradle.kts +++ b/bbootimg/build.gradle.kts @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") version "1.9.0" + kotlin("jvm") version "1.9.20" application } diff --git a/bbootimg/src/main/java/chromeos_update_engine/UpdateMetadata.java b/bbootimg/src/main/java/chromeos_update_engine/UpdateMetadata.java index 9299950..e0160e2 100644 --- a/bbootimg/src/main/java/chromeos_update_engine/UpdateMetadata.java +++ b/bbootimg/src/main/java/chromeos_update_engine/UpdateMetadata.java @@ -67,54 +67,6 @@ public final class UpdateMetadata { getUnknownFields() { return this.unknownFields; } - private Extent( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 8: { - bitField0_ |= 0x00000001; - startBlock_ = input.readUInt64(); - break; - } - case 16: { - bitField0_ |= 0x00000002; - numBlocks_ = input.readUInt64(); - break; - } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_Extent_descriptor; @@ -130,7 +82,7 @@ public final class UpdateMetadata { private int bitField0_; public static final int START_BLOCK_FIELD_NUMBER = 1; - private long startBlock_; + private long startBlock_ = 0L; /** * optional uint64 start_block = 1; * @return Whether the startBlock field is set. @@ -149,7 +101,7 @@ public final class UpdateMetadata { } public static final int NUM_BLOCKS_FIELD_NUMBER = 2; - private long numBlocks_; + private long numBlocks_ = 0L; /** * optional uint64 num_blocks = 2; * @return Whether the numBlocks field is set. @@ -187,7 +139,7 @@ public final class UpdateMetadata { if (((bitField0_ & 0x00000002) != 0)) { output.writeUInt64(2, numBlocks_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -204,7 +156,7 @@ public final class UpdateMetadata { size += com.google.protobuf.CodedOutputStream .computeUInt64Size(2, numBlocks_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -229,7 +181,7 @@ public final class UpdateMetadata { if (getNumBlocks() != other.getNumBlocks()) return false; } - if (!unknownFields.equals(other.unknownFields)) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -250,7 +202,7 @@ public final class UpdateMetadata { hash = (53 * hash) + com.google.protobuf.Internal.hashLong( getNumBlocks()); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -367,26 +319,20 @@ public final class UpdateMetadata { // Construct using chromeos_update_engine.UpdateMetadata.Extent.newBuilder() private Builder() { - maybeForceBuilderInitialization(); + } private Builder( com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } + } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; startBlock_ = 0L; - bitField0_ = (bitField0_ & ~0x00000001); numBlocks_ = 0L; - bitField0_ = (bitField0_ & ~0x00000002); return this; } @@ -413,6 +359,12 @@ public final class UpdateMetadata { @java.lang.Override public chromeos_update_engine.UpdateMetadata.Extent buildPartial() { chromeos_update_engine.UpdateMetadata.Extent result = new chromeos_update_engine.UpdateMetadata.Extent(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(chromeos_update_engine.UpdateMetadata.Extent result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -423,9 +375,7 @@ public final class UpdateMetadata { result.numBlocks_ = numBlocks_; to_bitField0_ |= 0x00000002; } - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; + result.bitField0_ |= to_bitField0_; } @java.lang.Override @@ -478,7 +428,7 @@ public final class UpdateMetadata { if (other.hasNumBlocks()) { setNumBlocks(other.getNumBlocks()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -493,17 +443,40 @@ public final class UpdateMetadata { com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - chromeos_update_engine.UpdateMetadata.Extent parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + startBlock_ = input.readUInt64(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 16: { + numBlocks_ = input.readUInt64(); + bitField0_ |= 0x00000002; + break; + } // case 16 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (chromeos_update_engine.UpdateMetadata.Extent) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } + onChanged(); + } // finally return this; } private int bitField0_; @@ -531,8 +504,9 @@ public final class UpdateMetadata { * @return This builder for chaining. */ public Builder setStartBlock(long value) { - bitField0_ |= 0x00000001; + startBlock_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -570,8 +544,9 @@ public final class UpdateMetadata { * @return This builder for chaining. */ public Builder setNumBlocks(long value) { - bitField0_ |= 0x00000002; + numBlocks_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -618,7 +593,18 @@ public final class UpdateMetadata { com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Extent(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -645,7 +631,7 @@ public final class UpdateMetadata { /** * repeated .chromeos_update_engine.Signatures.Signature signatures = 1; */ - java.util.List + java.util.List getSignaturesList(); /** * repeated .chromeos_update_engine.Signatures.Signature signatures = 1; @@ -658,7 +644,7 @@ public final class UpdateMetadata { /** * repeated .chromeos_update_engine.Signatures.Signature signatures = 1; */ - java.util.List + java.util.List getSignaturesOrBuilderList(); /** * repeated .chromeos_update_engine.Signatures.Signature signatures = 1; @@ -694,56 +680,6 @@ public final class UpdateMetadata { getUnknownFields() { return this.unknownFields; } - private Signatures( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 10: { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - signatures_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - signatures_.add( - input.readMessage(chromeos_update_engine.UpdateMetadata.Signatures.Signature.PARSER, extensionRegistry)); - break; - } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - signatures_ = java.util.Collections.unmodifiableList(signatures_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_Signatures_descriptor; @@ -763,11 +699,15 @@ public final class UpdateMetadata { /** * optional uint32 version = 1 [deprecated = true]; + * @deprecated chromeos_update_engine.Signatures.Signature.version is deprecated. + * See update_metadata.proto;l=127 * @return Whether the version field is set. */ @java.lang.Deprecated boolean hasVersion(); /** * optional uint32 version = 1 [deprecated = true]; + * @deprecated chromeos_update_engine.Signatures.Signature.version is deprecated. + * See update_metadata.proto;l=127 * @return The version. */ @java.lang.Deprecated int getVersion(); @@ -842,59 +782,6 @@ public final class UpdateMetadata { getUnknownFields() { return this.unknownFields; } - private Signature( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 8: { - bitField0_ |= 0x00000001; - version_ = input.readUInt32(); - break; - } - case 18: { - bitField0_ |= 0x00000002; - data_ = input.readBytes(); - break; - } - case 29: { - bitField0_ |= 0x00000004; - unpaddedSignatureSize_ = input.readFixed32(); - break; - } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_Signatures_Signature_descriptor; @@ -910,9 +797,11 @@ public final class UpdateMetadata { private int bitField0_; public static final int VERSION_FIELD_NUMBER = 1; - private int version_; + private int version_ = 0; /** * optional uint32 version = 1 [deprecated = true]; + * @deprecated chromeos_update_engine.Signatures.Signature.version is deprecated. + * See update_metadata.proto;l=127 * @return Whether the version field is set. */ @java.lang.Override @@ -921,6 +810,8 @@ public final class UpdateMetadata { } /** * optional uint32 version = 1 [deprecated = true]; + * @deprecated chromeos_update_engine.Signatures.Signature.version is deprecated. + * See update_metadata.proto;l=127 * @return The version. */ @java.lang.Override @@ -929,7 +820,7 @@ public final class UpdateMetadata { } public static final int DATA_FIELD_NUMBER = 2; - private com.google.protobuf.ByteString data_; + private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY; /** * optional bytes data = 2; * @return Whether the data field is set. @@ -948,7 +839,7 @@ public final class UpdateMetadata { } public static final int UNPADDED_SIGNATURE_SIZE_FIELD_NUMBER = 3; - private int unpaddedSignatureSize_; + private int unpaddedSignatureSize_ = 0; /** *
        * The DER encoded signature size of EC keys is nondeterministic for
@@ -1009,7 +900,7 @@ public final class UpdateMetadata {
         if (((bitField0_ & 0x00000004) != 0)) {
           output.writeFixed32(3, unpaddedSignatureSize_);
         }
-        unknownFields.writeTo(output);
+        getUnknownFields().writeTo(output);
       }
 
       @java.lang.Override
@@ -1030,7 +921,7 @@ public final class UpdateMetadata {
           size += com.google.protobuf.CodedOutputStream
             .computeFixed32Size(3, unpaddedSignatureSize_);
         }
-        size += unknownFields.getSerializedSize();
+        size += getUnknownFields().getSerializedSize();
         memoizedSize = size;
         return size;
       }
@@ -1060,7 +951,7 @@ public final class UpdateMetadata {
           if (getUnpaddedSignatureSize()
               != other.getUnpaddedSignatureSize()) return false;
         }
-        if (!unknownFields.equals(other.unknownFields)) return false;
+        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
         return true;
       }
 
@@ -1083,7 +974,7 @@ public final class UpdateMetadata {
           hash = (37 * hash) + UNPADDED_SIGNATURE_SIZE_FIELD_NUMBER;
           hash = (53 * hash) + getUnpaddedSignatureSize();
         }
-        hash = (29 * hash) + unknownFields.hashCode();
+        hash = (29 * hash) + getUnknownFields().hashCode();
         memoizedHashCode = hash;
         return hash;
       }
@@ -1200,28 +1091,21 @@ public final class UpdateMetadata {
 
         // Construct using chromeos_update_engine.UpdateMetadata.Signatures.Signature.newBuilder()
         private Builder() {
-          maybeForceBuilderInitialization();
+
         }
 
         private Builder(
             com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
           super(parent);
-          maybeForceBuilderInitialization();
-        }
-        private void maybeForceBuilderInitialization() {
-          if (com.google.protobuf.GeneratedMessageV3
-                  .alwaysUseFieldBuilders) {
-          }
+
         }
         @java.lang.Override
         public Builder clear() {
           super.clear();
+          bitField0_ = 0;
           version_ = 0;
-          bitField0_ = (bitField0_ & ~0x00000001);
           data_ = com.google.protobuf.ByteString.EMPTY;
-          bitField0_ = (bitField0_ & ~0x00000002);
           unpaddedSignatureSize_ = 0;
-          bitField0_ = (bitField0_ & ~0x00000004);
           return this;
         }
 
@@ -1248,6 +1132,12 @@ public final class UpdateMetadata {
         @java.lang.Override
         public chromeos_update_engine.UpdateMetadata.Signatures.Signature buildPartial() {
           chromeos_update_engine.UpdateMetadata.Signatures.Signature result = new chromeos_update_engine.UpdateMetadata.Signatures.Signature(this);
+          if (bitField0_ != 0) { buildPartial0(result); }
+          onBuilt();
+          return result;
+        }
+
+        private void buildPartial0(chromeos_update_engine.UpdateMetadata.Signatures.Signature result) {
           int from_bitField0_ = bitField0_;
           int to_bitField0_ = 0;
           if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -1255,16 +1145,14 @@ public final class UpdateMetadata {
             to_bitField0_ |= 0x00000001;
           }
           if (((from_bitField0_ & 0x00000002) != 0)) {
+            result.data_ = data_;
             to_bitField0_ |= 0x00000002;
           }
-          result.data_ = data_;
           if (((from_bitField0_ & 0x00000004) != 0)) {
             result.unpaddedSignatureSize_ = unpaddedSignatureSize_;
             to_bitField0_ |= 0x00000004;
           }
-          result.bitField0_ = to_bitField0_;
-          onBuilt();
-          return result;
+          result.bitField0_ |= to_bitField0_;
         }
 
         @java.lang.Override
@@ -1320,7 +1208,7 @@ public final class UpdateMetadata {
           if (other.hasUnpaddedSignatureSize()) {
             setUnpaddedSignatureSize(other.getUnpaddedSignatureSize());
           }
-          this.mergeUnknownFields(other.unknownFields);
+          this.mergeUnknownFields(other.getUnknownFields());
           onChanged();
           return this;
         }
@@ -1335,17 +1223,45 @@ public final class UpdateMetadata {
             com.google.protobuf.CodedInputStream input,
             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          chromeos_update_engine.UpdateMetadata.Signatures.Signature parsedMessage = null;
+          if (extensionRegistry == null) {
+            throw new java.lang.NullPointerException();
+          }
           try {
-            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                case 8: {
+                  version_ = input.readUInt32();
+                  bitField0_ |= 0x00000001;
+                  break;
+                } // case 8
+                case 18: {
+                  data_ = input.readBytes();
+                  bitField0_ |= 0x00000002;
+                  break;
+                } // case 18
+                case 29: {
+                  unpaddedSignatureSize_ = input.readFixed32();
+                  bitField0_ |= 0x00000004;
+                  break;
+                } // case 29
+                default: {
+                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                    done = true; // was an endgroup tag
+                  }
+                  break;
+                } // default:
+              } // switch (tag)
+            } // while (!done)
           } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-            parsedMessage = (chromeos_update_engine.UpdateMetadata.Signatures.Signature) e.getUnfinishedMessage();
             throw e.unwrapIOException();
           } finally {
-            if (parsedMessage != null) {
-              mergeFrom(parsedMessage);
-            }
-          }
+            onChanged();
+          } // finally
           return this;
         }
         private int bitField0_;
@@ -1353,6 +1269,8 @@ public final class UpdateMetadata {
         private int version_ ;
         /**
          * optional uint32 version = 1 [deprecated = true];
+         * @deprecated chromeos_update_engine.Signatures.Signature.version is deprecated.
+         *     See update_metadata.proto;l=127
          * @return Whether the version field is set.
          */
         @java.lang.Override
@@ -1361,6 +1279,8 @@ public final class UpdateMetadata {
         }
         /**
          * optional uint32 version = 1 [deprecated = true];
+         * @deprecated chromeos_update_engine.Signatures.Signature.version is deprecated.
+         *     See update_metadata.proto;l=127
          * @return The version.
          */
         @java.lang.Override
@@ -1369,17 +1289,22 @@ public final class UpdateMetadata {
         }
         /**
          * optional uint32 version = 1 [deprecated = true];
+         * @deprecated chromeos_update_engine.Signatures.Signature.version is deprecated.
+         *     See update_metadata.proto;l=127
          * @param value The version to set.
          * @return This builder for chaining.
          */
         @java.lang.Deprecated public Builder setVersion(int value) {
-          bitField0_ |= 0x00000001;
+          
           version_ = value;
+          bitField0_ |= 0x00000001;
           onChanged();
           return this;
         }
         /**
          * optional uint32 version = 1 [deprecated = true];
+         * @deprecated chromeos_update_engine.Signatures.Signature.version is deprecated.
+         *     See update_metadata.proto;l=127
          * @return This builder for chaining.
          */
         @java.lang.Deprecated public Builder clearVersion() {
@@ -1412,11 +1337,9 @@ public final class UpdateMetadata {
          * @return This builder for chaining.
          */
         public Builder setData(com.google.protobuf.ByteString value) {
-          if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
+          if (value == null) { throw new NullPointerException(); }
           data_ = value;
+          bitField0_ |= 0x00000002;
           onChanged();
           return this;
         }
@@ -1484,8 +1407,9 @@ public final class UpdateMetadata {
          * @return This builder for chaining.
          */
         public Builder setUnpaddedSignatureSize(int value) {
-          bitField0_ |= 0x00000004;
+          
           unpaddedSignatureSize_ = value;
+          bitField0_ |= 0x00000004;
           onChanged();
           return this;
         }
@@ -1542,7 +1466,18 @@ public final class UpdateMetadata {
             com.google.protobuf.CodedInputStream input,
             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
             throws com.google.protobuf.InvalidProtocolBufferException {
-          return new Signature(input, extensionRegistry);
+          Builder builder = newBuilder();
+          try {
+            builder.mergeFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(builder.buildPartial());
+          } catch (com.google.protobuf.UninitializedMessageException e) {
+            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(e)
+                .setUnfinishedMessage(builder.buildPartial());
+          }
+          return builder.buildPartial();
         }
       };
 
@@ -1563,6 +1498,7 @@ public final class UpdateMetadata {
     }
 
     public static final int SIGNATURES_FIELD_NUMBER = 1;
+    @SuppressWarnings("serial")
     private java.util.List signatures_;
     /**
      * repeated .chromeos_update_engine.Signatures.Signature signatures = 1;
@@ -1575,7 +1511,7 @@ public final class UpdateMetadata {
      * repeated .chromeos_update_engine.Signatures.Signature signatures = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getSignaturesOrBuilderList() {
       return signatures_;
     }
@@ -1619,7 +1555,7 @@ public final class UpdateMetadata {
       for (int i = 0; i < signatures_.size(); i++) {
         output.writeMessage(1, signatures_.get(i));
       }
-      unknownFields.writeTo(output);
+      getUnknownFields().writeTo(output);
     }
 
     @java.lang.Override
@@ -1632,7 +1568,7 @@ public final class UpdateMetadata {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(1, signatures_.get(i));
       }
-      size += unknownFields.getSerializedSize();
+      size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
       return size;
     }
@@ -1649,7 +1585,7 @@ public final class UpdateMetadata {
 
       if (!getSignaturesList()
           .equals(other.getSignaturesList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
+      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
       return true;
     }
 
@@ -1664,7 +1600,7 @@ public final class UpdateMetadata {
         hash = (37 * hash) + SIGNATURES_FIELD_NUMBER;
         hash = (53 * hash) + getSignaturesList().hashCode();
       }
-      hash = (29 * hash) + unknownFields.hashCode();
+      hash = (29 * hash) + getUnknownFields().hashCode();
       memoizedHashCode = hash;
       return hash;
     }
@@ -1781,29 +1717,25 @@ public final class UpdateMetadata {
 
       // Construct using chromeos_update_engine.UpdateMetadata.Signatures.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
+
       }
 
       private Builder(
           com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getSignaturesFieldBuilder();
-        }
+
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
+        bitField0_ = 0;
         if (signaturesBuilder_ == null) {
           signatures_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
         } else {
+          signatures_ = null;
           signaturesBuilder_.clear();
         }
+        bitField0_ = (bitField0_ & ~0x00000001);
         return this;
       }
 
@@ -1830,7 +1762,13 @@ public final class UpdateMetadata {
       @java.lang.Override
       public chromeos_update_engine.UpdateMetadata.Signatures buildPartial() {
         chromeos_update_engine.UpdateMetadata.Signatures result = new chromeos_update_engine.UpdateMetadata.Signatures(this);
-        int from_bitField0_ = bitField0_;
+        buildPartialRepeatedFields(result);
+        if (bitField0_ != 0) { buildPartial0(result); }
+        onBuilt();
+        return result;
+      }
+
+      private void buildPartialRepeatedFields(chromeos_update_engine.UpdateMetadata.Signatures result) {
         if (signaturesBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
             signatures_ = java.util.Collections.unmodifiableList(signatures_);
@@ -1840,8 +1778,10 @@ public final class UpdateMetadata {
         } else {
           result.signatures_ = signaturesBuilder_.build();
         }
-        onBuilt();
-        return result;
+      }
+
+      private void buildPartial0(chromeos_update_engine.UpdateMetadata.Signatures result) {
+        int from_bitField0_ = bitField0_;
       }
 
       @java.lang.Override
@@ -1906,7 +1846,7 @@ public final class UpdateMetadata {
               signaturesBuilder_ = null;
               signatures_ = other.signatures_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              signaturesBuilder_ =
+              signaturesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getSignaturesFieldBuilder() : null;
             } else {
@@ -1914,7 +1854,7 @@ public final class UpdateMetadata {
             }
           }
         }
-        this.mergeUnknownFields(other.unknownFields);
+        this.mergeUnknownFields(other.getUnknownFields());
         onChanged();
         return this;
       }
@@ -1929,17 +1869,43 @@ public final class UpdateMetadata {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        chromeos_update_engine.UpdateMetadata.Signatures parsedMessage = null;
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
         try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              case 10: {
+                chromeos_update_engine.UpdateMetadata.Signatures.Signature m =
+                    input.readMessage(
+                        chromeos_update_engine.UpdateMetadata.Signatures.Signature.PARSER,
+                        extensionRegistry);
+                if (signaturesBuilder_ == null) {
+                  ensureSignaturesIsMutable();
+                  signatures_.add(m);
+                } else {
+                  signaturesBuilder_.addMessage(m);
+                }
+                break;
+              } // case 10
+              default: {
+                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                  done = true; // was an endgroup tag
+                }
+                break;
+              } // default:
+            } // switch (tag)
+          } // while (!done)
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (chromeos_update_engine.UpdateMetadata.Signatures) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
+          onChanged();
+        } // finally
         return this;
       }
       private int bitField0_;
@@ -2139,7 +2105,7 @@ public final class UpdateMetadata {
       /**
        * repeated .chromeos_update_engine.Signatures.Signature signatures = 1;
        */
-      public java.util.List
+      public java.util.List 
            getSignaturesOrBuilderList() {
         if (signaturesBuilder_ != null) {
           return signaturesBuilder_.getMessageOrBuilderList();
@@ -2165,12 +2131,12 @@ public final class UpdateMetadata {
       /**
        * repeated .chromeos_update_engine.Signatures.Signature signatures = 1;
        */
-      public java.util.List
+      public java.util.List 
            getSignaturesBuilderList() {
         return getSignaturesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          chromeos_update_engine.UpdateMetadata.Signatures.Signature, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder, chromeos_update_engine.UpdateMetadata.Signatures.SignatureOrBuilder>
+          chromeos_update_engine.UpdateMetadata.Signatures.Signature, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder, chromeos_update_engine.UpdateMetadata.Signatures.SignatureOrBuilder> 
           getSignaturesFieldBuilder() {
         if (signaturesBuilder_ == null) {
           signaturesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -2216,7 +2182,18 @@ public final class UpdateMetadata {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Signatures(input, extensionRegistry);
+        Builder builder = newBuilder();
+        try {
+          builder.mergeFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(builder.buildPartial());
+        } catch (com.google.protobuf.UninitializedMessageException e) {
+          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(e)
+              .setUnfinishedMessage(builder.buildPartial());
+        }
+        return builder.buildPartial();
       }
     };
 
@@ -2290,54 +2267,6 @@ public final class UpdateMetadata {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private PartitionInfo(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-              bitField0_ |= 0x00000001;
-              size_ = input.readUInt64();
-              break;
-            }
-            case 18: {
-              bitField0_ |= 0x00000002;
-              hash_ = input.readBytes();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_PartitionInfo_descriptor;
@@ -2353,7 +2282,7 @@ public final class UpdateMetadata {
 
     private int bitField0_;
     public static final int SIZE_FIELD_NUMBER = 1;
-    private long size_;
+    private long size_ = 0L;
     /**
      * optional uint64 size = 1;
      * @return Whether the size field is set.
@@ -2372,7 +2301,7 @@ public final class UpdateMetadata {
     }
 
     public static final int HASH_FIELD_NUMBER = 2;
-    private com.google.protobuf.ByteString hash_;
+    private com.google.protobuf.ByteString hash_ = com.google.protobuf.ByteString.EMPTY;
     /**
      * optional bytes hash = 2;
      * @return Whether the hash field is set.
@@ -2410,7 +2339,7 @@ public final class UpdateMetadata {
       if (((bitField0_ & 0x00000002) != 0)) {
         output.writeBytes(2, hash_);
       }
-      unknownFields.writeTo(output);
+      getUnknownFields().writeTo(output);
     }
 
     @java.lang.Override
@@ -2427,7 +2356,7 @@ public final class UpdateMetadata {
         size += com.google.protobuf.CodedOutputStream
           .computeBytesSize(2, hash_);
       }
-      size += unknownFields.getSerializedSize();
+      size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
       return size;
     }
@@ -2452,7 +2381,7 @@ public final class UpdateMetadata {
         if (!getHash()
             .equals(other.getHash())) return false;
       }
-      if (!unknownFields.equals(other.unknownFields)) return false;
+      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
       return true;
     }
 
@@ -2472,7 +2401,7 @@ public final class UpdateMetadata {
         hash = (37 * hash) + HASH_FIELD_NUMBER;
         hash = (53 * hash) + getHash().hashCode();
       }
-      hash = (29 * hash) + unknownFields.hashCode();
+      hash = (29 * hash) + getUnknownFields().hashCode();
       memoizedHashCode = hash;
       return hash;
     }
@@ -2589,26 +2518,20 @@ public final class UpdateMetadata {
 
       // Construct using chromeos_update_engine.UpdateMetadata.PartitionInfo.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
+
       }
 
       private Builder(
           com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
+
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
+        bitField0_ = 0;
         size_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000001);
         hash_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000002);
         return this;
       }
 
@@ -2635,6 +2558,12 @@ public final class UpdateMetadata {
       @java.lang.Override
       public chromeos_update_engine.UpdateMetadata.PartitionInfo buildPartial() {
         chromeos_update_engine.UpdateMetadata.PartitionInfo result = new chromeos_update_engine.UpdateMetadata.PartitionInfo(this);
+        if (bitField0_ != 0) { buildPartial0(result); }
+        onBuilt();
+        return result;
+      }
+
+      private void buildPartial0(chromeos_update_engine.UpdateMetadata.PartitionInfo result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -2642,12 +2571,10 @@ public final class UpdateMetadata {
           to_bitField0_ |= 0x00000001;
         }
         if (((from_bitField0_ & 0x00000002) != 0)) {
+          result.hash_ = hash_;
           to_bitField0_ |= 0x00000002;
         }
-        result.hash_ = hash_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
+        result.bitField0_ |= to_bitField0_;
       }
 
       @java.lang.Override
@@ -2700,7 +2627,7 @@ public final class UpdateMetadata {
         if (other.hasHash()) {
           setHash(other.getHash());
         }
-        this.mergeUnknownFields(other.unknownFields);
+        this.mergeUnknownFields(other.getUnknownFields());
         onChanged();
         return this;
       }
@@ -2715,17 +2642,40 @@ public final class UpdateMetadata {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        chromeos_update_engine.UpdateMetadata.PartitionInfo parsedMessage = null;
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
         try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              case 8: {
+                size_ = input.readUInt64();
+                bitField0_ |= 0x00000001;
+                break;
+              } // case 8
+              case 18: {
+                hash_ = input.readBytes();
+                bitField0_ |= 0x00000002;
+                break;
+              } // case 18
+              default: {
+                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                  done = true; // was an endgroup tag
+                }
+                break;
+              } // default:
+            } // switch (tag)
+          } // while (!done)
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (chromeos_update_engine.UpdateMetadata.PartitionInfo) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
+          onChanged();
+        } // finally
         return this;
       }
       private int bitField0_;
@@ -2753,8 +2703,9 @@ public final class UpdateMetadata {
        * @return This builder for chaining.
        */
       public Builder setSize(long value) {
-        bitField0_ |= 0x00000001;
+        
         size_ = value;
+        bitField0_ |= 0x00000001;
         onChanged();
         return this;
       }
@@ -2792,11 +2743,9 @@ public final class UpdateMetadata {
        * @return This builder for chaining.
        */
       public Builder setHash(com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
+        if (value == null) { throw new NullPointerException(); }
         hash_ = value;
+        bitField0_ |= 0x00000002;
         onChanged();
         return this;
       }
@@ -2843,7 +2792,18 @@ public final class UpdateMetadata {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new PartitionInfo(input, extensionRegistry);
+        Builder builder = newBuilder();
+        try {
+          builder.mergeFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(builder.buildPartial());
+        } catch (com.google.protobuf.UninitializedMessageException e) {
+          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(e)
+              .setUnfinishedMessage(builder.buildPartial());
+        }
+        return builder.buildPartial();
       }
     };
 
@@ -2863,164 +2823,256 @@ public final class UpdateMetadata {
 
   }
 
-  public interface ImageInfoOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:chromeos_update_engine.ImageInfo)
+  public interface InstallOperationOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:chromeos_update_engine.InstallOperation)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * optional string board = 1;
-     * @return Whether the board field is set.
-     */
-    boolean hasBoard();
-    /**
-     * optional string board = 1;
-     * @return The board.
+     * required .chromeos_update_engine.InstallOperation.Type type = 1;
+     * @return Whether the type field is set.
      */
-    java.lang.String getBoard();
+    boolean hasType();
     /**
-     * optional string board = 1;
-     * @return The bytes for board.
+     * required .chromeos_update_engine.InstallOperation.Type type = 1;
+     * @return The type.
      */
-    com.google.protobuf.ByteString
-        getBoardBytes();
+    chromeos_update_engine.UpdateMetadata.InstallOperation.Type getType();
 
     /**
-     * optional string key = 2;
-     * @return Whether the key field is set.
-     */
-    boolean hasKey();
-    /**
-     * optional string key = 2;
-     * @return The key.
-     */
-    java.lang.String getKey();
-    /**
-     * optional string key = 2;
-     * @return The bytes for key.
-     */
-    com.google.protobuf.ByteString
-        getKeyBytes();
-
+     * 
+     * Only minor version 6 or newer support 64 bits |data_offset| and
+     * |data_length|, older client will read them as uint32.
+     * The offset into the delta file (after the protobuf)
+     * where the data (if any) is stored
+     * 
+ * + * optional uint64 data_offset = 2; + * @return Whether the dataOffset field is set. + */ + boolean hasDataOffset(); /** - * optional string channel = 3; - * @return Whether the channel field is set. + *
+     * Only minor version 6 or newer support 64 bits |data_offset| and
+     * |data_length|, older client will read them as uint32.
+     * The offset into the delta file (after the protobuf)
+     * where the data (if any) is stored
+     * 
+ * + * optional uint64 data_offset = 2; + * @return The dataOffset. */ - boolean hasChannel(); + long getDataOffset(); + /** - * optional string channel = 3; - * @return The channel. + *
+     * The length of the data in the delta file
+     * 
+ * + * optional uint64 data_length = 3; + * @return Whether the dataLength field is set. */ - java.lang.String getChannel(); + boolean hasDataLength(); /** - * optional string channel = 3; - * @return The bytes for channel. + *
+     * The length of the data in the delta file
+     * 
+ * + * optional uint64 data_length = 3; + * @return The dataLength. */ - com.google.protobuf.ByteString - getChannelBytes(); + long getDataLength(); /** - * optional string version = 4; - * @return Whether the version field is set. + *
+     * Ordered list of extents that are read from (if any) and written to.
+     * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - boolean hasVersion(); + java.util.List + getSrcExtentsList(); /** - * optional string version = 4; - * @return The version. + *
+     * Ordered list of extents that are read from (if any) and written to.
+     * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - java.lang.String getVersion(); + chromeos_update_engine.UpdateMetadata.Extent getSrcExtents(int index); /** - * optional string version = 4; - * @return The bytes for version. + *
+     * Ordered list of extents that are read from (if any) and written to.
+     * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - com.google.protobuf.ByteString - getVersionBytes(); + int getSrcExtentsCount(); + /** + *
+     * Ordered list of extents that are read from (if any) and written to.
+     * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; + */ + java.util.List + getSrcExtentsOrBuilderList(); + /** + *
+     * Ordered list of extents that are read from (if any) and written to.
+     * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; + */ + chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getSrcExtentsOrBuilder( + int index); /** *
-     * If these values aren't present, they should be assumed to match
-     * the equivalent value above. They are normally only different for
-     * special image types such as nplusone images.
+     * Byte length of src, equal to the number of blocks in src_extents *
+     * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
+     * pass that external program the number of bytes to read from the blocks we
+     * pass it.  This is not used in any other operation.
      * 
* - * optional string build_channel = 5; - * @return Whether the buildChannel field is set. + * optional uint64 src_length = 5; + * @return Whether the srcLength field is set. */ - boolean hasBuildChannel(); + boolean hasSrcLength(); /** *
-     * If these values aren't present, they should be assumed to match
-     * the equivalent value above. They are normally only different for
-     * special image types such as nplusone images.
+     * Byte length of src, equal to the number of blocks in src_extents *
+     * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
+     * pass that external program the number of bytes to read from the blocks we
+     * pass it.  This is not used in any other operation.
      * 
* - * optional string build_channel = 5; - * @return The buildChannel. + * optional uint64 src_length = 5; + * @return The srcLength. + */ + long getSrcLength(); + + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; + */ + java.util.List + getDstExtentsList(); + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; + */ + chromeos_update_engine.UpdateMetadata.Extent getDstExtents(int index); + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; + */ + int getDstExtentsCount(); + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; + */ + java.util.List + getDstExtentsOrBuilderList(); + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - java.lang.String getBuildChannel(); + chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getDstExtentsOrBuilder( + int index); + /** *
-     * If these values aren't present, they should be assumed to match
-     * the equivalent value above. They are normally only different for
-     * special image types such as nplusone images.
+     * Byte length of dst, equal to the number of blocks in dst_extents *
+     * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
+     * operation.
      * 
* - * optional string build_channel = 5; - * @return The bytes for buildChannel. + * optional uint64 dst_length = 7; + * @return Whether the dstLength field is set. */ - com.google.protobuf.ByteString - getBuildChannelBytes(); + boolean hasDstLength(); + /** + *
+     * Byte length of dst, equal to the number of blocks in dst_extents *
+     * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
+     * operation.
+     * 
+ * + * optional uint64 dst_length = 7; + * @return The dstLength. + */ + long getDstLength(); /** - * optional string build_version = 6; - * @return Whether the buildVersion field is set. + *
+     * Optional SHA 256 hash of the blob associated with this operation.
+     * This is used as a primary validation for http-based downloads and
+     * as a defense-in-depth validation for https-based downloads. If
+     * the operation doesn't refer to any blob, this field will have
+     * zero bytes.
+     * 
+ * + * optional bytes data_sha256_hash = 8; + * @return Whether the dataSha256Hash field is set. + */ + boolean hasDataSha256Hash(); + /** + *
+     * Optional SHA 256 hash of the blob associated with this operation.
+     * This is used as a primary validation for http-based downloads and
+     * as a defense-in-depth validation for https-based downloads. If
+     * the operation doesn't refer to any blob, this field will have
+     * zero bytes.
+     * 
+ * + * optional bytes data_sha256_hash = 8; + * @return The dataSha256Hash. */ - boolean hasBuildVersion(); + com.google.protobuf.ByteString getDataSha256Hash(); + /** - * optional string build_version = 6; - * @return The buildVersion. + *
+     * Indicates the SHA 256 hash of the source data referenced in src_extents at
+     * the time of applying the operation. If present, the update_engine daemon
+     * MUST read and verify the source data before applying the operation.
+     * 
+ * + * optional bytes src_sha256_hash = 9; + * @return Whether the srcSha256Hash field is set. */ - java.lang.String getBuildVersion(); + boolean hasSrcSha256Hash(); /** - * optional string build_version = 6; - * @return The bytes for buildVersion. + *
+     * Indicates the SHA 256 hash of the source data referenced in src_extents at
+     * the time of applying the operation. If present, the update_engine daemon
+     * MUST read and verify the source data before applying the operation.
+     * 
+ * + * optional bytes src_sha256_hash = 9; + * @return The srcSha256Hash. */ - com.google.protobuf.ByteString - getBuildVersionBytes(); + com.google.protobuf.ByteString getSrcSha256Hash(); } /** - *
-   * Describe an image we are based on in a human friendly way.
-   * Examples:
-   *   dev-channel, x86-alex, 1.2.3, mp-v3
-   *   nplusone-channel, x86-alex, 1.2.4, mp-v3, dev-channel, 1.2.3
-   * All fields will be set, if this message is present.
-   * 
- * - * Protobuf type {@code chromeos_update_engine.ImageInfo} + * Protobuf type {@code chromeos_update_engine.InstallOperation} */ - public static final class ImageInfo extends + public static final class InstallOperation extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:chromeos_update_engine.ImageInfo) - ImageInfoOrBuilder { + // @@protoc_insertion_point(message_implements:chromeos_update_engine.InstallOperation) + InstallOperationOrBuilder { private static final long serialVersionUID = 0L; - // Use ImageInfo.newBuilder() to construct. - private ImageInfo(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use InstallOperation.newBuilder() to construct. + private InstallOperation(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private ImageInfo() { - board_ = ""; - key_ = ""; - channel_ = ""; - version_ = ""; - buildChannel_ = ""; - buildVersion_ = ""; + private InstallOperation() { + type_ = 0; + srcExtents_ = java.util.Collections.emptyList(); + dstExtents_ = java.util.Collections.emptyList(); + dataSha256Hash_ = com.google.protobuf.ByteString.EMPTY; + srcSha256Hash_ = com.google.protobuf.ByteString.EMPTY; } @java.lang.Override @SuppressWarnings({"unused"}) protected java.lang.Object newInstance( UnusedPrivateParameter unused) { - return new ImageInfo(); + return new InstallOperation(); } @java.lang.Override @@ -3028,460 +3080,733 @@ public final class UpdateMetadata { getUnknownFields() { return this.unknownFields; } - private ImageInfo( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 10: { - com.google.protobuf.ByteString bs = input.readBytes(); - bitField0_ |= 0x00000001; - board_ = bs; - break; - } - case 18: { - com.google.protobuf.ByteString bs = input.readBytes(); - bitField0_ |= 0x00000002; - key_ = bs; - break; - } - case 26: { - com.google.protobuf.ByteString bs = input.readBytes(); - bitField0_ |= 0x00000004; - channel_ = bs; - break; - } - case 34: { - com.google.protobuf.ByteString bs = input.readBytes(); - bitField0_ |= 0x00000008; - version_ = bs; - break; - } - case 42: { - com.google.protobuf.ByteString bs = input.readBytes(); - bitField0_ |= 0x00000010; - buildChannel_ = bs; - break; - } - case 50: { - com.google.protobuf.ByteString bs = input.readBytes(); - bitField0_ |= 0x00000020; - buildVersion_ = bs; - break; - } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ImageInfo_descriptor; + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_InstallOperation_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ImageInfo_fieldAccessorTable + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_InstallOperation_fieldAccessorTable .ensureFieldAccessorsInitialized( - chromeos_update_engine.UpdateMetadata.ImageInfo.class, chromeos_update_engine.UpdateMetadata.ImageInfo.Builder.class); - } - - private int bitField0_; - public static final int BOARD_FIELD_NUMBER = 1; - private volatile java.lang.Object board_; - /** - * optional string board = 1; - * @return Whether the board field is set. - */ - @java.lang.Override - public boolean hasBoard() { - return ((bitField0_ & 0x00000001) != 0); - } - /** - * optional string board = 1; - * @return The board. - */ - @java.lang.Override - public java.lang.String getBoard() { - java.lang.Object ref = board_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - board_ = s; - } - return s; - } - } - /** - * optional string board = 1; - * @return The bytes for board. - */ - @java.lang.Override - public com.google.protobuf.ByteString - getBoardBytes() { - java.lang.Object ref = board_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - board_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + chromeos_update_engine.UpdateMetadata.InstallOperation.class, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder.class); } - public static final int KEY_FIELD_NUMBER = 2; - private volatile java.lang.Object key_; /** - * optional string key = 2; - * @return Whether the key field is set. - */ - @java.lang.Override - public boolean hasKey() { - return ((bitField0_ & 0x00000002) != 0); - } - /** - * optional string key = 2; - * @return The key. + * Protobuf enum {@code chromeos_update_engine.InstallOperation.Type} */ - @java.lang.Override - public java.lang.String getKey() { - java.lang.Object ref = key_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - key_ = s; - } - return s; - } - } - /** - * optional string key = 2; - * @return The bytes for key. - */ - @java.lang.Override - public com.google.protobuf.ByteString - getKeyBytes() { - java.lang.Object ref = key_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - key_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } + public enum Type + implements com.google.protobuf.ProtocolMessageEnum { + /** + *
+       * Replace destination extents w/ attached data.
+       * 
+ * + * REPLACE = 0; + */ + REPLACE(0), + /** + *
+       * Replace destination extents w/ attached bzipped data.
+       * 
+ * + * REPLACE_BZ = 1; + */ + REPLACE_BZ(1), + /** + *
+       * Move source extents to target extents.
+       * 
+ * + * MOVE = 2 [deprecated = true]; + */ + @java.lang.Deprecated + MOVE(2), + /** + *
+       * The data is a bsdiff binary diff.
+       * 
+ * + * BSDIFF = 3 [deprecated = true]; + */ + @java.lang.Deprecated + BSDIFF(3), + /** + *
+       * On minor version 2 or newer, these operations are supported:
+       * 
+ * + * SOURCE_COPY = 4; + */ + SOURCE_COPY(4), + /** + *
+       * Like BSDIFF, but read from source partition
+       * 
+ * + * SOURCE_BSDIFF = 5; + */ + SOURCE_BSDIFF(5), + /** + *
+       * On minor version 3 or newer and on major version 2 or newer, these
+       * operations are supported:
+       * 
+ * + * REPLACE_XZ = 8; + */ + REPLACE_XZ(8), + /** + *
+       * On minor version 4 or newer, these operations are supported:
+       * 
+ * + * ZERO = 6; + */ + ZERO(6), + /** + *
+       * Discard the destination blocks, reading as undefined.
+       * 
+ * + * DISCARD = 7; + */ + DISCARD(7), + /** + *
+       * Like SOURCE_BSDIFF, but compressed with brotli.
+       * 
+ * + * BROTLI_BSDIFF = 10; + */ + BROTLI_BSDIFF(10), + /** + *
+       * On minor version 5 or newer, these operations are supported:
+       * 
+ * + * PUFFDIFF = 9; + */ + PUFFDIFF(9), + /** + *
+       * On minor version 8 or newer, these operations are supported:
+       * 
+ * + * ZUCCHINI = 11; + */ + ZUCCHINI(11), + /** + *
+       * On minor version 9 or newer, these operations are supported:
+       * 
+ * + * LZ4DIFF_BSDIFF = 12; + */ + LZ4DIFF_BSDIFF(12), + /** + * LZ4DIFF_PUFFDIFF = 13; + */ + LZ4DIFF_PUFFDIFF(13), + ; - public static final int CHANNEL_FIELD_NUMBER = 3; - private volatile java.lang.Object channel_; - /** - * optional string channel = 3; - * @return Whether the channel field is set. - */ - @java.lang.Override - public boolean hasChannel() { - return ((bitField0_ & 0x00000004) != 0); - } - /** - * optional string channel = 3; - * @return The channel. - */ - @java.lang.Override - public java.lang.String getChannel() { - java.lang.Object ref = channel_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - channel_ = s; - } - return s; - } - } - /** - * optional string channel = 3; - * @return The bytes for channel. - */ - @java.lang.Override - public com.google.protobuf.ByteString - getChannelBytes() { - java.lang.Object ref = channel_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - channel_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; + /** + *
+       * Replace destination extents w/ attached data.
+       * 
+ * + * REPLACE = 0; + */ + public static final int REPLACE_VALUE = 0; + /** + *
+       * Replace destination extents w/ attached bzipped data.
+       * 
+ * + * REPLACE_BZ = 1; + */ + public static final int REPLACE_BZ_VALUE = 1; + /** + *
+       * Move source extents to target extents.
+       * 
+ * + * MOVE = 2 [deprecated = true]; + */ + @java.lang.Deprecated public static final int MOVE_VALUE = 2; + /** + *
+       * The data is a bsdiff binary diff.
+       * 
+ * + * BSDIFF = 3 [deprecated = true]; + */ + @java.lang.Deprecated public static final int BSDIFF_VALUE = 3; + /** + *
+       * On minor version 2 or newer, these operations are supported:
+       * 
+ * + * SOURCE_COPY = 4; + */ + public static final int SOURCE_COPY_VALUE = 4; + /** + *
+       * Like BSDIFF, but read from source partition
+       * 
+ * + * SOURCE_BSDIFF = 5; + */ + public static final int SOURCE_BSDIFF_VALUE = 5; + /** + *
+       * On minor version 3 or newer and on major version 2 or newer, these
+       * operations are supported:
+       * 
+ * + * REPLACE_XZ = 8; + */ + public static final int REPLACE_XZ_VALUE = 8; + /** + *
+       * On minor version 4 or newer, these operations are supported:
+       * 
+ * + * ZERO = 6; + */ + public static final int ZERO_VALUE = 6; + /** + *
+       * Discard the destination blocks, reading as undefined.
+       * 
+ * + * DISCARD = 7; + */ + public static final int DISCARD_VALUE = 7; + /** + *
+       * Like SOURCE_BSDIFF, but compressed with brotli.
+       * 
+ * + * BROTLI_BSDIFF = 10; + */ + public static final int BROTLI_BSDIFF_VALUE = 10; + /** + *
+       * On minor version 5 or newer, these operations are supported:
+       * 
+ * + * PUFFDIFF = 9; + */ + public static final int PUFFDIFF_VALUE = 9; + /** + *
+       * On minor version 8 or newer, these operations are supported:
+       * 
+ * + * ZUCCHINI = 11; + */ + public static final int ZUCCHINI_VALUE = 11; + /** + *
+       * On minor version 9 or newer, these operations are supported:
+       * 
+ * + * LZ4DIFF_BSDIFF = 12; + */ + public static final int LZ4DIFF_BSDIFF_VALUE = 12; + /** + * LZ4DIFF_PUFFDIFF = 13; + */ + public static final int LZ4DIFF_PUFFDIFF_VALUE = 13; + + + public final int getNumber() { + return value; } - } - public static final int VERSION_FIELD_NUMBER = 4; - private volatile java.lang.Object version_; - /** - * optional string version = 4; - * @return Whether the version field is set. - */ - @java.lang.Override - public boolean hasVersion() { - return ((bitField0_ & 0x00000008) != 0); + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Type valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Type forNumber(int value) { + switch (value) { + case 0: return REPLACE; + case 1: return REPLACE_BZ; + case 2: return MOVE; + case 3: return BSDIFF; + case 4: return SOURCE_COPY; + case 5: return SOURCE_BSDIFF; + case 8: return REPLACE_XZ; + case 6: return ZERO; + case 7: return DISCARD; + case 10: return BROTLI_BSDIFF; + case 9: return PUFFDIFF; + case 11: return ZUCCHINI; + case 12: return LZ4DIFF_BSDIFF; + case 13: return LZ4DIFF_PUFFDIFF; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Type> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Type findValueByNumber(int number) { + return Type.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.InstallOperation.getDescriptor().getEnumTypes().get(0); + } + + private static final Type[] VALUES = values(); + + public static Type valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private Type(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:chromeos_update_engine.InstallOperation.Type) } + + private int bitField0_; + public static final int TYPE_FIELD_NUMBER = 1; + private int type_ = 0; /** - * optional string version = 4; - * @return The version. + * required .chromeos_update_engine.InstallOperation.Type type = 1; + * @return Whether the type field is set. */ - @java.lang.Override - public java.lang.String getVersion() { - java.lang.Object ref = version_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - version_ = s; - } - return s; - } + @java.lang.Override public boolean hasType() { + return ((bitField0_ & 0x00000001) != 0); } /** - * optional string version = 4; - * @return The bytes for version. + * required .chromeos_update_engine.InstallOperation.Type type = 1; + * @return The type. */ - @java.lang.Override - public com.google.protobuf.ByteString - getVersionBytes() { - java.lang.Object ref = version_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - version_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + @java.lang.Override public chromeos_update_engine.UpdateMetadata.InstallOperation.Type getType() { + chromeos_update_engine.UpdateMetadata.InstallOperation.Type result = chromeos_update_engine.UpdateMetadata.InstallOperation.Type.forNumber(type_); + return result == null ? chromeos_update_engine.UpdateMetadata.InstallOperation.Type.REPLACE : result; } - public static final int BUILD_CHANNEL_FIELD_NUMBER = 5; - private volatile java.lang.Object buildChannel_; + public static final int DATA_OFFSET_FIELD_NUMBER = 2; + private long dataOffset_ = 0L; /** *
-     * If these values aren't present, they should be assumed to match
-     * the equivalent value above. They are normally only different for
-     * special image types such as nplusone images.
+     * Only minor version 6 or newer support 64 bits |data_offset| and
+     * |data_length|, older client will read them as uint32.
+     * The offset into the delta file (after the protobuf)
+     * where the data (if any) is stored
      * 
* - * optional string build_channel = 5; - * @return Whether the buildChannel field is set. + * optional uint64 data_offset = 2; + * @return Whether the dataOffset field is set. */ @java.lang.Override - public boolean hasBuildChannel() { - return ((bitField0_ & 0x00000010) != 0); + public boolean hasDataOffset() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + *
+     * Only minor version 6 or newer support 64 bits |data_offset| and
+     * |data_length|, older client will read them as uint32.
+     * The offset into the delta file (after the protobuf)
+     * where the data (if any) is stored
+     * 
+ * + * optional uint64 data_offset = 2; + * @return The dataOffset. + */ + @java.lang.Override + public long getDataOffset() { + return dataOffset_; } + + public static final int DATA_LENGTH_FIELD_NUMBER = 3; + private long dataLength_ = 0L; /** *
-     * If these values aren't present, they should be assumed to match
-     * the equivalent value above. They are normally only different for
-     * special image types such as nplusone images.
+     * The length of the data in the delta file
      * 
* - * optional string build_channel = 5; - * @return The buildChannel. + * optional uint64 data_length = 3; + * @return Whether the dataLength field is set. */ @java.lang.Override - public java.lang.String getBuildChannel() { - java.lang.Object ref = buildChannel_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - buildChannel_ = s; - } - return s; - } + public boolean hasDataLength() { + return ((bitField0_ & 0x00000004) != 0); } /** *
-     * If these values aren't present, they should be assumed to match
-     * the equivalent value above. They are normally only different for
-     * special image types such as nplusone images.
+     * The length of the data in the delta file
      * 
* - * optional string build_channel = 5; - * @return The bytes for buildChannel. + * optional uint64 data_length = 3; + * @return The dataLength. */ @java.lang.Override - public com.google.protobuf.ByteString - getBuildChannelBytes() { - java.lang.Object ref = buildChannel_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - buildChannel_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + public long getDataLength() { + return dataLength_; } - public static final int BUILD_VERSION_FIELD_NUMBER = 6; - private volatile java.lang.Object buildVersion_; + public static final int SRC_EXTENTS_FIELD_NUMBER = 4; + @SuppressWarnings("serial") + private java.util.List srcExtents_; /** - * optional string build_version = 6; - * @return Whether the buildVersion field is set. + *
+     * Ordered list of extents that are read from (if any) and written to.
+     * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ @java.lang.Override - public boolean hasBuildVersion() { - return ((bitField0_ & 0x00000020) != 0); + public java.util.List getSrcExtentsList() { + return srcExtents_; } /** - * optional string build_version = 6; - * @return The buildVersion. + *
+     * Ordered list of extents that are read from (if any) and written to.
+     * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ @java.lang.Override - public java.lang.String getBuildVersion() { - java.lang.Object ref = buildVersion_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - buildVersion_ = s; - } - return s; - } + public java.util.List + getSrcExtentsOrBuilderList() { + return srcExtents_; } /** - * optional string build_version = 6; - * @return The bytes for buildVersion. + *
+     * Ordered list of extents that are read from (if any) and written to.
+     * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ @java.lang.Override - public com.google.protobuf.ByteString - getBuildVersionBytes() { - java.lang.Object ref = buildVersion_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - buildVersion_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + public int getSrcExtentsCount() { + return srcExtents_.size(); } - - private byte memoizedIsInitialized = -1; + /** + *
+     * Ordered list of extents that are read from (if any) and written to.
+     * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; + */ @java.lang.Override - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; + public chromeos_update_engine.UpdateMetadata.Extent getSrcExtents(int index) { + return srcExtents_.get(index); } - + /** + *
+     * Ordered list of extents that are read from (if any) and written to.
+     * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; + */ @java.lang.Override - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (((bitField0_ & 0x00000001) != 0)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, board_); - } - if (((bitField0_ & 0x00000002) != 0)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, key_); - } - if (((bitField0_ & 0x00000004) != 0)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 3, channel_); - } - if (((bitField0_ & 0x00000008) != 0)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 4, version_); - } - if (((bitField0_ & 0x00000010) != 0)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 5, buildChannel_); - } - if (((bitField0_ & 0x00000020) != 0)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 6, buildVersion_); - } - unknownFields.writeTo(output); + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getSrcExtentsOrBuilder( + int index) { + return srcExtents_.get(index); } - @java.lang.Override - public int getSerializedSize() { - int size = memoizedSize; + public static final int SRC_LENGTH_FIELD_NUMBER = 5; + private long srcLength_ = 0L; + /** + *
+     * Byte length of src, equal to the number of blocks in src_extents *
+     * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
+     * pass that external program the number of bytes to read from the blocks we
+     * pass it.  This is not used in any other operation.
+     * 
+ * + * optional uint64 src_length = 5; + * @return Whether the srcLength field is set. + */ + @java.lang.Override + public boolean hasSrcLength() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + *
+     * Byte length of src, equal to the number of blocks in src_extents *
+     * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
+     * pass that external program the number of bytes to read from the blocks we
+     * pass it.  This is not used in any other operation.
+     * 
+ * + * optional uint64 src_length = 5; + * @return The srcLength. + */ + @java.lang.Override + public long getSrcLength() { + return srcLength_; + } + + public static final int DST_EXTENTS_FIELD_NUMBER = 6; + @SuppressWarnings("serial") + private java.util.List dstExtents_; + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; + */ + @java.lang.Override + public java.util.List getDstExtentsList() { + return dstExtents_; + } + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; + */ + @java.lang.Override + public java.util.List + getDstExtentsOrBuilderList() { + return dstExtents_; + } + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; + */ + @java.lang.Override + public int getDstExtentsCount() { + return dstExtents_.size(); + } + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.Extent getDstExtents(int index) { + return dstExtents_.get(index); + } + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getDstExtentsOrBuilder( + int index) { + return dstExtents_.get(index); + } + + public static final int DST_LENGTH_FIELD_NUMBER = 7; + private long dstLength_ = 0L; + /** + *
+     * Byte length of dst, equal to the number of blocks in dst_extents *
+     * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
+     * operation.
+     * 
+ * + * optional uint64 dst_length = 7; + * @return Whether the dstLength field is set. + */ + @java.lang.Override + public boolean hasDstLength() { + return ((bitField0_ & 0x00000010) != 0); + } + /** + *
+     * Byte length of dst, equal to the number of blocks in dst_extents *
+     * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
+     * operation.
+     * 
+ * + * optional uint64 dst_length = 7; + * @return The dstLength. + */ + @java.lang.Override + public long getDstLength() { + return dstLength_; + } + + public static final int DATA_SHA256_HASH_FIELD_NUMBER = 8; + private com.google.protobuf.ByteString dataSha256Hash_ = com.google.protobuf.ByteString.EMPTY; + /** + *
+     * Optional SHA 256 hash of the blob associated with this operation.
+     * This is used as a primary validation for http-based downloads and
+     * as a defense-in-depth validation for https-based downloads. If
+     * the operation doesn't refer to any blob, this field will have
+     * zero bytes.
+     * 
+ * + * optional bytes data_sha256_hash = 8; + * @return Whether the dataSha256Hash field is set. + */ + @java.lang.Override + public boolean hasDataSha256Hash() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + *
+     * Optional SHA 256 hash of the blob associated with this operation.
+     * This is used as a primary validation for http-based downloads and
+     * as a defense-in-depth validation for https-based downloads. If
+     * the operation doesn't refer to any blob, this field will have
+     * zero bytes.
+     * 
+ * + * optional bytes data_sha256_hash = 8; + * @return The dataSha256Hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getDataSha256Hash() { + return dataSha256Hash_; + } + + public static final int SRC_SHA256_HASH_FIELD_NUMBER = 9; + private com.google.protobuf.ByteString srcSha256Hash_ = com.google.protobuf.ByteString.EMPTY; + /** + *
+     * Indicates the SHA 256 hash of the source data referenced in src_extents at
+     * the time of applying the operation. If present, the update_engine daemon
+     * MUST read and verify the source data before applying the operation.
+     * 
+ * + * optional bytes src_sha256_hash = 9; + * @return Whether the srcSha256Hash field is set. + */ + @java.lang.Override + public boolean hasSrcSha256Hash() { + return ((bitField0_ & 0x00000040) != 0); + } + /** + *
+     * Indicates the SHA 256 hash of the source data referenced in src_extents at
+     * the time of applying the operation. If present, the update_engine daemon
+     * MUST read and verify the source data before applying the operation.
+     * 
+ * + * optional bytes src_sha256_hash = 9; + * @return The srcSha256Hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSrcSha256Hash() { + return srcSha256Hash_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (!hasType()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeEnum(1, type_); + } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeUInt64(2, dataOffset_); + } + if (((bitField0_ & 0x00000004) != 0)) { + output.writeUInt64(3, dataLength_); + } + for (int i = 0; i < srcExtents_.size(); i++) { + output.writeMessage(4, srcExtents_.get(i)); + } + if (((bitField0_ & 0x00000008) != 0)) { + output.writeUInt64(5, srcLength_); + } + for (int i = 0; i < dstExtents_.size(); i++) { + output.writeMessage(6, dstExtents_.get(i)); + } + if (((bitField0_ & 0x00000010) != 0)) { + output.writeUInt64(7, dstLength_); + } + if (((bitField0_ & 0x00000020) != 0)) { + output.writeBytes(8, dataSha256Hash_); + } + if (((bitField0_ & 0x00000040) != 0)) { + output.writeBytes(9, srcSha256Hash_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; if (size != -1) return size; size = 0; if (((bitField0_ & 0x00000001) != 0)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, board_); + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, type_); } if (((bitField0_ & 0x00000002) != 0)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, key_); + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(2, dataOffset_); } if (((bitField0_ & 0x00000004) != 0)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, channel_); + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(3, dataLength_); + } + for (int i = 0; i < srcExtents_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, srcExtents_.get(i)); } if (((bitField0_ & 0x00000008) != 0)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, version_); + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(5, srcLength_); + } + for (int i = 0; i < dstExtents_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, dstExtents_.get(i)); } if (((bitField0_ & 0x00000010) != 0)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, buildChannel_); + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(7, dstLength_); } if (((bitField0_ & 0x00000020) != 0)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, buildVersion_); + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(8, dataSha256Hash_); + } + if (((bitField0_ & 0x00000040) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(9, srcSha256Hash_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -3491,42 +3816,50 @@ public final class UpdateMetadata { if (obj == this) { return true; } - if (!(obj instanceof chromeos_update_engine.UpdateMetadata.ImageInfo)) { + if (!(obj instanceof chromeos_update_engine.UpdateMetadata.InstallOperation)) { return super.equals(obj); } - chromeos_update_engine.UpdateMetadata.ImageInfo other = (chromeos_update_engine.UpdateMetadata.ImageInfo) obj; + chromeos_update_engine.UpdateMetadata.InstallOperation other = (chromeos_update_engine.UpdateMetadata.InstallOperation) obj; - if (hasBoard() != other.hasBoard()) return false; - if (hasBoard()) { - if (!getBoard() - .equals(other.getBoard())) return false; + if (hasType() != other.hasType()) return false; + if (hasType()) { + if (type_ != other.type_) return false; } - if (hasKey() != other.hasKey()) return false; - if (hasKey()) { - if (!getKey() - .equals(other.getKey())) return false; + if (hasDataOffset() != other.hasDataOffset()) return false; + if (hasDataOffset()) { + if (getDataOffset() + != other.getDataOffset()) return false; } - if (hasChannel() != other.hasChannel()) return false; - if (hasChannel()) { - if (!getChannel() - .equals(other.getChannel())) return false; + if (hasDataLength() != other.hasDataLength()) return false; + if (hasDataLength()) { + if (getDataLength() + != other.getDataLength()) return false; } - if (hasVersion() != other.hasVersion()) return false; - if (hasVersion()) { - if (!getVersion() - .equals(other.getVersion())) return false; + if (!getSrcExtentsList() + .equals(other.getSrcExtentsList())) return false; + if (hasSrcLength() != other.hasSrcLength()) return false; + if (hasSrcLength()) { + if (getSrcLength() + != other.getSrcLength()) return false; + } + if (!getDstExtentsList() + .equals(other.getDstExtentsList())) return false; + if (hasDstLength() != other.hasDstLength()) return false; + if (hasDstLength()) { + if (getDstLength() + != other.getDstLength()) return false; } - if (hasBuildChannel() != other.hasBuildChannel()) return false; - if (hasBuildChannel()) { - if (!getBuildChannel() - .equals(other.getBuildChannel())) return false; + if (hasDataSha256Hash() != other.hasDataSha256Hash()) return false; + if (hasDataSha256Hash()) { + if (!getDataSha256Hash() + .equals(other.getDataSha256Hash())) return false; } - if (hasBuildVersion() != other.hasBuildVersion()) return false; - if (hasBuildVersion()) { - if (!getBuildVersion() - .equals(other.getBuildVersion())) return false; + if (hasSrcSha256Hash() != other.hasSrcSha256Hash()) return false; + if (hasSrcSha256Hash()) { + if (!getSrcSha256Hash() + .equals(other.getSrcSha256Hash())) return false; } - if (!unknownFields.equals(other.unknownFields)) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -3537,98 +3870,114 @@ public final class UpdateMetadata { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (hasBoard()) { - hash = (37 * hash) + BOARD_FIELD_NUMBER; - hash = (53 * hash) + getBoard().hashCode(); + if (hasType()) { + hash = (37 * hash) + TYPE_FIELD_NUMBER; + hash = (53 * hash) + type_; + } + if (hasDataOffset()) { + hash = (37 * hash) + DATA_OFFSET_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getDataOffset()); + } + if (hasDataLength()) { + hash = (37 * hash) + DATA_LENGTH_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getDataLength()); + } + if (getSrcExtentsCount() > 0) { + hash = (37 * hash) + SRC_EXTENTS_FIELD_NUMBER; + hash = (53 * hash) + getSrcExtentsList().hashCode(); } - if (hasKey()) { - hash = (37 * hash) + KEY_FIELD_NUMBER; - hash = (53 * hash) + getKey().hashCode(); + if (hasSrcLength()) { + hash = (37 * hash) + SRC_LENGTH_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getSrcLength()); } - if (hasChannel()) { - hash = (37 * hash) + CHANNEL_FIELD_NUMBER; - hash = (53 * hash) + getChannel().hashCode(); + if (getDstExtentsCount() > 0) { + hash = (37 * hash) + DST_EXTENTS_FIELD_NUMBER; + hash = (53 * hash) + getDstExtentsList().hashCode(); } - if (hasVersion()) { - hash = (37 * hash) + VERSION_FIELD_NUMBER; - hash = (53 * hash) + getVersion().hashCode(); + if (hasDstLength()) { + hash = (37 * hash) + DST_LENGTH_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getDstLength()); } - if (hasBuildChannel()) { - hash = (37 * hash) + BUILD_CHANNEL_FIELD_NUMBER; - hash = (53 * hash) + getBuildChannel().hashCode(); + if (hasDataSha256Hash()) { + hash = (37 * hash) + DATA_SHA256_HASH_FIELD_NUMBER; + hash = (53 * hash) + getDataSha256Hash().hashCode(); } - if (hasBuildVersion()) { - hash = (37 * hash) + BUILD_VERSION_FIELD_NUMBER; - hash = (53 * hash) + getBuildVersion().hashCode(); + if (hasSrcSha256Hash()) { + hash = (37 * hash) + SRC_SHA256_HASH_FIELD_NUMBER; + hash = (53 * hash) + getSrcSha256Hash().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseFrom( + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseFrom( + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseFrom( + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseFrom( + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseFrom(byte[] data) + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseFrom( + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseFrom(java.io.InputStream input) + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseFrom( + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseDelimitedFrom(java.io.InputStream input) + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseDelimitedFrom( + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseFrom( + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.ImageInfo parseFrom( + public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -3641,7 +3990,7 @@ public final class UpdateMetadata { public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.ImageInfo prototype) { + public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.InstallOperation prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -3657,80 +4006,77 @@ public final class UpdateMetadata { return builder; } /** - *
-     * Describe an image we are based on in a human friendly way.
-     * Examples:
-     *   dev-channel, x86-alex, 1.2.3, mp-v3
-     *   nplusone-channel, x86-alex, 1.2.4, mp-v3, dev-channel, 1.2.3
-     * All fields will be set, if this message is present.
-     * 
- * - * Protobuf type {@code chromeos_update_engine.ImageInfo} + * Protobuf type {@code chromeos_update_engine.InstallOperation} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:chromeos_update_engine.ImageInfo) - chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder { + // @@protoc_insertion_point(builder_implements:chromeos_update_engine.InstallOperation) + chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ImageInfo_descriptor; + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_InstallOperation_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ImageInfo_fieldAccessorTable + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_InstallOperation_fieldAccessorTable .ensureFieldAccessorsInitialized( - chromeos_update_engine.UpdateMetadata.ImageInfo.class, chromeos_update_engine.UpdateMetadata.ImageInfo.Builder.class); + chromeos_update_engine.UpdateMetadata.InstallOperation.class, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder.class); } - // Construct using chromeos_update_engine.UpdateMetadata.ImageInfo.newBuilder() + // Construct using chromeos_update_engine.UpdateMetadata.InstallOperation.newBuilder() private Builder() { - maybeForceBuilderInitialization(); + } private Builder( com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } + } @java.lang.Override public Builder clear() { super.clear(); - board_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - key_ = ""; - bitField0_ = (bitField0_ & ~0x00000002); - channel_ = ""; - bitField0_ = (bitField0_ & ~0x00000004); - version_ = ""; + bitField0_ = 0; + type_ = 0; + dataOffset_ = 0L; + dataLength_ = 0L; + if (srcExtentsBuilder_ == null) { + srcExtents_ = java.util.Collections.emptyList(); + } else { + srcExtents_ = null; + srcExtentsBuilder_.clear(); + } bitField0_ = (bitField0_ & ~0x00000008); - buildChannel_ = ""; - bitField0_ = (bitField0_ & ~0x00000010); - buildVersion_ = ""; + srcLength_ = 0L; + if (dstExtentsBuilder_ == null) { + dstExtents_ = java.util.Collections.emptyList(); + } else { + dstExtents_ = null; + dstExtentsBuilder_.clear(); + } bitField0_ = (bitField0_ & ~0x00000020); + dstLength_ = 0L; + dataSha256Hash_ = com.google.protobuf.ByteString.EMPTY; + srcSha256Hash_ = com.google.protobuf.ByteString.EMPTY; return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ImageInfo_descriptor; + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_InstallOperation_descriptor; } @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ImageInfo getDefaultInstanceForType() { - return chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance(); + public chromeos_update_engine.UpdateMetadata.InstallOperation getDefaultInstanceForType() { + return chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance(); } @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ImageInfo build() { - chromeos_update_engine.UpdateMetadata.ImageInfo result = buildPartial(); + public chromeos_update_engine.UpdateMetadata.InstallOperation build() { + chromeos_update_engine.UpdateMetadata.InstallOperation result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -3738,37 +4084,67 @@ public final class UpdateMetadata { } @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ImageInfo buildPartial() { - chromeos_update_engine.UpdateMetadata.ImageInfo result = new chromeos_update_engine.UpdateMetadata.ImageInfo(this); + public chromeos_update_engine.UpdateMetadata.InstallOperation buildPartial() { + chromeos_update_engine.UpdateMetadata.InstallOperation result = new chromeos_update_engine.UpdateMetadata.InstallOperation(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(chromeos_update_engine.UpdateMetadata.InstallOperation result) { + if (srcExtentsBuilder_ == null) { + if (((bitField0_ & 0x00000008) != 0)) { + srcExtents_ = java.util.Collections.unmodifiableList(srcExtents_); + bitField0_ = (bitField0_ & ~0x00000008); + } + result.srcExtents_ = srcExtents_; + } else { + result.srcExtents_ = srcExtentsBuilder_.build(); + } + if (dstExtentsBuilder_ == null) { + if (((bitField0_ & 0x00000020) != 0)) { + dstExtents_ = java.util.Collections.unmodifiableList(dstExtents_); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.dstExtents_ = dstExtents_; + } else { + result.dstExtents_ = dstExtentsBuilder_.build(); + } + } + + private void buildPartial0(chromeos_update_engine.UpdateMetadata.InstallOperation result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { + result.type_ = type_; to_bitField0_ |= 0x00000001; } - result.board_ = board_; if (((from_bitField0_ & 0x00000002) != 0)) { + result.dataOffset_ = dataOffset_; to_bitField0_ |= 0x00000002; } - result.key_ = key_; if (((from_bitField0_ & 0x00000004) != 0)) { + result.dataLength_ = dataLength_; to_bitField0_ |= 0x00000004; } - result.channel_ = channel_; - if (((from_bitField0_ & 0x00000008) != 0)) { + if (((from_bitField0_ & 0x00000010) != 0)) { + result.srcLength_ = srcLength_; to_bitField0_ |= 0x00000008; } - result.version_ = version_; - if (((from_bitField0_ & 0x00000010) != 0)) { + if (((from_bitField0_ & 0x00000040) != 0)) { + result.dstLength_ = dstLength_; to_bitField0_ |= 0x00000010; } - result.buildChannel_ = buildChannel_; - if (((from_bitField0_ & 0x00000020) != 0)) { + if (((from_bitField0_ & 0x00000080) != 0)) { + result.dataSha256Hash_ = dataSha256Hash_; to_bitField0_ |= 0x00000020; } - result.buildVersion_ = buildVersion_; - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; + if (((from_bitField0_ & 0x00000100) != 0)) { + result.srcSha256Hash_ = srcSha256Hash_; + to_bitField0_ |= 0x00000040; + } + result.bitField0_ |= to_bitField0_; } @java.lang.Override @@ -3805,53 +4181,99 @@ public final class UpdateMetadata { } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof chromeos_update_engine.UpdateMetadata.ImageInfo) { - return mergeFrom((chromeos_update_engine.UpdateMetadata.ImageInfo)other); + if (other instanceof chromeos_update_engine.UpdateMetadata.InstallOperation) { + return mergeFrom((chromeos_update_engine.UpdateMetadata.InstallOperation)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.ImageInfo other) { - if (other == chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance()) return this; - if (other.hasBoard()) { - bitField0_ |= 0x00000001; - board_ = other.board_; - onChanged(); + public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.InstallOperation other) { + if (other == chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance()) return this; + if (other.hasType()) { + setType(other.getType()); } - if (other.hasKey()) { - bitField0_ |= 0x00000002; - key_ = other.key_; - onChanged(); + if (other.hasDataOffset()) { + setDataOffset(other.getDataOffset()); } - if (other.hasChannel()) { - bitField0_ |= 0x00000004; - channel_ = other.channel_; - onChanged(); + if (other.hasDataLength()) { + setDataLength(other.getDataLength()); } - if (other.hasVersion()) { - bitField0_ |= 0x00000008; - version_ = other.version_; - onChanged(); + if (srcExtentsBuilder_ == null) { + if (!other.srcExtents_.isEmpty()) { + if (srcExtents_.isEmpty()) { + srcExtents_ = other.srcExtents_; + bitField0_ = (bitField0_ & ~0x00000008); + } else { + ensureSrcExtentsIsMutable(); + srcExtents_.addAll(other.srcExtents_); + } + onChanged(); + } + } else { + if (!other.srcExtents_.isEmpty()) { + if (srcExtentsBuilder_.isEmpty()) { + srcExtentsBuilder_.dispose(); + srcExtentsBuilder_ = null; + srcExtents_ = other.srcExtents_; + bitField0_ = (bitField0_ & ~0x00000008); + srcExtentsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getSrcExtentsFieldBuilder() : null; + } else { + srcExtentsBuilder_.addAllMessages(other.srcExtents_); + } + } } - if (other.hasBuildChannel()) { - bitField0_ |= 0x00000010; - buildChannel_ = other.buildChannel_; - onChanged(); + if (other.hasSrcLength()) { + setSrcLength(other.getSrcLength()); } - if (other.hasBuildVersion()) { - bitField0_ |= 0x00000020; - buildVersion_ = other.buildVersion_; - onChanged(); + if (dstExtentsBuilder_ == null) { + if (!other.dstExtents_.isEmpty()) { + if (dstExtents_.isEmpty()) { + dstExtents_ = other.dstExtents_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensureDstExtentsIsMutable(); + dstExtents_.addAll(other.dstExtents_); + } + onChanged(); + } + } else { + if (!other.dstExtents_.isEmpty()) { + if (dstExtentsBuilder_.isEmpty()) { + dstExtentsBuilder_.dispose(); + dstExtentsBuilder_ = null; + dstExtents_ = other.dstExtents_; + bitField0_ = (bitField0_ & ~0x00000020); + dstExtentsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getDstExtentsFieldBuilder() : null; + } else { + dstExtentsBuilder_.addAllMessages(other.dstExtents_); + } + } + } + if (other.hasDstLength()) { + setDstLength(other.getDstLength()); + } + if (other.hasDataSha256Hash()) { + setDataSha256Hash(other.getDataSha256Hash()); } - this.mergeUnknownFields(other.unknownFields); + if (other.hasSrcSha256Hash()) { + setSrcSha256Hash(other.getSrcSha256Hash()); + } + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @java.lang.Override public final boolean isInitialized() { + if (!hasType()) { + return false; + } return true; } @@ -3860,1564 +4282,1514 @@ public final class UpdateMetadata { com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - chromeos_update_engine.UpdateMetadata.ImageInfo parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (chromeos_update_engine.UpdateMetadata.ImageInfo) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); } - return this; - } - private int bitField0_; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + int tmpRaw = input.readEnum(); + chromeos_update_engine.UpdateMetadata.InstallOperation.Type tmpValue = + chromeos_update_engine.UpdateMetadata.InstallOperation.Type.forNumber(tmpRaw); + if (tmpValue == null) { + mergeUnknownVarintField(1, tmpRaw); + } else { + type_ = tmpRaw; + bitField0_ |= 0x00000001; + } + break; + } // case 8 + case 16: { + dataOffset_ = input.readUInt64(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 24: { + dataLength_ = input.readUInt64(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 34: { + chromeos_update_engine.UpdateMetadata.Extent m = + input.readMessage( + chromeos_update_engine.UpdateMetadata.Extent.PARSER, + extensionRegistry); + if (srcExtentsBuilder_ == null) { + ensureSrcExtentsIsMutable(); + srcExtents_.add(m); + } else { + srcExtentsBuilder_.addMessage(m); + } + break; + } // case 34 + case 40: { + srcLength_ = input.readUInt64(); + bitField0_ |= 0x00000010; + break; + } // case 40 + case 50: { + chromeos_update_engine.UpdateMetadata.Extent m = + input.readMessage( + chromeos_update_engine.UpdateMetadata.Extent.PARSER, + extensionRegistry); + if (dstExtentsBuilder_ == null) { + ensureDstExtentsIsMutable(); + dstExtents_.add(m); + } else { + dstExtentsBuilder_.addMessage(m); + } + break; + } // case 50 + case 56: { + dstLength_ = input.readUInt64(); + bitField0_ |= 0x00000040; + break; + } // case 56 + case 66: { + dataSha256Hash_ = input.readBytes(); + bitField0_ |= 0x00000080; + break; + } // case 66 + case 74: { + srcSha256Hash_ = input.readBytes(); + bitField0_ |= 0x00000100; + break; + } // case 74 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; - private java.lang.Object board_ = ""; + private int type_ = 0; /** - * optional string board = 1; - * @return Whether the board field is set. + * required .chromeos_update_engine.InstallOperation.Type type = 1; + * @return Whether the type field is set. */ - public boolean hasBoard() { + @java.lang.Override public boolean hasType() { return ((bitField0_ & 0x00000001) != 0); } /** - * optional string board = 1; - * @return The board. - */ - public java.lang.String getBoard() { - java.lang.Object ref = board_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - board_ = s; - } - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * optional string board = 1; - * @return The bytes for board. + * required .chromeos_update_engine.InstallOperation.Type type = 1; + * @return The type. */ - public com.google.protobuf.ByteString - getBoardBytes() { - java.lang.Object ref = board_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - board_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.InstallOperation.Type getType() { + chromeos_update_engine.UpdateMetadata.InstallOperation.Type result = chromeos_update_engine.UpdateMetadata.InstallOperation.Type.forNumber(type_); + return result == null ? chromeos_update_engine.UpdateMetadata.InstallOperation.Type.REPLACE : result; } /** - * optional string board = 1; - * @param value The board to set. + * required .chromeos_update_engine.InstallOperation.Type type = 1; + * @param value The type to set. * @return This builder for chaining. */ - public Builder setBoard( - java.lang.String value) { + public Builder setType(chromeos_update_engine.UpdateMetadata.InstallOperation.Type value) { if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - board_ = value; + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + type_ = value.getNumber(); onChanged(); return this; } /** - * optional string board = 1; + * required .chromeos_update_engine.InstallOperation.Type type = 1; * @return This builder for chaining. */ - public Builder clearBoard() { + public Builder clearType() { bitField0_ = (bitField0_ & ~0x00000001); - board_ = getDefaultInstance().getBoard(); - onChanged(); - return this; - } - /** - * optional string board = 1; - * @param value The bytes for board to set. - * @return This builder for chaining. - */ - public Builder setBoardBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - board_ = value; + type_ = 0; onChanged(); return this; } - private java.lang.Object key_ = ""; + private long dataOffset_ ; /** - * optional string key = 2; - * @return Whether the key field is set. + *
+       * Only minor version 6 or newer support 64 bits |data_offset| and
+       * |data_length|, older client will read them as uint32.
+       * The offset into the delta file (after the protobuf)
+       * where the data (if any) is stored
+       * 
+ * + * optional uint64 data_offset = 2; + * @return Whether the dataOffset field is set. */ - public boolean hasKey() { + @java.lang.Override + public boolean hasDataOffset() { return ((bitField0_ & 0x00000002) != 0); } /** - * optional string key = 2; - * @return The key. - */ - public java.lang.String getKey() { - java.lang.Object ref = key_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - key_ = s; - } - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * optional string key = 2; - * @return The bytes for key. + *
+       * Only minor version 6 or newer support 64 bits |data_offset| and
+       * |data_length|, older client will read them as uint32.
+       * The offset into the delta file (after the protobuf)
+       * where the data (if any) is stored
+       * 
+ * + * optional uint64 data_offset = 2; + * @return The dataOffset. */ - public com.google.protobuf.ByteString - getKeyBytes() { - java.lang.Object ref = key_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - key_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + @java.lang.Override + public long getDataOffset() { + return dataOffset_; } /** - * optional string key = 2; - * @param value The key to set. + *
+       * Only minor version 6 or newer support 64 bits |data_offset| and
+       * |data_length|, older client will read them as uint32.
+       * The offset into the delta file (after the protobuf)
+       * where the data (if any) is stored
+       * 
+ * + * optional uint64 data_offset = 2; + * @param value The dataOffset to set. * @return This builder for chaining. */ - public Builder setKey( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - key_ = value; + public Builder setDataOffset(long value) { + + dataOffset_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } /** - * optional string key = 2; + *
+       * Only minor version 6 or newer support 64 bits |data_offset| and
+       * |data_length|, older client will read them as uint32.
+       * The offset into the delta file (after the protobuf)
+       * where the data (if any) is stored
+       * 
+ * + * optional uint64 data_offset = 2; * @return This builder for chaining. */ - public Builder clearKey() { + public Builder clearDataOffset() { bitField0_ = (bitField0_ & ~0x00000002); - key_ = getDefaultInstance().getKey(); - onChanged(); - return this; - } - /** - * optional string key = 2; - * @param value The bytes for key to set. - * @return This builder for chaining. - */ - public Builder setKeyBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - key_ = value; + dataOffset_ = 0L; onChanged(); return this; } - private java.lang.Object channel_ = ""; + private long dataLength_ ; /** - * optional string channel = 3; - * @return Whether the channel field is set. + *
+       * The length of the data in the delta file
+       * 
+ * + * optional uint64 data_length = 3; + * @return Whether the dataLength field is set. */ - public boolean hasChannel() { + @java.lang.Override + public boolean hasDataLength() { return ((bitField0_ & 0x00000004) != 0); } /** - * optional string channel = 3; - * @return The channel. - */ - public java.lang.String getChannel() { - java.lang.Object ref = channel_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - channel_ = s; - } - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * optional string channel = 3; - * @return The bytes for channel. + *
+       * The length of the data in the delta file
+       * 
+ * + * optional uint64 data_length = 3; + * @return The dataLength. */ - public com.google.protobuf.ByteString - getChannelBytes() { - java.lang.Object ref = channel_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - channel_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + @java.lang.Override + public long getDataLength() { + return dataLength_; } /** - * optional string channel = 3; - * @param value The channel to set. + *
+       * The length of the data in the delta file
+       * 
+ * + * optional uint64 data_length = 3; + * @param value The dataLength to set. * @return This builder for chaining. */ - public Builder setChannel( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - channel_ = value; + public Builder setDataLength(long value) { + + dataLength_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } /** - * optional string channel = 3; + *
+       * The length of the data in the delta file
+       * 
+ * + * optional uint64 data_length = 3; * @return This builder for chaining. */ - public Builder clearChannel() { + public Builder clearDataLength() { bitField0_ = (bitField0_ & ~0x00000004); - channel_ = getDefaultInstance().getChannel(); + dataLength_ = 0L; onChanged(); return this; } - /** - * optional string channel = 3; - * @param value The bytes for channel to set. - * @return This builder for chaining. - */ - public Builder setChannelBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - channel_ = value; - onChanged(); - return this; + + private java.util.List srcExtents_ = + java.util.Collections.emptyList(); + private void ensureSrcExtentsIsMutable() { + if (!((bitField0_ & 0x00000008) != 0)) { + srcExtents_ = new java.util.ArrayList(srcExtents_); + bitField0_ |= 0x00000008; + } } - private java.lang.Object version_ = ""; + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> srcExtentsBuilder_; + /** - * optional string version = 4; - * @return Whether the version field is set. + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public boolean hasVersion() { - return ((bitField0_ & 0x00000008) != 0); + public java.util.List getSrcExtentsList() { + if (srcExtentsBuilder_ == null) { + return java.util.Collections.unmodifiableList(srcExtents_); + } else { + return srcExtentsBuilder_.getMessageList(); + } } /** - * optional string version = 4; - * @return The version. + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public java.lang.String getVersion() { - java.lang.Object ref = version_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - version_ = s; - } - return s; + public int getSrcExtentsCount() { + if (srcExtentsBuilder_ == null) { + return srcExtents_.size(); } else { - return (java.lang.String) ref; + return srcExtentsBuilder_.getCount(); } } /** - * optional string version = 4; - * @return The bytes for version. + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public com.google.protobuf.ByteString - getVersionBytes() { - java.lang.Object ref = version_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - version_ = b; - return b; + public chromeos_update_engine.UpdateMetadata.Extent getSrcExtents(int index) { + if (srcExtentsBuilder_ == null) { + return srcExtents_.get(index); } else { - return (com.google.protobuf.ByteString) ref; + return srcExtentsBuilder_.getMessage(index); } } /** - * optional string version = 4; - * @param value The version to set. - * @return This builder for chaining. + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public Builder setVersion( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000008; - version_ = value; - onChanged(); + public Builder setSrcExtents( + int index, chromeos_update_engine.UpdateMetadata.Extent value) { + if (srcExtentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSrcExtentsIsMutable(); + srcExtents_.set(index, value); + onChanged(); + } else { + srcExtentsBuilder_.setMessage(index, value); + } return this; } /** - * optional string version = 4; - * @return This builder for chaining. + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public Builder clearVersion() { - bitField0_ = (bitField0_ & ~0x00000008); - version_ = getDefaultInstance().getVersion(); - onChanged(); + public Builder setSrcExtents( + int index, chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (srcExtentsBuilder_ == null) { + ensureSrcExtentsIsMutable(); + srcExtents_.set(index, builderForValue.build()); + onChanged(); + } else { + srcExtentsBuilder_.setMessage(index, builderForValue.build()); + } return this; } /** - * optional string version = 4; - * @param value The bytes for version to set. - * @return This builder for chaining. + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public Builder setVersionBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000008; - version_ = value; - onChanged(); + public Builder addSrcExtents(chromeos_update_engine.UpdateMetadata.Extent value) { + if (srcExtentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSrcExtentsIsMutable(); + srcExtents_.add(value); + onChanged(); + } else { + srcExtentsBuilder_.addMessage(value); + } return this; } - - private java.lang.Object buildChannel_ = ""; /** *
-       * If these values aren't present, they should be assumed to match
-       * the equivalent value above. They are normally only different for
-       * special image types such as nplusone images.
+       * Ordered list of extents that are read from (if any) and written to.
        * 
* - * optional string build_channel = 5; - * @return Whether the buildChannel field is set. + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public boolean hasBuildChannel() { - return ((bitField0_ & 0x00000010) != 0); + public Builder addSrcExtents( + int index, chromeos_update_engine.UpdateMetadata.Extent value) { + if (srcExtentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSrcExtentsIsMutable(); + srcExtents_.add(index, value); + onChanged(); + } else { + srcExtentsBuilder_.addMessage(index, value); + } + return this; } /** *
-       * If these values aren't present, they should be assumed to match
-       * the equivalent value above. They are normally only different for
-       * special image types such as nplusone images.
+       * Ordered list of extents that are read from (if any) and written to.
        * 
* - * optional string build_channel = 5; - * @return The buildChannel. + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public java.lang.String getBuildChannel() { - java.lang.Object ref = buildChannel_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - buildChannel_ = s; - } - return s; + public Builder addSrcExtents( + chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (srcExtentsBuilder_ == null) { + ensureSrcExtentsIsMutable(); + srcExtents_.add(builderForValue.build()); + onChanged(); } else { - return (java.lang.String) ref; + srcExtentsBuilder_.addMessage(builderForValue.build()); } + return this; } /** *
-       * If these values aren't present, they should be assumed to match
-       * the equivalent value above. They are normally only different for
-       * special image types such as nplusone images.
+       * Ordered list of extents that are read from (if any) and written to.
        * 
* - * optional string build_channel = 5; - * @return The bytes for buildChannel. + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public com.google.protobuf.ByteString - getBuildChannelBytes() { - java.lang.Object ref = buildChannel_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - buildChannel_ = b; - return b; + public Builder addSrcExtents( + int index, chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (srcExtentsBuilder_ == null) { + ensureSrcExtentsIsMutable(); + srcExtents_.add(index, builderForValue.build()); + onChanged(); } else { - return (com.google.protobuf.ByteString) ref; + srcExtentsBuilder_.addMessage(index, builderForValue.build()); } + return this; } /** *
-       * If these values aren't present, they should be assumed to match
-       * the equivalent value above. They are normally only different for
-       * special image types such as nplusone images.
+       * Ordered list of extents that are read from (if any) and written to.
        * 
* - * optional string build_channel = 5; - * @param value The buildChannel to set. - * @return This builder for chaining. + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public Builder setBuildChannel( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000010; - buildChannel_ = value; - onChanged(); + public Builder addAllSrcExtents( + java.lang.Iterable values) { + if (srcExtentsBuilder_ == null) { + ensureSrcExtentsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, srcExtents_); + onChanged(); + } else { + srcExtentsBuilder_.addAllMessages(values); + } return this; } /** *
-       * If these values aren't present, they should be assumed to match
-       * the equivalent value above. They are normally only different for
-       * special image types such as nplusone images.
+       * Ordered list of extents that are read from (if any) and written to.
        * 
* - * optional string build_channel = 5; - * @return This builder for chaining. + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public Builder clearBuildChannel() { - bitField0_ = (bitField0_ & ~0x00000010); - buildChannel_ = getDefaultInstance().getBuildChannel(); - onChanged(); + public Builder clearSrcExtents() { + if (srcExtentsBuilder_ == null) { + srcExtents_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + } else { + srcExtentsBuilder_.clear(); + } return this; } /** *
-       * If these values aren't present, they should be assumed to match
-       * the equivalent value above. They are normally only different for
-       * special image types such as nplusone images.
+       * Ordered list of extents that are read from (if any) and written to.
        * 
* - * optional string build_channel = 5; - * @param value The bytes for buildChannel to set. - * @return This builder for chaining. + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public Builder setBuildChannelBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000010; - buildChannel_ = value; - onChanged(); + public Builder removeSrcExtents(int index) { + if (srcExtentsBuilder_ == null) { + ensureSrcExtentsIsMutable(); + srcExtents_.remove(index); + onChanged(); + } else { + srcExtentsBuilder_.remove(index); + } return this; } - - private java.lang.Object buildVersion_ = ""; /** - * optional string build_version = 6; - * @return Whether the buildVersion field is set. + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public boolean hasBuildVersion() { - return ((bitField0_ & 0x00000020) != 0); + public chromeos_update_engine.UpdateMetadata.Extent.Builder getSrcExtentsBuilder( + int index) { + return getSrcExtentsFieldBuilder().getBuilder(index); } /** - * optional string build_version = 6; - * @return The buildVersion. + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public java.lang.String getBuildVersion() { - java.lang.Object ref = buildVersion_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - buildVersion_ = s; - } - return s; - } else { - return (java.lang.String) ref; + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getSrcExtentsOrBuilder( + int index) { + if (srcExtentsBuilder_ == null) { + return srcExtents_.get(index); } else { + return srcExtentsBuilder_.getMessageOrBuilder(index); } } /** - * optional string build_version = 6; - * @return The bytes for buildVersion. + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public com.google.protobuf.ByteString - getBuildVersionBytes() { - java.lang.Object ref = buildVersion_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - buildVersion_ = b; - return b; + public java.util.List + getSrcExtentsOrBuilderList() { + if (srcExtentsBuilder_ != null) { + return srcExtentsBuilder_.getMessageOrBuilderList(); } else { - return (com.google.protobuf.ByteString) ref; + return java.util.Collections.unmodifiableList(srcExtents_); } } /** - * optional string build_version = 6; - * @param value The buildVersion to set. - * @return This builder for chaining. + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; */ - public Builder setBuildVersion( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000020; - buildVersion_ = value; - onChanged(); - return this; + public chromeos_update_engine.UpdateMetadata.Extent.Builder addSrcExtentsBuilder() { + return getSrcExtentsFieldBuilder().addBuilder( + chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()); + } + /** + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; + */ + public chromeos_update_engine.UpdateMetadata.Extent.Builder addSrcExtentsBuilder( + int index) { + return getSrcExtentsFieldBuilder().addBuilder( + index, chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()); + } + /** + *
+       * Ordered list of extents that are read from (if any) and written to.
+       * 
+ * + * repeated .chromeos_update_engine.Extent src_extents = 4; + */ + public java.util.List + getSrcExtentsBuilderList() { + return getSrcExtentsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> + getSrcExtentsFieldBuilder() { + if (srcExtentsBuilder_ == null) { + srcExtentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( + srcExtents_, + ((bitField0_ & 0x00000008) != 0), + getParentForChildren(), + isClean()); + srcExtents_ = null; + } + return srcExtentsBuilder_; + } + + private long srcLength_ ; + /** + *
+       * Byte length of src, equal to the number of blocks in src_extents *
+       * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
+       * pass that external program the number of bytes to read from the blocks we
+       * pass it.  This is not used in any other operation.
+       * 
+ * + * optional uint64 src_length = 5; + * @return Whether the srcLength field is set. + */ + @java.lang.Override + public boolean hasSrcLength() { + return ((bitField0_ & 0x00000010) != 0); + } + /** + *
+       * Byte length of src, equal to the number of blocks in src_extents *
+       * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
+       * pass that external program the number of bytes to read from the blocks we
+       * pass it.  This is not used in any other operation.
+       * 
+ * + * optional uint64 src_length = 5; + * @return The srcLength. + */ + @java.lang.Override + public long getSrcLength() { + return srcLength_; } /** - * optional string build_version = 6; + *
+       * Byte length of src, equal to the number of blocks in src_extents *
+       * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
+       * pass that external program the number of bytes to read from the blocks we
+       * pass it.  This is not used in any other operation.
+       * 
+ * + * optional uint64 src_length = 5; + * @param value The srcLength to set. * @return This builder for chaining. */ - public Builder clearBuildVersion() { - bitField0_ = (bitField0_ & ~0x00000020); - buildVersion_ = getDefaultInstance().getBuildVersion(); + public Builder setSrcLength(long value) { + + srcLength_ = value; + bitField0_ |= 0x00000010; onChanged(); return this; } /** - * optional string build_version = 6; - * @param value The bytes for buildVersion to set. + *
+       * Byte length of src, equal to the number of blocks in src_extents *
+       * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
+       * pass that external program the number of bytes to read from the blocks we
+       * pass it.  This is not used in any other operation.
+       * 
+ * + * optional uint64 src_length = 5; * @return This builder for chaining. */ - public Builder setBuildVersionBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000020; - buildVersion_ = value; + public Builder clearSrcLength() { + bitField0_ = (bitField0_ & ~0x00000010); + srcLength_ = 0L; onChanged(); return this; } - @java.lang.Override - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFields(unknownFields); - } - @java.lang.Override - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.mergeUnknownFields(unknownFields); + private java.util.List dstExtents_ = + java.util.Collections.emptyList(); + private void ensureDstExtentsIsMutable() { + if (!((bitField0_ & 0x00000020) != 0)) { + dstExtents_ = new java.util.ArrayList(dstExtents_); + bitField0_ |= 0x00000020; + } } + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> dstExtentsBuilder_; - // @@protoc_insertion_point(builder_scope:chromeos_update_engine.ImageInfo) - } - - // @@protoc_insertion_point(class_scope:chromeos_update_engine.ImageInfo) - private static final chromeos_update_engine.UpdateMetadata.ImageInfo DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.ImageInfo(); - } - - public static chromeos_update_engine.UpdateMetadata.ImageInfo getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - @java.lang.Deprecated public static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - @java.lang.Override - public ImageInfo parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new ImageInfo(input, extensionRegistry); + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; + */ + public java.util.List getDstExtentsList() { + if (dstExtentsBuilder_ == null) { + return java.util.Collections.unmodifiableList(dstExtents_); + } else { + return dstExtentsBuilder_.getMessageList(); + } } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @java.lang.Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ImageInfo getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface InstallOperationOrBuilder extends - // @@protoc_insertion_point(interface_extends:chromeos_update_engine.InstallOperation) - com.google.protobuf.MessageOrBuilder { - - /** - * required .chromeos_update_engine.InstallOperation.Type type = 1; - * @return Whether the type field is set. - */ - boolean hasType(); - /** - * required .chromeos_update_engine.InstallOperation.Type type = 1; - * @return The type. - */ - chromeos_update_engine.UpdateMetadata.InstallOperation.Type getType(); - - /** - *
-     * Only minor version 6 or newer support 64 bits |data_offset| and
-     * |data_length|, older client will read them as uint32.
-     * The offset into the delta file (after the protobuf)
-     * where the data (if any) is stored
-     * 
- * - * optional uint64 data_offset = 2; - * @return Whether the dataOffset field is set. - */ - boolean hasDataOffset(); - /** - *
-     * Only minor version 6 or newer support 64 bits |data_offset| and
-     * |data_length|, older client will read them as uint32.
-     * The offset into the delta file (after the protobuf)
-     * where the data (if any) is stored
-     * 
- * - * optional uint64 data_offset = 2; - * @return The dataOffset. - */ - long getDataOffset(); - - /** - *
-     * The length of the data in the delta file
-     * 
- * - * optional uint64 data_length = 3; - * @return Whether the dataLength field is set. - */ - boolean hasDataLength(); - /** - *
-     * The length of the data in the delta file
-     * 
- * - * optional uint64 data_length = 3; - * @return The dataLength. - */ - long getDataLength(); - - /** - *
-     * Ordered list of extents that are read from (if any) and written to.
-     * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; - */ - java.util.List - getSrcExtentsList(); - /** - *
-     * Ordered list of extents that are read from (if any) and written to.
-     * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; - */ - chromeos_update_engine.UpdateMetadata.Extent getSrcExtents(int index); - /** - *
-     * Ordered list of extents that are read from (if any) and written to.
-     * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; - */ - int getSrcExtentsCount(); - /** - *
-     * Ordered list of extents that are read from (if any) and written to.
-     * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; - */ - java.util.List - getSrcExtentsOrBuilderList(); - /** - *
-     * Ordered list of extents that are read from (if any) and written to.
-     * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; - */ - chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getSrcExtentsOrBuilder( - int index); - - /** - *
-     * Byte length of src, equal to the number of blocks in src_extents *
-     * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
-     * pass that external program the number of bytes to read from the blocks we
-     * pass it.  This is not used in any other operation.
-     * 
- * - * optional uint64 src_length = 5; - * @return Whether the srcLength field is set. - */ - boolean hasSrcLength(); - /** - *
-     * Byte length of src, equal to the number of blocks in src_extents *
-     * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
-     * pass that external program the number of bytes to read from the blocks we
-     * pass it.  This is not used in any other operation.
-     * 
- * - * optional uint64 src_length = 5; - * @return The srcLength. - */ - long getSrcLength(); - - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - java.util.List - getDstExtentsList(); - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - chromeos_update_engine.UpdateMetadata.Extent getDstExtents(int index); - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - int getDstExtentsCount(); - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - java.util.List - getDstExtentsOrBuilderList(); - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getDstExtentsOrBuilder( - int index); - - /** - *
-     * Byte length of dst, equal to the number of blocks in dst_extents *
-     * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
-     * operation.
-     * 
- * - * optional uint64 dst_length = 7; - * @return Whether the dstLength field is set. - */ - boolean hasDstLength(); - /** - *
-     * Byte length of dst, equal to the number of blocks in dst_extents *
-     * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
-     * operation.
-     * 
- * - * optional uint64 dst_length = 7; - * @return The dstLength. - */ - long getDstLength(); - - /** - *
-     * Optional SHA 256 hash of the blob associated with this operation.
-     * This is used as a primary validation for http-based downloads and
-     * as a defense-in-depth validation for https-based downloads. If
-     * the operation doesn't refer to any blob, this field will have
-     * zero bytes.
-     * 
- * - * optional bytes data_sha256_hash = 8; - * @return Whether the dataSha256Hash field is set. - */ - boolean hasDataSha256Hash(); - /** - *
-     * Optional SHA 256 hash of the blob associated with this operation.
-     * This is used as a primary validation for http-based downloads and
-     * as a defense-in-depth validation for https-based downloads. If
-     * the operation doesn't refer to any blob, this field will have
-     * zero bytes.
-     * 
- * - * optional bytes data_sha256_hash = 8; - * @return The dataSha256Hash. - */ - com.google.protobuf.ByteString getDataSha256Hash(); - - /** - *
-     * Indicates the SHA 256 hash of the source data referenced in src_extents at
-     * the time of applying the operation. If present, the update_engine daemon
-     * MUST read and verify the source data before applying the operation.
-     * 
- * - * optional bytes src_sha256_hash = 9; - * @return Whether the srcSha256Hash field is set. - */ - boolean hasSrcSha256Hash(); - /** - *
-     * Indicates the SHA 256 hash of the source data referenced in src_extents at
-     * the time of applying the operation. If present, the update_engine daemon
-     * MUST read and verify the source data before applying the operation.
-     * 
- * - * optional bytes src_sha256_hash = 9; - * @return The srcSha256Hash. - */ - com.google.protobuf.ByteString getSrcSha256Hash(); - } - /** - * Protobuf type {@code chromeos_update_engine.InstallOperation} - */ - public static final class InstallOperation extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:chromeos_update_engine.InstallOperation) - InstallOperationOrBuilder { - private static final long serialVersionUID = 0L; - // Use InstallOperation.newBuilder() to construct. - private InstallOperation(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private InstallOperation() { - type_ = 0; - srcExtents_ = java.util.Collections.emptyList(); - dstExtents_ = java.util.Collections.emptyList(); - dataSha256Hash_ = com.google.protobuf.ByteString.EMPTY; - srcSha256Hash_ = com.google.protobuf.ByteString.EMPTY; - } - - @java.lang.Override - @SuppressWarnings({"unused"}) - protected java.lang.Object newInstance( - UnusedPrivateParameter unused) { - return new InstallOperation(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private InstallOperation( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 8: { - int rawValue = input.readEnum(); - @SuppressWarnings("deprecation") - chromeos_update_engine.UpdateMetadata.InstallOperation.Type value = chromeos_update_engine.UpdateMetadata.InstallOperation.Type.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(1, rawValue); - } else { - bitField0_ |= 0x00000001; - type_ = rawValue; - } - break; - } - case 16: { - bitField0_ |= 0x00000002; - dataOffset_ = input.readUInt64(); - break; - } - case 24: { - bitField0_ |= 0x00000004; - dataLength_ = input.readUInt64(); - break; - } - case 34: { - if (!((mutable_bitField0_ & 0x00000008) != 0)) { - srcExtents_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000008; - } - srcExtents_.add( - input.readMessage(chromeos_update_engine.UpdateMetadata.Extent.PARSER, extensionRegistry)); - break; - } - case 40: { - bitField0_ |= 0x00000008; - srcLength_ = input.readUInt64(); - break; - } - case 50: { - if (!((mutable_bitField0_ & 0x00000020) != 0)) { - dstExtents_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000020; - } - dstExtents_.add( - input.readMessage(chromeos_update_engine.UpdateMetadata.Extent.PARSER, extensionRegistry)); - break; - } - case 56: { - bitField0_ |= 0x00000010; - dstLength_ = input.readUInt64(); - break; - } - case 66: { - bitField0_ |= 0x00000020; - dataSha256Hash_ = input.readBytes(); - break; - } - case 74: { - bitField0_ |= 0x00000040; - srcSha256Hash_ = input.readBytes(); - break; - } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000008) != 0)) { - srcExtents_ = java.util.Collections.unmodifiableList(srcExtents_); - } - if (((mutable_bitField0_ & 0x00000020) != 0)) { - dstExtents_ = java.util.Collections.unmodifiableList(dstExtents_); + /** + * repeated .chromeos_update_engine.Extent dst_extents = 6; + */ + public int getDstExtentsCount() { + if (dstExtentsBuilder_ == null) { + return dstExtents_.size(); + } else { + return dstExtentsBuilder_.getCount(); } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_InstallOperation_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_InstallOperation_fieldAccessorTable - .ensureFieldAccessorsInitialized( - chromeos_update_engine.UpdateMetadata.InstallOperation.class, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder.class); - } - - /** - * Protobuf enum {@code chromeos_update_engine.InstallOperation.Type} - */ - public enum Type - implements com.google.protobuf.ProtocolMessageEnum { /** - *
-       * Replace destination extents w/ attached data
-       * 
- * - * REPLACE = 0; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - REPLACE(0), + public chromeos_update_engine.UpdateMetadata.Extent getDstExtents(int index) { + if (dstExtentsBuilder_ == null) { + return dstExtents_.get(index); + } else { + return dstExtentsBuilder_.getMessage(index); + } + } /** - *
-       * Replace destination extents w/ attached bzipped data
-       * 
- * - * REPLACE_BZ = 1; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - REPLACE_BZ(1), + public Builder setDstExtents( + int index, chromeos_update_engine.UpdateMetadata.Extent value) { + if (dstExtentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDstExtentsIsMutable(); + dstExtents_.set(index, value); + onChanged(); + } else { + dstExtentsBuilder_.setMessage(index, value); + } + return this; + } /** - *
-       * Move source extents to destination extents
-       * 
- * - * MOVE = 2 [deprecated = true]; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - @java.lang.Deprecated - MOVE(2), + public Builder setDstExtents( + int index, chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (dstExtentsBuilder_ == null) { + ensureDstExtentsIsMutable(); + dstExtents_.set(index, builderForValue.build()); + onChanged(); + } else { + dstExtentsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } /** - *
-       * The data is a bsdiff binary diff
-       * 
- * - * BSDIFF = 3 [deprecated = true]; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - @java.lang.Deprecated - BSDIFF(3), + public Builder addDstExtents(chromeos_update_engine.UpdateMetadata.Extent value) { + if (dstExtentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDstExtentsIsMutable(); + dstExtents_.add(value); + onChanged(); + } else { + dstExtentsBuilder_.addMessage(value); + } + return this; + } /** - *
-       * On minor version 2 or newer, these operations are supported:
-       * 
- * - * SOURCE_COPY = 4; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - SOURCE_COPY(4), + public Builder addDstExtents( + int index, chromeos_update_engine.UpdateMetadata.Extent value) { + if (dstExtentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDstExtentsIsMutable(); + dstExtents_.add(index, value); + onChanged(); + } else { + dstExtentsBuilder_.addMessage(index, value); + } + return this; + } /** - *
-       * Like BSDIFF, but read from source partition
-       * 
- * - * SOURCE_BSDIFF = 5; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - SOURCE_BSDIFF(5), + public Builder addDstExtents( + chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (dstExtentsBuilder_ == null) { + ensureDstExtentsIsMutable(); + dstExtents_.add(builderForValue.build()); + onChanged(); + } else { + dstExtentsBuilder_.addMessage(builderForValue.build()); + } + return this; + } /** - *
-       * On minor version 3 or newer and on major version 2 or newer, these
-       * operations are supported:
-       * 
- * - * REPLACE_XZ = 8; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - REPLACE_XZ(8), + public Builder addDstExtents( + int index, chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (dstExtentsBuilder_ == null) { + ensureDstExtentsIsMutable(); + dstExtents_.add(index, builderForValue.build()); + onChanged(); + } else { + dstExtentsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } /** - *
-       * On minor version 4 or newer, these operations are supported:
-       * 
- * - * ZERO = 6; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - ZERO(6), + public Builder addAllDstExtents( + java.lang.Iterable values) { + if (dstExtentsBuilder_ == null) { + ensureDstExtentsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, dstExtents_); + onChanged(); + } else { + dstExtentsBuilder_.addAllMessages(values); + } + return this; + } /** - *
-       * Discard the destination blocks, reading as undefined.
-       * 
- * - * DISCARD = 7; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - DISCARD(7), + public Builder clearDstExtents() { + if (dstExtentsBuilder_ == null) { + dstExtents_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + } else { + dstExtentsBuilder_.clear(); + } + return this; + } /** - *
-       * Like SOURCE_BSDIFF, but compressed with brotli.
-       * 
- * - * BROTLI_BSDIFF = 10; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - BROTLI_BSDIFF(10), + public Builder removeDstExtents(int index) { + if (dstExtentsBuilder_ == null) { + ensureDstExtentsIsMutable(); + dstExtents_.remove(index); + onChanged(); + } else { + dstExtentsBuilder_.remove(index); + } + return this; + } /** - *
-       * On minor version 5 or newer, these operations are supported:
-       * 
- * - * PUFFDIFF = 9; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - PUFFDIFF(9), - ; - + public chromeos_update_engine.UpdateMetadata.Extent.Builder getDstExtentsBuilder( + int index) { + return getDstExtentsFieldBuilder().getBuilder(index); + } /** - *
-       * Replace destination extents w/ attached data
-       * 
- * - * REPLACE = 0; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - public static final int REPLACE_VALUE = 0; + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getDstExtentsOrBuilder( + int index) { + if (dstExtentsBuilder_ == null) { + return dstExtents_.get(index); } else { + return dstExtentsBuilder_.getMessageOrBuilder(index); + } + } /** - *
-       * Replace destination extents w/ attached bzipped data
-       * 
- * - * REPLACE_BZ = 1; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - public static final int REPLACE_BZ_VALUE = 1; + public java.util.List + getDstExtentsOrBuilderList() { + if (dstExtentsBuilder_ != null) { + return dstExtentsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(dstExtents_); + } + } /** - *
-       * Move source extents to destination extents
-       * 
- * - * MOVE = 2 [deprecated = true]; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - @java.lang.Deprecated public static final int MOVE_VALUE = 2; + public chromeos_update_engine.UpdateMetadata.Extent.Builder addDstExtentsBuilder() { + return getDstExtentsFieldBuilder().addBuilder( + chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()); + } /** - *
-       * The data is a bsdiff binary diff
-       * 
- * - * BSDIFF = 3 [deprecated = true]; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - @java.lang.Deprecated public static final int BSDIFF_VALUE = 3; + public chromeos_update_engine.UpdateMetadata.Extent.Builder addDstExtentsBuilder( + int index) { + return getDstExtentsFieldBuilder().addBuilder( + index, chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()); + } /** - *
-       * On minor version 2 or newer, these operations are supported:
-       * 
- * - * SOURCE_COPY = 4; + * repeated .chromeos_update_engine.Extent dst_extents = 6; */ - public static final int SOURCE_COPY_VALUE = 4; + public java.util.List + getDstExtentsBuilderList() { + return getDstExtentsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> + getDstExtentsFieldBuilder() { + if (dstExtentsBuilder_ == null) { + dstExtentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( + dstExtents_, + ((bitField0_ & 0x00000020) != 0), + getParentForChildren(), + isClean()); + dstExtents_ = null; + } + return dstExtentsBuilder_; + } + + private long dstLength_ ; /** *
-       * Like BSDIFF, but read from source partition
+       * Byte length of dst, equal to the number of blocks in dst_extents *
+       * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
+       * operation.
        * 
* - * SOURCE_BSDIFF = 5; + * optional uint64 dst_length = 7; + * @return Whether the dstLength field is set. */ - public static final int SOURCE_BSDIFF_VALUE = 5; + @java.lang.Override + public boolean hasDstLength() { + return ((bitField0_ & 0x00000040) != 0); + } /** *
-       * On minor version 3 or newer and on major version 2 or newer, these
-       * operations are supported:
+       * Byte length of dst, equal to the number of blocks in dst_extents *
+       * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
+       * operation.
        * 
* - * REPLACE_XZ = 8; + * optional uint64 dst_length = 7; + * @return The dstLength. */ - public static final int REPLACE_XZ_VALUE = 8; + @java.lang.Override + public long getDstLength() { + return dstLength_; + } /** *
-       * On minor version 4 or newer, these operations are supported:
+       * Byte length of dst, equal to the number of blocks in dst_extents *
+       * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
+       * operation.
        * 
* - * ZERO = 6; + * optional uint64 dst_length = 7; + * @param value The dstLength to set. + * @return This builder for chaining. */ - public static final int ZERO_VALUE = 6; + public Builder setDstLength(long value) { + + dstLength_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } /** *
-       * Discard the destination blocks, reading as undefined.
+       * Byte length of dst, equal to the number of blocks in dst_extents *
+       * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
+       * operation.
        * 
* - * DISCARD = 7; - */ - public static final int DISCARD_VALUE = 7; + * optional uint64 dst_length = 7; + * @return This builder for chaining. + */ + public Builder clearDstLength() { + bitField0_ = (bitField0_ & ~0x00000040); + dstLength_ = 0L; + onChanged(); + return this; + } + + private com.google.protobuf.ByteString dataSha256Hash_ = com.google.protobuf.ByteString.EMPTY; /** *
-       * Like SOURCE_BSDIFF, but compressed with brotli.
+       * Optional SHA 256 hash of the blob associated with this operation.
+       * This is used as a primary validation for http-based downloads and
+       * as a defense-in-depth validation for https-based downloads. If
+       * the operation doesn't refer to any blob, this field will have
+       * zero bytes.
        * 
* - * BROTLI_BSDIFF = 10; + * optional bytes data_sha256_hash = 8; + * @return Whether the dataSha256Hash field is set. */ - public static final int BROTLI_BSDIFF_VALUE = 10; + @java.lang.Override + public boolean hasDataSha256Hash() { + return ((bitField0_ & 0x00000080) != 0); + } /** *
-       * On minor version 5 or newer, these operations are supported:
+       * Optional SHA 256 hash of the blob associated with this operation.
+       * This is used as a primary validation for http-based downloads and
+       * as a defense-in-depth validation for https-based downloads. If
+       * the operation doesn't refer to any blob, this field will have
+       * zero bytes.
        * 
* - * PUFFDIFF = 9; + * optional bytes data_sha256_hash = 8; + * @return The dataSha256Hash. */ - public static final int PUFFDIFF_VALUE = 9; - - - public final int getNumber() { - return value; + @java.lang.Override + public com.google.protobuf.ByteString getDataSha256Hash() { + return dataSha256Hash_; } - /** - * @param value The numeric wire value of the corresponding enum entry. - * @return The enum associated with the given numeric wire value. - * @deprecated Use {@link #forNumber(int)} instead. + *
+       * Optional SHA 256 hash of the blob associated with this operation.
+       * This is used as a primary validation for http-based downloads and
+       * as a defense-in-depth validation for https-based downloads. If
+       * the operation doesn't refer to any blob, this field will have
+       * zero bytes.
+       * 
+ * + * optional bytes data_sha256_hash = 8; + * @param value The dataSha256Hash to set. + * @return This builder for chaining. */ - @java.lang.Deprecated - public static Type valueOf(int value) { - return forNumber(value); + public Builder setDataSha256Hash(com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + dataSha256Hash_ = value; + bitField0_ |= 0x00000080; + onChanged(); + return this; } - /** - * @param value The numeric wire value of the corresponding enum entry. - * @return The enum associated with the given numeric wire value. + *
+       * Optional SHA 256 hash of the blob associated with this operation.
+       * This is used as a primary validation for http-based downloads and
+       * as a defense-in-depth validation for https-based downloads. If
+       * the operation doesn't refer to any blob, this field will have
+       * zero bytes.
+       * 
+ * + * optional bytes data_sha256_hash = 8; + * @return This builder for chaining. */ - public static Type forNumber(int value) { - switch (value) { - case 0: return REPLACE; - case 1: return REPLACE_BZ; - case 2: return MOVE; - case 3: return BSDIFF; - case 4: return SOURCE_COPY; - case 5: return SOURCE_BSDIFF; - case 8: return REPLACE_XZ; - case 6: return ZERO; - case 7: return DISCARD; - case 10: return BROTLI_BSDIFF; - case 9: return PUFFDIFF; - default: return null; - } + public Builder clearDataSha256Hash() { + bitField0_ = (bitField0_ & ~0x00000080); + dataSha256Hash_ = getDefaultInstance().getDataSha256Hash(); + onChanged(); + return this; } - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; + private com.google.protobuf.ByteString srcSha256Hash_ = com.google.protobuf.ByteString.EMPTY; + /** + *
+       * Indicates the SHA 256 hash of the source data referenced in src_extents at
+       * the time of applying the operation. If present, the update_engine daemon
+       * MUST read and verify the source data before applying the operation.
+       * 
+ * + * optional bytes src_sha256_hash = 9; + * @return Whether the srcSha256Hash field is set. + */ + @java.lang.Override + public boolean hasSrcSha256Hash() { + return ((bitField0_ & 0x00000100) != 0); } - private static final com.google.protobuf.Internal.EnumLiteMap< - Type> internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public Type findValueByNumber(int number) { - return Type.forNumber(number); - } - }; - - public final com.google.protobuf.Descriptors.EnumValueDescriptor - getValueDescriptor() { - return getDescriptor().getValues().get(ordinal()); + /** + *
+       * Indicates the SHA 256 hash of the source data referenced in src_extents at
+       * the time of applying the operation. If present, the update_engine daemon
+       * MUST read and verify the source data before applying the operation.
+       * 
+ * + * optional bytes src_sha256_hash = 9; + * @return The srcSha256Hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSrcSha256Hash() { + return srcSha256Hash_; } - public final com.google.protobuf.Descriptors.EnumDescriptor - getDescriptorForType() { - return getDescriptor(); + /** + *
+       * Indicates the SHA 256 hash of the source data referenced in src_extents at
+       * the time of applying the operation. If present, the update_engine daemon
+       * MUST read and verify the source data before applying the operation.
+       * 
+ * + * optional bytes src_sha256_hash = 9; + * @param value The srcSha256Hash to set. + * @return This builder for chaining. + */ + public Builder setSrcSha256Hash(com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + srcSha256Hash_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; } - public static final com.google.protobuf.Descriptors.EnumDescriptor - getDescriptor() { - return chromeos_update_engine.UpdateMetadata.InstallOperation.getDescriptor().getEnumTypes().get(0); + /** + *
+       * Indicates the SHA 256 hash of the source data referenced in src_extents at
+       * the time of applying the operation. If present, the update_engine daemon
+       * MUST read and verify the source data before applying the operation.
+       * 
+ * + * optional bytes src_sha256_hash = 9; + * @return This builder for chaining. + */ + public Builder clearSrcSha256Hash() { + bitField0_ = (bitField0_ & ~0x00000100); + srcSha256Hash_ = getDefaultInstance().getSrcSha256Hash(); + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); } - private static final Type[] VALUES = values(); + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } - public static Type valueOf( - com.google.protobuf.Descriptors.EnumValueDescriptor desc) { - if (desc.getType() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "EnumValueDescriptor is not for this type."); + + // @@protoc_insertion_point(builder_scope:chromeos_update_engine.InstallOperation) + } + + // @@protoc_insertion_point(class_scope:chromeos_update_engine.InstallOperation) + private static final chromeos_update_engine.UpdateMetadata.InstallOperation DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.InstallOperation(); + } + + public static chromeos_update_engine.UpdateMetadata.InstallOperation getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public InstallOperation parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); } - return VALUES[desc.getIndex()]; + return builder.buildPartial(); } + }; - private final int value; + public static com.google.protobuf.Parser parser() { + return PARSER; + } - private Type(int value) { - this.value = value; - } + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } - // @@protoc_insertion_point(enum_scope:chromeos_update_engine.InstallOperation.Type) + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.InstallOperation getDefaultInstanceForType() { + return DEFAULT_INSTANCE; } - private int bitField0_; - public static final int TYPE_FIELD_NUMBER = 1; - private int type_; + } + + public interface CowMergeOperationOrBuilder extends + // @@protoc_insertion_point(interface_extends:chromeos_update_engine.CowMergeOperation) + com.google.protobuf.MessageOrBuilder { + /** - * required .chromeos_update_engine.InstallOperation.Type type = 1; + * optional .chromeos_update_engine.CowMergeOperation.Type type = 1; * @return Whether the type field is set. */ - @java.lang.Override public boolean hasType() { - return ((bitField0_ & 0x00000001) != 0); - } + boolean hasType(); /** - * required .chromeos_update_engine.InstallOperation.Type type = 1; + * optional .chromeos_update_engine.CowMergeOperation.Type type = 1; * @return The type. */ - @java.lang.Override public chromeos_update_engine.UpdateMetadata.InstallOperation.Type getType() { - @SuppressWarnings("deprecation") - chromeos_update_engine.UpdateMetadata.InstallOperation.Type result = chromeos_update_engine.UpdateMetadata.InstallOperation.Type.valueOf(type_); - return result == null ? chromeos_update_engine.UpdateMetadata.InstallOperation.Type.REPLACE : result; - } + chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type getType(); - public static final int DATA_OFFSET_FIELD_NUMBER = 2; - private long dataOffset_; /** - *
-     * Only minor version 6 or newer support 64 bits |data_offset| and
-     * |data_length|, older client will read them as uint32.
-     * The offset into the delta file (after the protobuf)
-     * where the data (if any) is stored
-     * 
- * - * optional uint64 data_offset = 2; - * @return Whether the dataOffset field is set. + * optional .chromeos_update_engine.Extent src_extent = 2; + * @return Whether the srcExtent field is set. */ - @java.lang.Override - public boolean hasDataOffset() { - return ((bitField0_ & 0x00000002) != 0); - } + boolean hasSrcExtent(); /** - *
-     * Only minor version 6 or newer support 64 bits |data_offset| and
-     * |data_length|, older client will read them as uint32.
-     * The offset into the delta file (after the protobuf)
-     * where the data (if any) is stored
-     * 
- * - * optional uint64 data_offset = 2; - * @return The dataOffset. + * optional .chromeos_update_engine.Extent src_extent = 2; + * @return The srcExtent. */ - @java.lang.Override - public long getDataOffset() { - return dataOffset_; - } + chromeos_update_engine.UpdateMetadata.Extent getSrcExtent(); + /** + * optional .chromeos_update_engine.Extent src_extent = 2; + */ + chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getSrcExtentOrBuilder(); + + /** + * optional .chromeos_update_engine.Extent dst_extent = 3; + * @return Whether the dstExtent field is set. + */ + boolean hasDstExtent(); + /** + * optional .chromeos_update_engine.Extent dst_extent = 3; + * @return The dstExtent. + */ + chromeos_update_engine.UpdateMetadata.Extent getDstExtent(); + /** + * optional .chromeos_update_engine.Extent dst_extent = 3; + */ + chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getDstExtentOrBuilder(); - public static final int DATA_LENGTH_FIELD_NUMBER = 3; - private long dataLength_; /** *
-     * The length of the data in the delta file
+     * For COW_XOR, source location might be unaligned, so this field is in range
+     * [0, block_size), representing how much should the src_extent shift toward
+     * larger block number. If this field is non-zero, then src_extent will
+     * include 1 extra block in the end, as the merge op actually references the
+     * first |src_offset| bytes of that extra block. For example, if |dst_extent|
+     * is [10, 15], |src_offset| is 500, then src_extent might look like [25, 31].
+     * Note that |src_extent| contains 1 extra block than the |dst_extent|.
      * 
* - * optional uint64 data_length = 3; - * @return Whether the dataLength field is set. + * optional uint32 src_offset = 4; + * @return Whether the srcOffset field is set. */ - @java.lang.Override - public boolean hasDataLength() { - return ((bitField0_ & 0x00000004) != 0); - } + boolean hasSrcOffset(); /** *
-     * The length of the data in the delta file
+     * For COW_XOR, source location might be unaligned, so this field is in range
+     * [0, block_size), representing how much should the src_extent shift toward
+     * larger block number. If this field is non-zero, then src_extent will
+     * include 1 extra block in the end, as the merge op actually references the
+     * first |src_offset| bytes of that extra block. For example, if |dst_extent|
+     * is [10, 15], |src_offset| is 500, then src_extent might look like [25, 31].
+     * Note that |src_extent| contains 1 extra block than the |dst_extent|.
      * 
* - * optional uint64 data_length = 3; - * @return The dataLength. + * optional uint32 src_offset = 4; + * @return The srcOffset. */ + int getSrcOffset(); + } + /** + *
+   * Hints to VAB snapshot to skip writing some blocks if these blocks are
+   * identical to the ones on the source image. The src & dst extents for each
+   * CowMergeOperation should be contiguous, and they're a subset of an OTA
+   * InstallOperation.
+   * During merge time, we need to follow the pre-computed sequence to avoid
+   * read after write, similar to the inplace update schema.
+   * 
+ * + * Protobuf type {@code chromeos_update_engine.CowMergeOperation} + */ + public static final class CowMergeOperation extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:chromeos_update_engine.CowMergeOperation) + CowMergeOperationOrBuilder { + private static final long serialVersionUID = 0L; + // Use CowMergeOperation.newBuilder() to construct. + private CowMergeOperation(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CowMergeOperation() { + type_ = 0; + } + @java.lang.Override - public long getDataLength() { - return dataLength_; + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new CowMergeOperation(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_CowMergeOperation_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_CowMergeOperation_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.CowMergeOperation.class, chromeos_update_engine.UpdateMetadata.CowMergeOperation.Builder.class); } - public static final int SRC_EXTENTS_FIELD_NUMBER = 4; - private java.util.List srcExtents_; /** - *
-     * Ordered list of extents that are read from (if any) and written to.
-     * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * Protobuf enum {@code chromeos_update_engine.CowMergeOperation.Type} + */ + public enum Type + implements com.google.protobuf.ProtocolMessageEnum { + /** + *
+       * identical blocks
+       * 
+ * + * COW_COPY = 0; + */ + COW_COPY(0), + /** + *
+       * used when src/dst blocks are highly similar
+       * 
+ * + * COW_XOR = 1; + */ + COW_XOR(1), + /** + *
+       * Raw replace operation
+       * 
+ * + * COW_REPLACE = 2; + */ + COW_REPLACE(2), + ; + + /** + *
+       * identical blocks
+       * 
+ * + * COW_COPY = 0; + */ + public static final int COW_COPY_VALUE = 0; + /** + *
+       * used when src/dst blocks are highly similar
+       * 
+ * + * COW_XOR = 1; + */ + public static final int COW_XOR_VALUE = 1; + /** + *
+       * Raw replace operation
+       * 
+ * + * COW_REPLACE = 2; + */ + public static final int COW_REPLACE_VALUE = 2; + + + public final int getNumber() { + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Type valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Type forNumber(int value) { + switch (value) { + case 0: return COW_COPY; + case 1: return COW_XOR; + case 2: return COW_REPLACE; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Type> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Type findValueByNumber(int number) { + return Type.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.CowMergeOperation.getDescriptor().getEnumTypes().get(0); + } + + private static final Type[] VALUES = values(); + + public static Type valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private Type(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:chromeos_update_engine.CowMergeOperation.Type) + } + + private int bitField0_; + public static final int TYPE_FIELD_NUMBER = 1; + private int type_ = 0; + /** + * optional .chromeos_update_engine.CowMergeOperation.Type type = 1; + * @return Whether the type field is set. + */ + @java.lang.Override public boolean hasType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * optional .chromeos_update_engine.CowMergeOperation.Type type = 1; + * @return The type. + */ + @java.lang.Override public chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type getType() { + chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type result = chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type.forNumber(type_); + return result == null ? chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type.COW_COPY : result; + } + + public static final int SRC_EXTENT_FIELD_NUMBER = 2; + private chromeos_update_engine.UpdateMetadata.Extent srcExtent_; + /** + * optional .chromeos_update_engine.Extent src_extent = 2; + * @return Whether the srcExtent field is set. */ @java.lang.Override - public java.util.List getSrcExtentsList() { - return srcExtents_; + public boolean hasSrcExtent() { + return ((bitField0_ & 0x00000002) != 0); } /** - *
-     * Ordered list of extents that are read from (if any) and written to.
-     * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent src_extent = 2; + * @return The srcExtent. */ @java.lang.Override - public java.util.List - getSrcExtentsOrBuilderList() { - return srcExtents_; + public chromeos_update_engine.UpdateMetadata.Extent getSrcExtent() { + return srcExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : srcExtent_; } /** - *
-     * Ordered list of extents that are read from (if any) and written to.
-     * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent src_extent = 2; */ @java.lang.Override - public int getSrcExtentsCount() { - return srcExtents_.size(); + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getSrcExtentOrBuilder() { + return srcExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : srcExtent_; } + + public static final int DST_EXTENT_FIELD_NUMBER = 3; + private chromeos_update_engine.UpdateMetadata.Extent dstExtent_; /** - *
-     * Ordered list of extents that are read from (if any) and written to.
-     * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent dst_extent = 3; + * @return Whether the dstExtent field is set. */ @java.lang.Override - public chromeos_update_engine.UpdateMetadata.Extent getSrcExtents(int index) { - return srcExtents_.get(index); + public boolean hasDstExtent() { + return ((bitField0_ & 0x00000004) != 0); } /** - *
-     * Ordered list of extents that are read from (if any) and written to.
-     * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent dst_extent = 3; + * @return The dstExtent. */ @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getSrcExtentsOrBuilder( - int index) { - return srcExtents_.get(index); + public chromeos_update_engine.UpdateMetadata.Extent getDstExtent() { + return dstExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : dstExtent_; + } + /** + * optional .chromeos_update_engine.Extent dst_extent = 3; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getDstExtentOrBuilder() { + return dstExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : dstExtent_; } - public static final int SRC_LENGTH_FIELD_NUMBER = 5; - private long srcLength_; + public static final int SRC_OFFSET_FIELD_NUMBER = 4; + private int srcOffset_ = 0; /** *
-     * Byte length of src, equal to the number of blocks in src_extents *
-     * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
-     * pass that external program the number of bytes to read from the blocks we
-     * pass it.  This is not used in any other operation.
+     * For COW_XOR, source location might be unaligned, so this field is in range
+     * [0, block_size), representing how much should the src_extent shift toward
+     * larger block number. If this field is non-zero, then src_extent will
+     * include 1 extra block in the end, as the merge op actually references the
+     * first |src_offset| bytes of that extra block. For example, if |dst_extent|
+     * is [10, 15], |src_offset| is 500, then src_extent might look like [25, 31].
+     * Note that |src_extent| contains 1 extra block than the |dst_extent|.
      * 
* - * optional uint64 src_length = 5; - * @return Whether the srcLength field is set. + * optional uint32 src_offset = 4; + * @return Whether the srcOffset field is set. */ @java.lang.Override - public boolean hasSrcLength() { + public boolean hasSrcOffset() { return ((bitField0_ & 0x00000008) != 0); } /** *
-     * Byte length of src, equal to the number of blocks in src_extents *
-     * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
-     * pass that external program the number of bytes to read from the blocks we
-     * pass it.  This is not used in any other operation.
+     * For COW_XOR, source location might be unaligned, so this field is in range
+     * [0, block_size), representing how much should the src_extent shift toward
+     * larger block number. If this field is non-zero, then src_extent will
+     * include 1 extra block in the end, as the merge op actually references the
+     * first |src_offset| bytes of that extra block. For example, if |dst_extent|
+     * is [10, 15], |src_offset| is 500, then src_extent might look like [25, 31].
+     * Note that |src_extent| contains 1 extra block than the |dst_extent|.
      * 
* - * optional uint64 src_length = 5; - * @return The srcLength. + * optional uint32 src_offset = 4; + * @return The srcOffset. */ @java.lang.Override - public long getSrcLength() { - return srcLength_; - } - - public static final int DST_EXTENTS_FIELD_NUMBER = 6; - private java.util.List dstExtents_; - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - @java.lang.Override - public java.util.List getDstExtentsList() { - return dstExtents_; - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - @java.lang.Override - public java.util.List - getDstExtentsOrBuilderList() { - return dstExtents_; - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - @java.lang.Override - public int getDstExtentsCount() { - return dstExtents_.size(); - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.Extent getDstExtents(int index) { - return dstExtents_.get(index); - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getDstExtentsOrBuilder( - int index) { - return dstExtents_.get(index); - } - - public static final int DST_LENGTH_FIELD_NUMBER = 7; - private long dstLength_; - /** - *
-     * Byte length of dst, equal to the number of blocks in dst_extents *
-     * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
-     * operation.
-     * 
- * - * optional uint64 dst_length = 7; - * @return Whether the dstLength field is set. - */ - @java.lang.Override - public boolean hasDstLength() { - return ((bitField0_ & 0x00000010) != 0); - } - /** - *
-     * Byte length of dst, equal to the number of blocks in dst_extents *
-     * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
-     * operation.
-     * 
- * - * optional uint64 dst_length = 7; - * @return The dstLength. - */ - @java.lang.Override - public long getDstLength() { - return dstLength_; - } - - public static final int DATA_SHA256_HASH_FIELD_NUMBER = 8; - private com.google.protobuf.ByteString dataSha256Hash_; - /** - *
-     * Optional SHA 256 hash of the blob associated with this operation.
-     * This is used as a primary validation for http-based downloads and
-     * as a defense-in-depth validation for https-based downloads. If
-     * the operation doesn't refer to any blob, this field will have
-     * zero bytes.
-     * 
- * - * optional bytes data_sha256_hash = 8; - * @return Whether the dataSha256Hash field is set. - */ - @java.lang.Override - public boolean hasDataSha256Hash() { - return ((bitField0_ & 0x00000020) != 0); - } - /** - *
-     * Optional SHA 256 hash of the blob associated with this operation.
-     * This is used as a primary validation for http-based downloads and
-     * as a defense-in-depth validation for https-based downloads. If
-     * the operation doesn't refer to any blob, this field will have
-     * zero bytes.
-     * 
- * - * optional bytes data_sha256_hash = 8; - * @return The dataSha256Hash. - */ - @java.lang.Override - public com.google.protobuf.ByteString getDataSha256Hash() { - return dataSha256Hash_; - } - - public static final int SRC_SHA256_HASH_FIELD_NUMBER = 9; - private com.google.protobuf.ByteString srcSha256Hash_; - /** - *
-     * Indicates the SHA 256 hash of the source data referenced in src_extents at
-     * the time of applying the operation. If present, the update_engine daemon
-     * MUST read and verify the source data before applying the operation.
-     * 
- * - * optional bytes src_sha256_hash = 9; - * @return Whether the srcSha256Hash field is set. - */ - @java.lang.Override - public boolean hasSrcSha256Hash() { - return ((bitField0_ & 0x00000040) != 0); - } - /** - *
-     * Indicates the SHA 256 hash of the source data referenced in src_extents at
-     * the time of applying the operation. If present, the update_engine daemon
-     * MUST read and verify the source data before applying the operation.
-     * 
- * - * optional bytes src_sha256_hash = 9; - * @return The srcSha256Hash. - */ - @java.lang.Override - public com.google.protobuf.ByteString getSrcSha256Hash() { - return srcSha256Hash_; + public int getSrcOffset() { + return srcOffset_; } private byte memoizedIsInitialized = -1; @@ -5427,10 +5799,6 @@ public final class UpdateMetadata { if (isInitialized == 1) return true; if (isInitialized == 0) return false; - if (!hasType()) { - memoizedIsInitialized = 0; - return false; - } memoizedIsInitialized = 1; return true; } @@ -5442,30 +5810,15 @@ public final class UpdateMetadata { output.writeEnum(1, type_); } if (((bitField0_ & 0x00000002) != 0)) { - output.writeUInt64(2, dataOffset_); + output.writeMessage(2, getSrcExtent()); } if (((bitField0_ & 0x00000004) != 0)) { - output.writeUInt64(3, dataLength_); - } - for (int i = 0; i < srcExtents_.size(); i++) { - output.writeMessage(4, srcExtents_.get(i)); + output.writeMessage(3, getDstExtent()); } if (((bitField0_ & 0x00000008) != 0)) { - output.writeUInt64(5, srcLength_); - } - for (int i = 0; i < dstExtents_.size(); i++) { - output.writeMessage(6, dstExtents_.get(i)); - } - if (((bitField0_ & 0x00000010) != 0)) { - output.writeUInt64(7, dstLength_); - } - if (((bitField0_ & 0x00000020) != 0)) { - output.writeBytes(8, dataSha256Hash_); + output.writeUInt32(4, srcOffset_); } - if (((bitField0_ & 0x00000040) != 0)) { - output.writeBytes(9, srcSha256Hash_); - } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -5480,37 +5833,17 @@ public final class UpdateMetadata { } if (((bitField0_ & 0x00000002) != 0)) { size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(2, dataOffset_); + .computeMessageSize(2, getSrcExtent()); } if (((bitField0_ & 0x00000004) != 0)) { size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(3, dataLength_); - } - for (int i = 0; i < srcExtents_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(4, srcExtents_.get(i)); + .computeMessageSize(3, getDstExtent()); } if (((bitField0_ & 0x00000008) != 0)) { size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(5, srcLength_); - } - for (int i = 0; i < dstExtents_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(6, dstExtents_.get(i)); - } - if (((bitField0_ & 0x00000010) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(7, dstLength_); - } - if (((bitField0_ & 0x00000020) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(8, dataSha256Hash_); - } - if (((bitField0_ & 0x00000040) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(9, srcSha256Hash_); + .computeUInt32Size(4, srcOffset_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -5520,50 +5853,31 @@ public final class UpdateMetadata { if (obj == this) { return true; } - if (!(obj instanceof chromeos_update_engine.UpdateMetadata.InstallOperation)) { + if (!(obj instanceof chromeos_update_engine.UpdateMetadata.CowMergeOperation)) { return super.equals(obj); } - chromeos_update_engine.UpdateMetadata.InstallOperation other = (chromeos_update_engine.UpdateMetadata.InstallOperation) obj; + chromeos_update_engine.UpdateMetadata.CowMergeOperation other = (chromeos_update_engine.UpdateMetadata.CowMergeOperation) obj; if (hasType() != other.hasType()) return false; if (hasType()) { if (type_ != other.type_) return false; } - if (hasDataOffset() != other.hasDataOffset()) return false; - if (hasDataOffset()) { - if (getDataOffset() - != other.getDataOffset()) return false; - } - if (hasDataLength() != other.hasDataLength()) return false; - if (hasDataLength()) { - if (getDataLength() - != other.getDataLength()) return false; - } - if (!getSrcExtentsList() - .equals(other.getSrcExtentsList())) return false; - if (hasSrcLength() != other.hasSrcLength()) return false; - if (hasSrcLength()) { - if (getSrcLength() - != other.getSrcLength()) return false; - } - if (!getDstExtentsList() - .equals(other.getDstExtentsList())) return false; - if (hasDstLength() != other.hasDstLength()) return false; - if (hasDstLength()) { - if (getDstLength() - != other.getDstLength()) return false; + if (hasSrcExtent() != other.hasSrcExtent()) return false; + if (hasSrcExtent()) { + if (!getSrcExtent() + .equals(other.getSrcExtent())) return false; } - if (hasDataSha256Hash() != other.hasDataSha256Hash()) return false; - if (hasDataSha256Hash()) { - if (!getDataSha256Hash() - .equals(other.getDataSha256Hash())) return false; + if (hasDstExtent() != other.hasDstExtent()) return false; + if (hasDstExtent()) { + if (!getDstExtent() + .equals(other.getDstExtent())) return false; } - if (hasSrcSha256Hash() != other.hasSrcSha256Hash()) return false; - if (hasSrcSha256Hash()) { - if (!getSrcSha256Hash() - .equals(other.getSrcSha256Hash())) return false; + if (hasSrcOffset() != other.hasSrcOffset()) return false; + if (hasSrcOffset()) { + if (getSrcOffset() + != other.getSrcOffset()) return false; } - if (!unknownFields.equals(other.unknownFields)) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -5578,110 +5892,86 @@ public final class UpdateMetadata { hash = (37 * hash) + TYPE_FIELD_NUMBER; hash = (53 * hash) + type_; } - if (hasDataOffset()) { - hash = (37 * hash) + DATA_OFFSET_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getDataOffset()); - } - if (hasDataLength()) { - hash = (37 * hash) + DATA_LENGTH_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getDataLength()); - } - if (getSrcExtentsCount() > 0) { - hash = (37 * hash) + SRC_EXTENTS_FIELD_NUMBER; - hash = (53 * hash) + getSrcExtentsList().hashCode(); - } - if (hasSrcLength()) { - hash = (37 * hash) + SRC_LENGTH_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getSrcLength()); - } - if (getDstExtentsCount() > 0) { - hash = (37 * hash) + DST_EXTENTS_FIELD_NUMBER; - hash = (53 * hash) + getDstExtentsList().hashCode(); - } - if (hasDstLength()) { - hash = (37 * hash) + DST_LENGTH_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getDstLength()); + if (hasSrcExtent()) { + hash = (37 * hash) + SRC_EXTENT_FIELD_NUMBER; + hash = (53 * hash) + getSrcExtent().hashCode(); } - if (hasDataSha256Hash()) { - hash = (37 * hash) + DATA_SHA256_HASH_FIELD_NUMBER; - hash = (53 * hash) + getDataSha256Hash().hashCode(); + if (hasDstExtent()) { + hash = (37 * hash) + DST_EXTENT_FIELD_NUMBER; + hash = (53 * hash) + getDstExtent().hashCode(); } - if (hasSrcSha256Hash()) { - hash = (37 * hash) + SRC_SHA256_HASH_FIELD_NUMBER; - hash = (53 * hash) + getSrcSha256Hash().hashCode(); + if (hasSrcOffset()) { + hash = (37 * hash) + SRC_OFFSET_FIELD_NUMBER; + hash = (53 * hash) + getSrcOffset(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom(byte[] data) + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom(java.io.InputStream input) + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseDelimitedFrom(java.io.InputStream input) + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseDelimitedFrom( + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.InstallOperation parseFrom( + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -5694,7 +5984,7 @@ public final class UpdateMetadata { public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.InstallOperation prototype) { + public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.CowMergeOperation prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -5710,26 +6000,35 @@ public final class UpdateMetadata { return builder; } /** - * Protobuf type {@code chromeos_update_engine.InstallOperation} - */ - public static final class Builder extends + *
+     * Hints to VAB snapshot to skip writing some blocks if these blocks are
+     * identical to the ones on the source image. The src & dst extents for each
+     * CowMergeOperation should be contiguous, and they're a subset of an OTA
+     * InstallOperation.
+     * During merge time, we need to follow the pre-computed sequence to avoid
+     * read after write, similar to the inplace update schema.
+     * 
+ * + * Protobuf type {@code chromeos_update_engine.CowMergeOperation} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:chromeos_update_engine.InstallOperation) - chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder { + // @@protoc_insertion_point(builder_implements:chromeos_update_engine.CowMergeOperation) + chromeos_update_engine.UpdateMetadata.CowMergeOperationOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_InstallOperation_descriptor; + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_CowMergeOperation_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_InstallOperation_fieldAccessorTable + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_CowMergeOperation_fieldAccessorTable .ensureFieldAccessorsInitialized( - chromeos_update_engine.UpdateMetadata.InstallOperation.class, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder.class); + chromeos_update_engine.UpdateMetadata.CowMergeOperation.class, chromeos_update_engine.UpdateMetadata.CowMergeOperation.Builder.class); } - // Construct using chromeos_update_engine.UpdateMetadata.InstallOperation.newBuilder() + // Construct using chromeos_update_engine.UpdateMetadata.CowMergeOperation.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -5742,56 +6041,43 @@ public final class UpdateMetadata { private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3 .alwaysUseFieldBuilders) { - getSrcExtentsFieldBuilder(); - getDstExtentsFieldBuilder(); + getSrcExtentFieldBuilder(); + getDstExtentFieldBuilder(); } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; type_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - dataOffset_ = 0L; - bitField0_ = (bitField0_ & ~0x00000002); - dataLength_ = 0L; - bitField0_ = (bitField0_ & ~0x00000004); - if (srcExtentsBuilder_ == null) { - srcExtents_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000008); - } else { - srcExtentsBuilder_.clear(); + srcExtent_ = null; + if (srcExtentBuilder_ != null) { + srcExtentBuilder_.dispose(); + srcExtentBuilder_ = null; } - srcLength_ = 0L; - bitField0_ = (bitField0_ & ~0x00000010); - if (dstExtentsBuilder_ == null) { - dstExtents_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000020); - } else { - dstExtentsBuilder_.clear(); + dstExtent_ = null; + if (dstExtentBuilder_ != null) { + dstExtentBuilder_.dispose(); + dstExtentBuilder_ = null; } - dstLength_ = 0L; - bitField0_ = (bitField0_ & ~0x00000040); - dataSha256Hash_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000080); - srcSha256Hash_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000100); + srcOffset_ = 0; return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_InstallOperation_descriptor; + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_CowMergeOperation_descriptor; } @java.lang.Override - public chromeos_update_engine.UpdateMetadata.InstallOperation getDefaultInstanceForType() { - return chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance(); + public chromeos_update_engine.UpdateMetadata.CowMergeOperation getDefaultInstanceForType() { + return chromeos_update_engine.UpdateMetadata.CowMergeOperation.getDefaultInstance(); } @java.lang.Override - public chromeos_update_engine.UpdateMetadata.InstallOperation build() { - chromeos_update_engine.UpdateMetadata.InstallOperation result = buildPartial(); + public chromeos_update_engine.UpdateMetadata.CowMergeOperation build() { + chromeos_update_engine.UpdateMetadata.CowMergeOperation result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -5799,59 +6085,37 @@ public final class UpdateMetadata { } @java.lang.Override - public chromeos_update_engine.UpdateMetadata.InstallOperation buildPartial() { - chromeos_update_engine.UpdateMetadata.InstallOperation result = new chromeos_update_engine.UpdateMetadata.InstallOperation(this); + public chromeos_update_engine.UpdateMetadata.CowMergeOperation buildPartial() { + chromeos_update_engine.UpdateMetadata.CowMergeOperation result = new chromeos_update_engine.UpdateMetadata.CowMergeOperation(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(chromeos_update_engine.UpdateMetadata.CowMergeOperation result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { + result.type_ = type_; to_bitField0_ |= 0x00000001; } - result.type_ = type_; if (((from_bitField0_ & 0x00000002) != 0)) { - result.dataOffset_ = dataOffset_; + result.srcExtent_ = srcExtentBuilder_ == null + ? srcExtent_ + : srcExtentBuilder_.build(); to_bitField0_ |= 0x00000002; } if (((from_bitField0_ & 0x00000004) != 0)) { - result.dataLength_ = dataLength_; + result.dstExtent_ = dstExtentBuilder_ == null + ? dstExtent_ + : dstExtentBuilder_.build(); to_bitField0_ |= 0x00000004; } - if (srcExtentsBuilder_ == null) { - if (((bitField0_ & 0x00000008) != 0)) { - srcExtents_ = java.util.Collections.unmodifiableList(srcExtents_); - bitField0_ = (bitField0_ & ~0x00000008); - } - result.srcExtents_ = srcExtents_; - } else { - result.srcExtents_ = srcExtentsBuilder_.build(); - } - if (((from_bitField0_ & 0x00000010) != 0)) { - result.srcLength_ = srcLength_; + if (((from_bitField0_ & 0x00000008) != 0)) { + result.srcOffset_ = srcOffset_; to_bitField0_ |= 0x00000008; } - if (dstExtentsBuilder_ == null) { - if (((bitField0_ & 0x00000020) != 0)) { - dstExtents_ = java.util.Collections.unmodifiableList(dstExtents_); - bitField0_ = (bitField0_ & ~0x00000020); - } - result.dstExtents_ = dstExtents_; - } else { - result.dstExtents_ = dstExtentsBuilder_.build(); - } - if (((from_bitField0_ & 0x00000040) != 0)) { - result.dstLength_ = dstLength_; - to_bitField0_ |= 0x00000010; - } - if (((from_bitField0_ & 0x00000080) != 0)) { - to_bitField0_ |= 0x00000020; - } - result.dataSha256Hash_ = dataSha256Hash_; - if (((from_bitField0_ & 0x00000100) != 0)) { - to_bitField0_ |= 0x00000040; - } - result.srcSha256Hash_ = srcSha256Hash_; - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; + result.bitField0_ |= to_bitField0_; } @java.lang.Override @@ -5888,99 +6152,35 @@ public final class UpdateMetadata { } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof chromeos_update_engine.UpdateMetadata.InstallOperation) { - return mergeFrom((chromeos_update_engine.UpdateMetadata.InstallOperation)other); + if (other instanceof chromeos_update_engine.UpdateMetadata.CowMergeOperation) { + return mergeFrom((chromeos_update_engine.UpdateMetadata.CowMergeOperation)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.InstallOperation other) { - if (other == chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance()) return this; + public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.CowMergeOperation other) { + if (other == chromeos_update_engine.UpdateMetadata.CowMergeOperation.getDefaultInstance()) return this; if (other.hasType()) { setType(other.getType()); } - if (other.hasDataOffset()) { - setDataOffset(other.getDataOffset()); - } - if (other.hasDataLength()) { - setDataLength(other.getDataLength()); - } - if (srcExtentsBuilder_ == null) { - if (!other.srcExtents_.isEmpty()) { - if (srcExtents_.isEmpty()) { - srcExtents_ = other.srcExtents_; - bitField0_ = (bitField0_ & ~0x00000008); - } else { - ensureSrcExtentsIsMutable(); - srcExtents_.addAll(other.srcExtents_); - } - onChanged(); - } - } else { - if (!other.srcExtents_.isEmpty()) { - if (srcExtentsBuilder_.isEmpty()) { - srcExtentsBuilder_.dispose(); - srcExtentsBuilder_ = null; - srcExtents_ = other.srcExtents_; - bitField0_ = (bitField0_ & ~0x00000008); - srcExtentsBuilder_ = - com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getSrcExtentsFieldBuilder() : null; - } else { - srcExtentsBuilder_.addAllMessages(other.srcExtents_); - } - } - } - if (other.hasSrcLength()) { - setSrcLength(other.getSrcLength()); - } - if (dstExtentsBuilder_ == null) { - if (!other.dstExtents_.isEmpty()) { - if (dstExtents_.isEmpty()) { - dstExtents_ = other.dstExtents_; - bitField0_ = (bitField0_ & ~0x00000020); - } else { - ensureDstExtentsIsMutable(); - dstExtents_.addAll(other.dstExtents_); - } - onChanged(); - } - } else { - if (!other.dstExtents_.isEmpty()) { - if (dstExtentsBuilder_.isEmpty()) { - dstExtentsBuilder_.dispose(); - dstExtentsBuilder_ = null; - dstExtents_ = other.dstExtents_; - bitField0_ = (bitField0_ & ~0x00000020); - dstExtentsBuilder_ = - com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getDstExtentsFieldBuilder() : null; - } else { - dstExtentsBuilder_.addAllMessages(other.dstExtents_); - } - } - } - if (other.hasDstLength()) { - setDstLength(other.getDstLength()); + if (other.hasSrcExtent()) { + mergeSrcExtent(other.getSrcExtent()); } - if (other.hasDataSha256Hash()) { - setDataSha256Hash(other.getDataSha256Hash()); + if (other.hasDstExtent()) { + mergeDstExtent(other.getDstExtent()); } - if (other.hasSrcSha256Hash()) { - setSrcSha256Hash(other.getSrcSha256Hash()); + if (other.hasSrcOffset()) { + setSrcOffset(other.getSrcOffset()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @java.lang.Override public final boolean isInitialized() { - if (!hasType()) { - return false; - } return true; } @@ -5989,45 +6189,88 @@ public final class UpdateMetadata { com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - chromeos_update_engine.UpdateMetadata.InstallOperation parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + int tmpRaw = input.readEnum(); + chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type tmpValue = + chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type.forNumber(tmpRaw); + if (tmpValue == null) { + mergeUnknownVarintField(1, tmpRaw); + } else { + type_ = tmpRaw; + bitField0_ |= 0x00000001; + } + break; + } // case 8 + case 18: { + input.readMessage( + getSrcExtentFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: { + input.readMessage( + getDstExtentFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000004; + break; + } // case 26 + case 32: { + srcOffset_ = input.readUInt32(); + bitField0_ |= 0x00000008; + break; + } // case 32 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (chromeos_update_engine.UpdateMetadata.InstallOperation) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } + onChanged(); + } // finally return this; } private int bitField0_; private int type_ = 0; /** - * required .chromeos_update_engine.InstallOperation.Type type = 1; + * optional .chromeos_update_engine.CowMergeOperation.Type type = 1; * @return Whether the type field is set. */ @java.lang.Override public boolean hasType() { return ((bitField0_ & 0x00000001) != 0); } /** - * required .chromeos_update_engine.InstallOperation.Type type = 1; + * optional .chromeos_update_engine.CowMergeOperation.Type type = 1; * @return The type. */ @java.lang.Override - public chromeos_update_engine.UpdateMetadata.InstallOperation.Type getType() { - @SuppressWarnings("deprecation") - chromeos_update_engine.UpdateMetadata.InstallOperation.Type result = chromeos_update_engine.UpdateMetadata.InstallOperation.Type.valueOf(type_); - return result == null ? chromeos_update_engine.UpdateMetadata.InstallOperation.Type.REPLACE : result; + public chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type getType() { + chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type result = chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type.forNumber(type_); + return result == null ? chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type.COW_COPY : result; } /** - * required .chromeos_update_engine.InstallOperation.Type type = 1; + * optional .chromeos_update_engine.CowMergeOperation.Type type = 1; * @param value The type to set. * @return This builder for chaining. */ - public Builder setType(chromeos_update_engine.UpdateMetadata.InstallOperation.Type value) { + public Builder setType(chromeos_update_engine.UpdateMetadata.CowMergeOperation.Type value) { if (value == null) { throw new NullPointerException(); } @@ -6037,7 +6280,7 @@ public final class UpdateMetadata { return this; } /** - * required .chromeos_update_engine.InstallOperation.Type type = 1; + * optional .chromeos_update_engine.CowMergeOperation.Type type = 1; * @return This builder for chaining. */ public Builder clearType() { @@ -6047,997 +6290,382 @@ public final class UpdateMetadata { return this; } - private long dataOffset_ ; + private chromeos_update_engine.UpdateMetadata.Extent srcExtent_; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> srcExtentBuilder_; /** - *
-       * Only minor version 6 or newer support 64 bits |data_offset| and
-       * |data_length|, older client will read them as uint32.
-       * The offset into the delta file (after the protobuf)
-       * where the data (if any) is stored
-       * 
- * - * optional uint64 data_offset = 2; - * @return Whether the dataOffset field is set. + * optional .chromeos_update_engine.Extent src_extent = 2; + * @return Whether the srcExtent field is set. */ - @java.lang.Override - public boolean hasDataOffset() { + public boolean hasSrcExtent() { return ((bitField0_ & 0x00000002) != 0); } /** - *
-       * Only minor version 6 or newer support 64 bits |data_offset| and
-       * |data_length|, older client will read them as uint32.
-       * The offset into the delta file (after the protobuf)
-       * where the data (if any) is stored
-       * 
- * - * optional uint64 data_offset = 2; - * @return The dataOffset. + * optional .chromeos_update_engine.Extent src_extent = 2; + * @return The srcExtent. */ - @java.lang.Override - public long getDataOffset() { - return dataOffset_; + public chromeos_update_engine.UpdateMetadata.Extent getSrcExtent() { + if (srcExtentBuilder_ == null) { + return srcExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : srcExtent_; + } else { + return srcExtentBuilder_.getMessage(); + } } /** - *
-       * Only minor version 6 or newer support 64 bits |data_offset| and
-       * |data_length|, older client will read them as uint32.
-       * The offset into the delta file (after the protobuf)
-       * where the data (if any) is stored
-       * 
- * - * optional uint64 data_offset = 2; - * @param value The dataOffset to set. - * @return This builder for chaining. + * optional .chromeos_update_engine.Extent src_extent = 2; */ - public Builder setDataOffset(long value) { + public Builder setSrcExtent(chromeos_update_engine.UpdateMetadata.Extent value) { + if (srcExtentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + srcExtent_ = value; + } else { + srcExtentBuilder_.setMessage(value); + } bitField0_ |= 0x00000002; - dataOffset_ = value; onChanged(); return this; } /** - *
-       * Only minor version 6 or newer support 64 bits |data_offset| and
-       * |data_length|, older client will read them as uint32.
-       * The offset into the delta file (after the protobuf)
-       * where the data (if any) is stored
-       * 
- * - * optional uint64 data_offset = 2; - * @return This builder for chaining. + * optional .chromeos_update_engine.Extent src_extent = 2; */ - public Builder clearDataOffset() { - bitField0_ = (bitField0_ & ~0x00000002); - dataOffset_ = 0L; + public Builder setSrcExtent( + chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (srcExtentBuilder_ == null) { + srcExtent_ = builderForValue.build(); + } else { + srcExtentBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; onChanged(); return this; } - - private long dataLength_ ; /** - *
-       * The length of the data in the delta file
-       * 
- * - * optional uint64 data_length = 3; - * @return Whether the dataLength field is set. + * optional .chromeos_update_engine.Extent src_extent = 2; */ - @java.lang.Override - public boolean hasDataLength() { - return ((bitField0_ & 0x00000004) != 0); - } - /** - *
-       * The length of the data in the delta file
-       * 
- * - * optional uint64 data_length = 3; - * @return The dataLength. - */ - @java.lang.Override - public long getDataLength() { - return dataLength_; + public Builder mergeSrcExtent(chromeos_update_engine.UpdateMetadata.Extent value) { + if (srcExtentBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && + srcExtent_ != null && + srcExtent_ != chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()) { + getSrcExtentBuilder().mergeFrom(value); + } else { + srcExtent_ = value; + } + } else { + srcExtentBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; } /** - *
-       * The length of the data in the delta file
-       * 
- * - * optional uint64 data_length = 3; - * @param value The dataLength to set. - * @return This builder for chaining. + * optional .chromeos_update_engine.Extent src_extent = 2; */ - public Builder setDataLength(long value) { - bitField0_ |= 0x00000004; - dataLength_ = value; + public Builder clearSrcExtent() { + bitField0_ = (bitField0_ & ~0x00000002); + srcExtent_ = null; + if (srcExtentBuilder_ != null) { + srcExtentBuilder_.dispose(); + srcExtentBuilder_ = null; + } onChanged(); return this; } /** - *
-       * The length of the data in the delta file
-       * 
- * - * optional uint64 data_length = 3; - * @return This builder for chaining. + * optional .chromeos_update_engine.Extent src_extent = 2; */ - public Builder clearDataLength() { - bitField0_ = (bitField0_ & ~0x00000004); - dataLength_ = 0L; + public chromeos_update_engine.UpdateMetadata.Extent.Builder getSrcExtentBuilder() { + bitField0_ |= 0x00000002; onChanged(); - return this; - } - - private java.util.List srcExtents_ = - java.util.Collections.emptyList(); - private void ensureSrcExtentsIsMutable() { - if (!((bitField0_ & 0x00000008) != 0)) { - srcExtents_ = new java.util.ArrayList(srcExtents_); - bitField0_ |= 0x00000008; - } + return getSrcExtentFieldBuilder().getBuilder(); } - - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> srcExtentsBuilder_; - /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent src_extent = 2; */ - public java.util.List getSrcExtentsList() { - if (srcExtentsBuilder_ == null) { - return java.util.Collections.unmodifiableList(srcExtents_); + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getSrcExtentOrBuilder() { + if (srcExtentBuilder_ != null) { + return srcExtentBuilder_.getMessageOrBuilder(); } else { - return srcExtentsBuilder_.getMessageList(); + return srcExtent_ == null ? + chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : srcExtent_; } } /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent src_extent = 2; */ - public int getSrcExtentsCount() { - if (srcExtentsBuilder_ == null) { - return srcExtents_.size(); - } else { - return srcExtentsBuilder_.getCount(); + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> + getSrcExtentFieldBuilder() { + if (srcExtentBuilder_ == null) { + srcExtentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( + getSrcExtent(), + getParentForChildren(), + isClean()); + srcExtent_ = null; } + return srcExtentBuilder_; } + + private chromeos_update_engine.UpdateMetadata.Extent dstExtent_; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> dstExtentBuilder_; /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent dst_extent = 3; + * @return Whether the dstExtent field is set. */ - public chromeos_update_engine.UpdateMetadata.Extent getSrcExtents(int index) { - if (srcExtentsBuilder_ == null) { - return srcExtents_.get(index); + public boolean hasDstExtent() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * optional .chromeos_update_engine.Extent dst_extent = 3; + * @return The dstExtent. + */ + public chromeos_update_engine.UpdateMetadata.Extent getDstExtent() { + if (dstExtentBuilder_ == null) { + return dstExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : dstExtent_; } else { - return srcExtentsBuilder_.getMessage(index); + return dstExtentBuilder_.getMessage(); } } /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent dst_extent = 3; */ - public Builder setSrcExtents( - int index, chromeos_update_engine.UpdateMetadata.Extent value) { - if (srcExtentsBuilder_ == null) { + public Builder setDstExtent(chromeos_update_engine.UpdateMetadata.Extent value) { + if (dstExtentBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureSrcExtentsIsMutable(); - srcExtents_.set(index, value); - onChanged(); + dstExtent_ = value; } else { - srcExtentsBuilder_.setMessage(index, value); + dstExtentBuilder_.setMessage(value); } + bitField0_ |= 0x00000004; + onChanged(); return this; } /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent dst_extent = 3; */ - public Builder setSrcExtents( - int index, chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { - if (srcExtentsBuilder_ == null) { - ensureSrcExtentsIsMutable(); - srcExtents_.set(index, builderForValue.build()); - onChanged(); + public Builder setDstExtent( + chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (dstExtentBuilder_ == null) { + dstExtent_ = builderForValue.build(); } else { - srcExtentsBuilder_.setMessage(index, builderForValue.build()); + dstExtentBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000004; + onChanged(); return this; } /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent dst_extent = 3; */ - public Builder addSrcExtents(chromeos_update_engine.UpdateMetadata.Extent value) { - if (srcExtentsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); + public Builder mergeDstExtent(chromeos_update_engine.UpdateMetadata.Extent value) { + if (dstExtentBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0) && + dstExtent_ != null && + dstExtent_ != chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()) { + getDstExtentBuilder().mergeFrom(value); + } else { + dstExtent_ = value; } - ensureSrcExtentsIsMutable(); - srcExtents_.add(value); - onChanged(); } else { - srcExtentsBuilder_.addMessage(value); + dstExtentBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000004; + onChanged(); return this; } /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent dst_extent = 3; */ - public Builder addSrcExtents( - int index, chromeos_update_engine.UpdateMetadata.Extent value) { - if (srcExtentsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureSrcExtentsIsMutable(); - srcExtents_.add(index, value); - onChanged(); - } else { - srcExtentsBuilder_.addMessage(index, value); + public Builder clearDstExtent() { + bitField0_ = (bitField0_ & ~0x00000004); + dstExtent_ = null; + if (dstExtentBuilder_ != null) { + dstExtentBuilder_.dispose(); + dstExtentBuilder_ = null; } + onChanged(); return this; } /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent dst_extent = 3; */ - public Builder addSrcExtents( - chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { - if (srcExtentsBuilder_ == null) { - ensureSrcExtentsIsMutable(); - srcExtents_.add(builderForValue.build()); - onChanged(); - } else { - srcExtentsBuilder_.addMessage(builderForValue.build()); - } - return this; + public chromeos_update_engine.UpdateMetadata.Extent.Builder getDstExtentBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getDstExtentFieldBuilder().getBuilder(); } /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent dst_extent = 3; */ - public Builder addSrcExtents( - int index, chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { - if (srcExtentsBuilder_ == null) { - ensureSrcExtentsIsMutable(); - srcExtents_.add(index, builderForValue.build()); - onChanged(); + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getDstExtentOrBuilder() { + if (dstExtentBuilder_ != null) { + return dstExtentBuilder_.getMessageOrBuilder(); } else { - srcExtentsBuilder_.addMessage(index, builderForValue.build()); + return dstExtent_ == null ? + chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : dstExtent_; } - return this; } /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional .chromeos_update_engine.Extent dst_extent = 3; */ - public Builder addAllSrcExtents( - java.lang.Iterable values) { - if (srcExtentsBuilder_ == null) { - ensureSrcExtentsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, srcExtents_); - onChanged(); - } else { - srcExtentsBuilder_.addAllMessages(values); + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> + getDstExtentFieldBuilder() { + if (dstExtentBuilder_ == null) { + dstExtentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( + getDstExtent(), + getParentForChildren(), + isClean()); + dstExtent_ = null; } - return this; + return dstExtentBuilder_; } + + private int srcOffset_ ; /** *
-       * Ordered list of extents that are read from (if any) and written to.
+       * For COW_XOR, source location might be unaligned, so this field is in range
+       * [0, block_size), representing how much should the src_extent shift toward
+       * larger block number. If this field is non-zero, then src_extent will
+       * include 1 extra block in the end, as the merge op actually references the
+       * first |src_offset| bytes of that extra block. For example, if |dst_extent|
+       * is [10, 15], |src_offset| is 500, then src_extent might look like [25, 31].
+       * Note that |src_extent| contains 1 extra block than the |dst_extent|.
        * 
* - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional uint32 src_offset = 4; + * @return Whether the srcOffset field is set. */ - public Builder clearSrcExtents() { - if (srcExtentsBuilder_ == null) { - srcExtents_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000008); - onChanged(); - } else { - srcExtentsBuilder_.clear(); - } - return this; + @java.lang.Override + public boolean hasSrcOffset() { + return ((bitField0_ & 0x00000008) != 0); } /** *
-       * Ordered list of extents that are read from (if any) and written to.
+       * For COW_XOR, source location might be unaligned, so this field is in range
+       * [0, block_size), representing how much should the src_extent shift toward
+       * larger block number. If this field is non-zero, then src_extent will
+       * include 1 extra block in the end, as the merge op actually references the
+       * first |src_offset| bytes of that extra block. For example, if |dst_extent|
+       * is [10, 15], |src_offset| is 500, then src_extent might look like [25, 31].
+       * Note that |src_extent| contains 1 extra block than the |dst_extent|.
        * 
* - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional uint32 src_offset = 4; + * @return The srcOffset. */ - public Builder removeSrcExtents(int index) { - if (srcExtentsBuilder_ == null) { - ensureSrcExtentsIsMutable(); - srcExtents_.remove(index); - onChanged(); - } else { - srcExtentsBuilder_.remove(index); - } - return this; + @java.lang.Override + public int getSrcOffset() { + return srcOffset_; } /** *
-       * Ordered list of extents that are read from (if any) and written to.
+       * For COW_XOR, source location might be unaligned, so this field is in range
+       * [0, block_size), representing how much should the src_extent shift toward
+       * larger block number. If this field is non-zero, then src_extent will
+       * include 1 extra block in the end, as the merge op actually references the
+       * first |src_offset| bytes of that extra block. For example, if |dst_extent|
+       * is [10, 15], |src_offset| is 500, then src_extent might look like [25, 31].
+       * Note that |src_extent| contains 1 extra block than the |dst_extent|.
        * 
* - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional uint32 src_offset = 4; + * @param value The srcOffset to set. + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.Extent.Builder getSrcExtentsBuilder( - int index) { - return getSrcExtentsFieldBuilder().getBuilder(index); + public Builder setSrcOffset(int value) { + + srcOffset_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; } /** *
-       * Ordered list of extents that are read from (if any) and written to.
+       * For COW_XOR, source location might be unaligned, so this field is in range
+       * [0, block_size), representing how much should the src_extent shift toward
+       * larger block number. If this field is non-zero, then src_extent will
+       * include 1 extra block in the end, as the merge op actually references the
+       * first |src_offset| bytes of that extra block. For example, if |dst_extent|
+       * is [10, 15], |src_offset| is 500, then src_extent might look like [25, 31].
+       * Note that |src_extent| contains 1 extra block than the |dst_extent|.
        * 
* - * repeated .chromeos_update_engine.Extent src_extents = 4; + * optional uint32 src_offset = 4; + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getSrcExtentsOrBuilder( - int index) { - if (srcExtentsBuilder_ == null) { - return srcExtents_.get(index); } else { - return srcExtentsBuilder_.getMessageOrBuilder(index); - } + public Builder clearSrcOffset() { + bitField0_ = (bitField0_ & ~0x00000008); + srcOffset_ = 0; + onChanged(); + return this; } - /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; - */ - public java.util.List - getSrcExtentsOrBuilderList() { - if (srcExtentsBuilder_ != null) { - return srcExtentsBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(srcExtents_); - } - } - /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; - */ - public chromeos_update_engine.UpdateMetadata.Extent.Builder addSrcExtentsBuilder() { - return getSrcExtentsFieldBuilder().addBuilder( - chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()); - } - /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; - */ - public chromeos_update_engine.UpdateMetadata.Extent.Builder addSrcExtentsBuilder( - int index) { - return getSrcExtentsFieldBuilder().addBuilder( - index, chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()); - } - /** - *
-       * Ordered list of extents that are read from (if any) and written to.
-       * 
- * - * repeated .chromeos_update_engine.Extent src_extents = 4; - */ - public java.util.List - getSrcExtentsBuilderList() { - return getSrcExtentsFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> - getSrcExtentsFieldBuilder() { - if (srcExtentsBuilder_ == null) { - srcExtentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( - srcExtents_, - ((bitField0_ & 0x00000008) != 0), - getParentForChildren(), - isClean()); - srcExtents_ = null; - } - return srcExtentsBuilder_; - } - - private long srcLength_ ; - /** - *
-       * Byte length of src, equal to the number of blocks in src_extents *
-       * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
-       * pass that external program the number of bytes to read from the blocks we
-       * pass it.  This is not used in any other operation.
-       * 
- * - * optional uint64 src_length = 5; - * @return Whether the srcLength field is set. - */ @java.lang.Override - public boolean hasSrcLength() { - return ((bitField0_ & 0x00000010) != 0); + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); } - /** - *
-       * Byte length of src, equal to the number of blocks in src_extents *
-       * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
-       * pass that external program the number of bytes to read from the blocks we
-       * pass it.  This is not used in any other operation.
-       * 
- * - * optional uint64 src_length = 5; - * @return The srcLength. - */ + @java.lang.Override - public long getSrcLength() { - return srcLength_; - } - /** - *
-       * Byte length of src, equal to the number of blocks in src_extents *
-       * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
-       * pass that external program the number of bytes to read from the blocks we
-       * pass it.  This is not used in any other operation.
-       * 
- * - * optional uint64 src_length = 5; - * @param value The srcLength to set. - * @return This builder for chaining. - */ - public Builder setSrcLength(long value) { - bitField0_ |= 0x00000010; - srcLength_ = value; - onChanged(); - return this; - } - /** - *
-       * Byte length of src, equal to the number of blocks in src_extents *
-       * block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
-       * pass that external program the number of bytes to read from the blocks we
-       * pass it.  This is not used in any other operation.
-       * 
- * - * optional uint64 src_length = 5; - * @return This builder for chaining. - */ - public Builder clearSrcLength() { - bitField0_ = (bitField0_ & ~0x00000010); - srcLength_ = 0L; - onChanged(); - return this; + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); } - private java.util.List dstExtents_ = - java.util.Collections.emptyList(); - private void ensureDstExtentsIsMutable() { - if (!((bitField0_ & 0x00000020) != 0)) { - dstExtents_ = new java.util.ArrayList(dstExtents_); - bitField0_ |= 0x00000020; - } - } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> dstExtentsBuilder_; + // @@protoc_insertion_point(builder_scope:chromeos_update_engine.CowMergeOperation) + } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public java.util.List getDstExtentsList() { - if (dstExtentsBuilder_ == null) { - return java.util.Collections.unmodifiableList(dstExtents_); - } else { - return dstExtentsBuilder_.getMessageList(); - } - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public int getDstExtentsCount() { - if (dstExtentsBuilder_ == null) { - return dstExtents_.size(); - } else { - return dstExtentsBuilder_.getCount(); - } - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public chromeos_update_engine.UpdateMetadata.Extent getDstExtents(int index) { - if (dstExtentsBuilder_ == null) { - return dstExtents_.get(index); - } else { - return dstExtentsBuilder_.getMessage(index); - } - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public Builder setDstExtents( - int index, chromeos_update_engine.UpdateMetadata.Extent value) { - if (dstExtentsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureDstExtentsIsMutable(); - dstExtents_.set(index, value); - onChanged(); - } else { - dstExtentsBuilder_.setMessage(index, value); - } - return this; - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public Builder setDstExtents( - int index, chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { - if (dstExtentsBuilder_ == null) { - ensureDstExtentsIsMutable(); - dstExtents_.set(index, builderForValue.build()); - onChanged(); - } else { - dstExtentsBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public Builder addDstExtents(chromeos_update_engine.UpdateMetadata.Extent value) { - if (dstExtentsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureDstExtentsIsMutable(); - dstExtents_.add(value); - onChanged(); - } else { - dstExtentsBuilder_.addMessage(value); - } - return this; - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public Builder addDstExtents( - int index, chromeos_update_engine.UpdateMetadata.Extent value) { - if (dstExtentsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureDstExtentsIsMutable(); - dstExtents_.add(index, value); - onChanged(); - } else { - dstExtentsBuilder_.addMessage(index, value); - } - return this; - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public Builder addDstExtents( - chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { - if (dstExtentsBuilder_ == null) { - ensureDstExtentsIsMutable(); - dstExtents_.add(builderForValue.build()); - onChanged(); - } else { - dstExtentsBuilder_.addMessage(builderForValue.build()); + // @@protoc_insertion_point(class_scope:chromeos_update_engine.CowMergeOperation) + private static final chromeos_update_engine.UpdateMetadata.CowMergeOperation DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.CowMergeOperation(); + } + + public static chromeos_update_engine.UpdateMetadata.CowMergeOperation getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CowMergeOperation parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); } - return this; - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public Builder addDstExtents( - int index, chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { - if (dstExtentsBuilder_ == null) { - ensureDstExtentsIsMutable(); - dstExtents_.add(index, builderForValue.build()); - onChanged(); - } else { - dstExtentsBuilder_.addMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public Builder addAllDstExtents( - java.lang.Iterable values) { - if (dstExtentsBuilder_ == null) { - ensureDstExtentsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, dstExtents_); - onChanged(); - } else { - dstExtentsBuilder_.addAllMessages(values); - } - return this; - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public Builder clearDstExtents() { - if (dstExtentsBuilder_ == null) { - dstExtents_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000020); - onChanged(); - } else { - dstExtentsBuilder_.clear(); - } - return this; - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public Builder removeDstExtents(int index) { - if (dstExtentsBuilder_ == null) { - ensureDstExtentsIsMutable(); - dstExtents_.remove(index); - onChanged(); - } else { - dstExtentsBuilder_.remove(index); - } - return this; - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public chromeos_update_engine.UpdateMetadata.Extent.Builder getDstExtentsBuilder( - int index) { - return getDstExtentsFieldBuilder().getBuilder(index); - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getDstExtentsOrBuilder( - int index) { - if (dstExtentsBuilder_ == null) { - return dstExtents_.get(index); } else { - return dstExtentsBuilder_.getMessageOrBuilder(index); - } - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public java.util.List - getDstExtentsOrBuilderList() { - if (dstExtentsBuilder_ != null) { - return dstExtentsBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(dstExtents_); - } - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public chromeos_update_engine.UpdateMetadata.Extent.Builder addDstExtentsBuilder() { - return getDstExtentsFieldBuilder().addBuilder( - chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()); - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public chromeos_update_engine.UpdateMetadata.Extent.Builder addDstExtentsBuilder( - int index) { - return getDstExtentsFieldBuilder().addBuilder( - index, chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()); - } - /** - * repeated .chromeos_update_engine.Extent dst_extents = 6; - */ - public java.util.List - getDstExtentsBuilderList() { - return getDstExtentsFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> - getDstExtentsFieldBuilder() { - if (dstExtentsBuilder_ == null) { - dstExtentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( - dstExtents_, - ((bitField0_ & 0x00000020) != 0), - getParentForChildren(), - isClean()); - dstExtents_ = null; - } - return dstExtentsBuilder_; + return builder.buildPartial(); } + }; - private long dstLength_ ; - /** - *
-       * Byte length of dst, equal to the number of blocks in dst_extents *
-       * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
-       * operation.
-       * 
- * - * optional uint64 dst_length = 7; - * @return Whether the dstLength field is set. - */ - @java.lang.Override - public boolean hasDstLength() { - return ((bitField0_ & 0x00000040) != 0); - } - /** - *
-       * Byte length of dst, equal to the number of blocks in dst_extents *
-       * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
-       * operation.
-       * 
- * - * optional uint64 dst_length = 7; - * @return The dstLength. - */ - @java.lang.Override - public long getDstLength() { - return dstLength_; - } - /** - *
-       * Byte length of dst, equal to the number of blocks in dst_extents *
-       * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
-       * operation.
-       * 
- * - * optional uint64 dst_length = 7; - * @param value The dstLength to set. - * @return This builder for chaining. - */ - public Builder setDstLength(long value) { - bitField0_ |= 0x00000040; - dstLength_ = value; - onChanged(); - return this; - } - /** - *
-       * Byte length of dst, equal to the number of blocks in dst_extents *
-       * block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
-       * operation.
-       * 
- * - * optional uint64 dst_length = 7; - * @return This builder for chaining. - */ - public Builder clearDstLength() { - bitField0_ = (bitField0_ & ~0x00000040); - dstLength_ = 0L; - onChanged(); - return this; - } + public static com.google.protobuf.Parser parser() { + return PARSER; + } - private com.google.protobuf.ByteString dataSha256Hash_ = com.google.protobuf.ByteString.EMPTY; - /** - *
-       * Optional SHA 256 hash of the blob associated with this operation.
-       * This is used as a primary validation for http-based downloads and
-       * as a defense-in-depth validation for https-based downloads. If
-       * the operation doesn't refer to any blob, this field will have
-       * zero bytes.
-       * 
- * - * optional bytes data_sha256_hash = 8; - * @return Whether the dataSha256Hash field is set. - */ - @java.lang.Override - public boolean hasDataSha256Hash() { - return ((bitField0_ & 0x00000080) != 0); - } - /** - *
-       * Optional SHA 256 hash of the blob associated with this operation.
-       * This is used as a primary validation for http-based downloads and
-       * as a defense-in-depth validation for https-based downloads. If
-       * the operation doesn't refer to any blob, this field will have
-       * zero bytes.
-       * 
- * - * optional bytes data_sha256_hash = 8; - * @return The dataSha256Hash. - */ - @java.lang.Override - public com.google.protobuf.ByteString getDataSha256Hash() { - return dataSha256Hash_; - } - /** - *
-       * Optional SHA 256 hash of the blob associated with this operation.
-       * This is used as a primary validation for http-based downloads and
-       * as a defense-in-depth validation for https-based downloads. If
-       * the operation doesn't refer to any blob, this field will have
-       * zero bytes.
-       * 
- * - * optional bytes data_sha256_hash = 8; - * @param value The dataSha256Hash to set. - * @return This builder for chaining. - */ - public Builder setDataSha256Hash(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000080; - dataSha256Hash_ = value; - onChanged(); - return this; - } - /** - *
-       * Optional SHA 256 hash of the blob associated with this operation.
-       * This is used as a primary validation for http-based downloads and
-       * as a defense-in-depth validation for https-based downloads. If
-       * the operation doesn't refer to any blob, this field will have
-       * zero bytes.
-       * 
- * - * optional bytes data_sha256_hash = 8; - * @return This builder for chaining. - */ - public Builder clearDataSha256Hash() { - bitField0_ = (bitField0_ & ~0x00000080); - dataSha256Hash_ = getDefaultInstance().getDataSha256Hash(); - onChanged(); - return this; - } - - private com.google.protobuf.ByteString srcSha256Hash_ = com.google.protobuf.ByteString.EMPTY; - /** - *
-       * Indicates the SHA 256 hash of the source data referenced in src_extents at
-       * the time of applying the operation. If present, the update_engine daemon
-       * MUST read and verify the source data before applying the operation.
-       * 
- * - * optional bytes src_sha256_hash = 9; - * @return Whether the srcSha256Hash field is set. - */ - @java.lang.Override - public boolean hasSrcSha256Hash() { - return ((bitField0_ & 0x00000100) != 0); - } - /** - *
-       * Indicates the SHA 256 hash of the source data referenced in src_extents at
-       * the time of applying the operation. If present, the update_engine daemon
-       * MUST read and verify the source data before applying the operation.
-       * 
- * - * optional bytes src_sha256_hash = 9; - * @return The srcSha256Hash. - */ - @java.lang.Override - public com.google.protobuf.ByteString getSrcSha256Hash() { - return srcSha256Hash_; - } - /** - *
-       * Indicates the SHA 256 hash of the source data referenced in src_extents at
-       * the time of applying the operation. If present, the update_engine daemon
-       * MUST read and verify the source data before applying the operation.
-       * 
- * - * optional bytes src_sha256_hash = 9; - * @param value The srcSha256Hash to set. - * @return This builder for chaining. - */ - public Builder setSrcSha256Hash(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000100; - srcSha256Hash_ = value; - onChanged(); - return this; - } - /** - *
-       * Indicates the SHA 256 hash of the source data referenced in src_extents at
-       * the time of applying the operation. If present, the update_engine daemon
-       * MUST read and verify the source data before applying the operation.
-       * 
- * - * optional bytes src_sha256_hash = 9; - * @return This builder for chaining. - */ - public Builder clearSrcSha256Hash() { - bitField0_ = (bitField0_ & ~0x00000100); - srcSha256Hash_ = getDefaultInstance().getSrcSha256Hash(); - onChanged(); - return this; - } - @java.lang.Override - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFields(unknownFields); - } - - @java.lang.Override - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.mergeUnknownFields(unknownFields); - } - - - // @@protoc_insertion_point(builder_scope:chromeos_update_engine.InstallOperation) - } - - // @@protoc_insertion_point(class_scope:chromeos_update_engine.InstallOperation) - private static final chromeos_update_engine.UpdateMetadata.InstallOperation DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.InstallOperation(); - } - - public static chromeos_update_engine.UpdateMetadata.InstallOperation getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - @java.lang.Deprecated public static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - @java.lang.Override - public InstallOperation parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new InstallOperation(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @java.lang.Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } @java.lang.Override - public chromeos_update_engine.UpdateMetadata.InstallOperation getDefaultInstanceForType() { + public chromeos_update_engine.UpdateMetadata.CowMergeOperation getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -7188,7 +6816,7 @@ public final class UpdateMetadata { * * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; */ - java.util.List + java.util.List getNewPartitionSignatureList(); /** *
@@ -7222,7 +6850,7 @@ public final class UpdateMetadata {
      *
      * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5;
      */
-    java.util.List
+    java.util.List 
         getNewPartitionSignatureOrBuilderList();
     /**
      * 
@@ -7276,7 +6904,7 @@ public final class UpdateMetadata {
      *
      * repeated .chromeos_update_engine.InstallOperation operations = 8;
      */
-    java.util.List
+    java.util.List 
         getOperationsList();
     /**
      * 
@@ -7307,7 +6935,7 @@ public final class UpdateMetadata {
      *
      * repeated .chromeos_update_engine.InstallOperation operations = 8;
      */
-    java.util.List
+    java.util.List 
         getOperationsOrBuilderList();
     /**
      * 
@@ -7516,6 +7144,118 @@ public final class UpdateMetadata {
      * @return The fecRoots.
      */
     int getFecRoots();
+
+    /**
+     * 
+     * Per-partition version used for downgrade detection, added
+     * as an effort to support partial updates. For most partitions,
+     * this is the build timestamp.
+     * 
+ * + * optional string version = 17; + * @return Whether the version field is set. + */ + boolean hasVersion(); + /** + *
+     * Per-partition version used for downgrade detection, added
+     * as an effort to support partial updates. For most partitions,
+     * this is the build timestamp.
+     * 
+ * + * optional string version = 17; + * @return The version. + */ + java.lang.String getVersion(); + /** + *
+     * Per-partition version used for downgrade detection, added
+     * as an effort to support partial updates. For most partitions,
+     * this is the build timestamp.
+     * 
+ * + * optional string version = 17; + * @return The bytes for version. + */ + com.google.protobuf.ByteString + getVersionBytes(); + + /** + *
+     * A sorted list of CowMergeOperation. When writing cow, we can choose to
+     * skip writing the raw bytes for these extents. During snapshot merge, the
+     * bytes will read from the source partitions instead.
+     * 
+ * + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; + */ + java.util.List + getMergeOperationsList(); + /** + *
+     * A sorted list of CowMergeOperation. When writing cow, we can choose to
+     * skip writing the raw bytes for these extents. During snapshot merge, the
+     * bytes will read from the source partitions instead.
+     * 
+ * + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; + */ + chromeos_update_engine.UpdateMetadata.CowMergeOperation getMergeOperations(int index); + /** + *
+     * A sorted list of CowMergeOperation. When writing cow, we can choose to
+     * skip writing the raw bytes for these extents. During snapshot merge, the
+     * bytes will read from the source partitions instead.
+     * 
+ * + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; + */ + int getMergeOperationsCount(); + /** + *
+     * A sorted list of CowMergeOperation. When writing cow, we can choose to
+     * skip writing the raw bytes for these extents. During snapshot merge, the
+     * bytes will read from the source partitions instead.
+     * 
+ * + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; + */ + java.util.List + getMergeOperationsOrBuilderList(); + /** + *
+     * A sorted list of CowMergeOperation. When writing cow, we can choose to
+     * skip writing the raw bytes for these extents. During snapshot merge, the
+     * bytes will read from the source partitions instead.
+     * 
+ * + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; + */ + chromeos_update_engine.UpdateMetadata.CowMergeOperationOrBuilder getMergeOperationsOrBuilder( + int index); + + /** + *
+     * Estimated size for COW image. This is used by libsnapshot
+     * as a hint. If set to 0, libsnapshot should use alternative
+     * methods for estimating size.
+     * 
+ * + * optional uint64 estimate_cow_size = 19; + * @return Whether the estimateCowSize field is set. + */ + boolean hasEstimateCowSize(); + /** + *
+     * Estimated size for COW image. This is used by libsnapshot
+     * as a hint. If set to 0, libsnapshot should use alternative
+     * methods for estimating size.
+     * 
+ * + * optional uint64 estimate_cow_size = 19; + * @return The estimateCowSize. + */ + long getEstimateCowSize(); } /** *
@@ -7542,6 +7282,8 @@ public final class UpdateMetadata {
       hashTreeAlgorithm_ = "";
       hashTreeSalt_ = com.google.protobuf.ByteString.EMPTY;
       fecRoots_ = 2;
+      version_ = "";
+      mergeOperations_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
@@ -7556,190 +7298,6 @@ public final class UpdateMetadata {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private PartitionUpdate(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000001;
-              partitionName_ = bs;
-              break;
-            }
-            case 16: {
-              bitField0_ |= 0x00000002;
-              runPostinstall_ = input.readBool();
-              break;
-            }
-            case 26: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000004;
-              postinstallPath_ = bs;
-              break;
-            }
-            case 34: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000008;
-              filesystemType_ = bs;
-              break;
-            }
-            case 42: {
-              if (!((mutable_bitField0_ & 0x00000010) != 0)) {
-                newPartitionSignature_ = new java.util.ArrayList();
-                mutable_bitField0_ |= 0x00000010;
-              }
-              newPartitionSignature_.add(
-                  input.readMessage(chromeos_update_engine.UpdateMetadata.Signatures.Signature.PARSER, extensionRegistry));
-              break;
-            }
-            case 50: {
-              chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000010) != 0)) {
-                subBuilder = oldPartitionInfo_.toBuilder();
-              }
-              oldPartitionInfo_ = input.readMessage(chromeos_update_engine.UpdateMetadata.PartitionInfo.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(oldPartitionInfo_);
-                oldPartitionInfo_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000010;
-              break;
-            }
-            case 58: {
-              chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000020) != 0)) {
-                subBuilder = newPartitionInfo_.toBuilder();
-              }
-              newPartitionInfo_ = input.readMessage(chromeos_update_engine.UpdateMetadata.PartitionInfo.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(newPartitionInfo_);
-                newPartitionInfo_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000020;
-              break;
-            }
-            case 66: {
-              if (!((mutable_bitField0_ & 0x00000080) != 0)) {
-                operations_ = new java.util.ArrayList();
-                mutable_bitField0_ |= 0x00000080;
-              }
-              operations_.add(
-                  input.readMessage(chromeos_update_engine.UpdateMetadata.InstallOperation.PARSER, extensionRegistry));
-              break;
-            }
-            case 72: {
-              bitField0_ |= 0x00000040;
-              postinstallOptional_ = input.readBool();
-              break;
-            }
-            case 82: {
-              chromeos_update_engine.UpdateMetadata.Extent.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000080) != 0)) {
-                subBuilder = hashTreeDataExtent_.toBuilder();
-              }
-              hashTreeDataExtent_ = input.readMessage(chromeos_update_engine.UpdateMetadata.Extent.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(hashTreeDataExtent_);
-                hashTreeDataExtent_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000080;
-              break;
-            }
-            case 90: {
-              chromeos_update_engine.UpdateMetadata.Extent.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000100) != 0)) {
-                subBuilder = hashTreeExtent_.toBuilder();
-              }
-              hashTreeExtent_ = input.readMessage(chromeos_update_engine.UpdateMetadata.Extent.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(hashTreeExtent_);
-                hashTreeExtent_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000100;
-              break;
-            }
-            case 98: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000200;
-              hashTreeAlgorithm_ = bs;
-              break;
-            }
-            case 106: {
-              bitField0_ |= 0x00000400;
-              hashTreeSalt_ = input.readBytes();
-              break;
-            }
-            case 114: {
-              chromeos_update_engine.UpdateMetadata.Extent.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000800) != 0)) {
-                subBuilder = fecDataExtent_.toBuilder();
-              }
-              fecDataExtent_ = input.readMessage(chromeos_update_engine.UpdateMetadata.Extent.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(fecDataExtent_);
-                fecDataExtent_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000800;
-              break;
-            }
-            case 122: {
-              chromeos_update_engine.UpdateMetadata.Extent.Builder subBuilder = null;
-              if (((bitField0_ & 0x00001000) != 0)) {
-                subBuilder = fecExtent_.toBuilder();
-              }
-              fecExtent_ = input.readMessage(chromeos_update_engine.UpdateMetadata.Extent.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(fecExtent_);
-                fecExtent_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00001000;
-              break;
-            }
-            case 128: {
-              bitField0_ |= 0x00002000;
-              fecRoots_ = input.readUInt32();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000010) != 0)) {
-          newPartitionSignature_ = java.util.Collections.unmodifiableList(newPartitionSignature_);
-        }
-        if (((mutable_bitField0_ & 0x00000080) != 0)) {
-          operations_ = java.util.Collections.unmodifiableList(operations_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_PartitionUpdate_descriptor;
@@ -7755,7 +7313,8 @@ public final class UpdateMetadata {
 
     private int bitField0_;
     public static final int PARTITION_NAME_FIELD_NUMBER = 1;
-    private volatile java.lang.Object partitionName_;
+    @SuppressWarnings("serial")
+    private volatile java.lang.Object partitionName_ = "";
     /**
      * 
      * A platform-specific name to identify the partition set being updated. For
@@ -7784,7 +7343,7 @@ public final class UpdateMetadata {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -7807,7 +7366,7 @@ public final class UpdateMetadata {
         getPartitionNameBytes() {
       java.lang.Object ref = partitionName_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         partitionName_ = b;
@@ -7818,7 +7377,7 @@ public final class UpdateMetadata {
     }
 
     public static final int RUN_POSTINSTALL_FIELD_NUMBER = 2;
-    private boolean runPostinstall_;
+    private boolean runPostinstall_ = false;
     /**
      * 
      * Whether this partition carries a filesystem with post-install program that
@@ -7849,7 +7408,8 @@ public final class UpdateMetadata {
     }
 
     public static final int POSTINSTALL_PATH_FIELD_NUMBER = 3;
-    private volatile java.lang.Object postinstallPath_;
+    @SuppressWarnings("serial")
+    private volatile java.lang.Object postinstallPath_ = "";
     /**
      * 
      * The path of the executable program to run during the post-install step,
@@ -7882,7 +7442,7 @@ public final class UpdateMetadata {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -7907,7 +7467,7 @@ public final class UpdateMetadata {
         getPostinstallPathBytes() {
       java.lang.Object ref = postinstallPath_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         postinstallPath_ = b;
@@ -7918,7 +7478,8 @@ public final class UpdateMetadata {
     }
 
     public static final int FILESYSTEM_TYPE_FIELD_NUMBER = 4;
-    private volatile java.lang.Object filesystemType_;
+    @SuppressWarnings("serial")
+    private volatile java.lang.Object filesystemType_ = "";
     /**
      * 
      * The filesystem type as passed to the mount(2) syscall when mounting the new
@@ -7951,7 +7512,7 @@ public final class UpdateMetadata {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -7976,7 +7537,7 @@ public final class UpdateMetadata {
         getFilesystemTypeBytes() {
       java.lang.Object ref = filesystemType_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         filesystemType_ = b;
@@ -7987,6 +7548,7 @@ public final class UpdateMetadata {
     }
 
     public static final int NEW_PARTITION_SIGNATURE_FIELD_NUMBER = 5;
+    @SuppressWarnings("serial")
     private java.util.List newPartitionSignature_;
     /**
      * 
@@ -8013,7 +7575,7 @@ public final class UpdateMetadata {
      * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getNewPartitionSignatureOrBuilderList() {
       return newPartitionSignature_;
     }
@@ -8114,6 +7676,7 @@ public final class UpdateMetadata {
     }
 
     public static final int OPERATIONS_FIELD_NUMBER = 8;
+    @SuppressWarnings("serial")
     private java.util.List operations_;
     /**
      * 
@@ -8138,7 +7701,7 @@ public final class UpdateMetadata {
      * repeated .chromeos_update_engine.InstallOperation operations = 8;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getOperationsOrBuilderList() {
       return operations_;
     }
@@ -8184,7 +7747,7 @@ public final class UpdateMetadata {
     }
 
     public static final int POSTINSTALL_OPTIONAL_FIELD_NUMBER = 9;
-    private boolean postinstallOptional_;
+    private boolean postinstallOptional_ = false;
     /**
      * 
      * Whether a failure in the postinstall step for this partition should be
@@ -8212,1440 +7775,3806 @@ public final class UpdateMetadata {
       return postinstallOptional_;
     }
 
-    public static final int HASH_TREE_DATA_EXTENT_FIELD_NUMBER = 10;
-    private chromeos_update_engine.UpdateMetadata.Extent hashTreeDataExtent_;
-    /**
-     * 
-     * The extent for data covered by verity hash tree.
-     * 
- * - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; - * @return Whether the hashTreeDataExtent field is set. - */ - @java.lang.Override - public boolean hasHashTreeDataExtent() { - return ((bitField0_ & 0x00000080) != 0); - } - /** - *
-     * The extent for data covered by verity hash tree.
-     * 
- * - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; - * @return The hashTreeDataExtent. - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.Extent getHashTreeDataExtent() { - return hashTreeDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeDataExtent_; - } - /** - *
-     * The extent for data covered by verity hash tree.
-     * 
- * - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getHashTreeDataExtentOrBuilder() { - return hashTreeDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeDataExtent_; - } + public static final int HASH_TREE_DATA_EXTENT_FIELD_NUMBER = 10; + private chromeos_update_engine.UpdateMetadata.Extent hashTreeDataExtent_; + /** + *
+     * The extent for data covered by verity hash tree.
+     * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + * @return Whether the hashTreeDataExtent field is set. + */ + @java.lang.Override + public boolean hasHashTreeDataExtent() { + return ((bitField0_ & 0x00000080) != 0); + } + /** + *
+     * The extent for data covered by verity hash tree.
+     * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + * @return The hashTreeDataExtent. + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.Extent getHashTreeDataExtent() { + return hashTreeDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeDataExtent_; + } + /** + *
+     * The extent for data covered by verity hash tree.
+     * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getHashTreeDataExtentOrBuilder() { + return hashTreeDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeDataExtent_; + } + + public static final int HASH_TREE_EXTENT_FIELD_NUMBER = 11; + private chromeos_update_engine.UpdateMetadata.Extent hashTreeExtent_; + /** + *
+     * The extent to store verity hash tree.
+     * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + * @return Whether the hashTreeExtent field is set. + */ + @java.lang.Override + public boolean hasHashTreeExtent() { + return ((bitField0_ & 0x00000100) != 0); + } + /** + *
+     * The extent to store verity hash tree.
+     * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + * @return The hashTreeExtent. + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.Extent getHashTreeExtent() { + return hashTreeExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeExtent_; + } + /** + *
+     * The extent to store verity hash tree.
+     * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getHashTreeExtentOrBuilder() { + return hashTreeExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeExtent_; + } + + public static final int HASH_TREE_ALGORITHM_FIELD_NUMBER = 12; + @SuppressWarnings("serial") + private volatile java.lang.Object hashTreeAlgorithm_ = ""; + /** + *
+     * The hash algorithm used in verity hash tree.
+     * 
+ * + * optional string hash_tree_algorithm = 12; + * @return Whether the hashTreeAlgorithm field is set. + */ + @java.lang.Override + public boolean hasHashTreeAlgorithm() { + return ((bitField0_ & 0x00000200) != 0); + } + /** + *
+     * The hash algorithm used in verity hash tree.
+     * 
+ * + * optional string hash_tree_algorithm = 12; + * @return The hashTreeAlgorithm. + */ + @java.lang.Override + public java.lang.String getHashTreeAlgorithm() { + java.lang.Object ref = hashTreeAlgorithm_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + hashTreeAlgorithm_ = s; + } + return s; + } + } + /** + *
+     * The hash algorithm used in verity hash tree.
+     * 
+ * + * optional string hash_tree_algorithm = 12; + * @return The bytes for hashTreeAlgorithm. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getHashTreeAlgorithmBytes() { + java.lang.Object ref = hashTreeAlgorithm_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + hashTreeAlgorithm_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int HASH_TREE_SALT_FIELD_NUMBER = 13; + private com.google.protobuf.ByteString hashTreeSalt_ = com.google.protobuf.ByteString.EMPTY; + /** + *
+     * The salt used for verity hash tree.
+     * 
+ * + * optional bytes hash_tree_salt = 13; + * @return Whether the hashTreeSalt field is set. + */ + @java.lang.Override + public boolean hasHashTreeSalt() { + return ((bitField0_ & 0x00000400) != 0); + } + /** + *
+     * The salt used for verity hash tree.
+     * 
+ * + * optional bytes hash_tree_salt = 13; + * @return The hashTreeSalt. + */ + @java.lang.Override + public com.google.protobuf.ByteString getHashTreeSalt() { + return hashTreeSalt_; + } + + public static final int FEC_DATA_EXTENT_FIELD_NUMBER = 14; + private chromeos_update_engine.UpdateMetadata.Extent fecDataExtent_; + /** + *
+     * The extent for data covered by FEC.
+     * 
+ * + * optional .chromeos_update_engine.Extent fec_data_extent = 14; + * @return Whether the fecDataExtent field is set. + */ + @java.lang.Override + public boolean hasFecDataExtent() { + return ((bitField0_ & 0x00000800) != 0); + } + /** + *
+     * The extent for data covered by FEC.
+     * 
+ * + * optional .chromeos_update_engine.Extent fec_data_extent = 14; + * @return The fecDataExtent. + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.Extent getFecDataExtent() { + return fecDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecDataExtent_; + } + /** + *
+     * The extent for data covered by FEC.
+     * 
+ * + * optional .chromeos_update_engine.Extent fec_data_extent = 14; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getFecDataExtentOrBuilder() { + return fecDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecDataExtent_; + } + + public static final int FEC_EXTENT_FIELD_NUMBER = 15; + private chromeos_update_engine.UpdateMetadata.Extent fecExtent_; + /** + *
+     * The extent to store FEC.
+     * 
+ * + * optional .chromeos_update_engine.Extent fec_extent = 15; + * @return Whether the fecExtent field is set. + */ + @java.lang.Override + public boolean hasFecExtent() { + return ((bitField0_ & 0x00001000) != 0); + } + /** + *
+     * The extent to store FEC.
+     * 
+ * + * optional .chromeos_update_engine.Extent fec_extent = 15; + * @return The fecExtent. + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.Extent getFecExtent() { + return fecExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecExtent_; + } + /** + *
+     * The extent to store FEC.
+     * 
+ * + * optional .chromeos_update_engine.Extent fec_extent = 15; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getFecExtentOrBuilder() { + return fecExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecExtent_; + } + + public static final int FEC_ROOTS_FIELD_NUMBER = 16; + private int fecRoots_ = 2; + /** + *
+     * The number of FEC roots.
+     * 
+ * + * optional uint32 fec_roots = 16 [default = 2]; + * @return Whether the fecRoots field is set. + */ + @java.lang.Override + public boolean hasFecRoots() { + return ((bitField0_ & 0x00002000) != 0); + } + /** + *
+     * The number of FEC roots.
+     * 
+ * + * optional uint32 fec_roots = 16 [default = 2]; + * @return The fecRoots. + */ + @java.lang.Override + public int getFecRoots() { + return fecRoots_; + } + + public static final int VERSION_FIELD_NUMBER = 17; + @SuppressWarnings("serial") + private volatile java.lang.Object version_ = ""; + /** + *
+     * Per-partition version used for downgrade detection, added
+     * as an effort to support partial updates. For most partitions,
+     * this is the build timestamp.
+     * 
+ * + * optional string version = 17; + * @return Whether the version field is set. + */ + @java.lang.Override + public boolean hasVersion() { + return ((bitField0_ & 0x00004000) != 0); + } + /** + *
+     * Per-partition version used for downgrade detection, added
+     * as an effort to support partial updates. For most partitions,
+     * this is the build timestamp.
+     * 
+ * + * optional string version = 17; + * @return The version. + */ + @java.lang.Override + public java.lang.String getVersion() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + version_ = s; + } + return s; + } + } + /** + *
+     * Per-partition version used for downgrade detection, added
+     * as an effort to support partial updates. For most partitions,
+     * this is the build timestamp.
+     * 
+ * + * optional string version = 17; + * @return The bytes for version. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getVersionBytes() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + version_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int MERGE_OPERATIONS_FIELD_NUMBER = 18; + @SuppressWarnings("serial") + private java.util.List mergeOperations_; + /** + *
+     * A sorted list of CowMergeOperation. When writing cow, we can choose to
+     * skip writing the raw bytes for these extents. During snapshot merge, the
+     * bytes will read from the source partitions instead.
+     * 
+ * + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; + */ + @java.lang.Override + public java.util.List getMergeOperationsList() { + return mergeOperations_; + } + /** + *
+     * A sorted list of CowMergeOperation. When writing cow, we can choose to
+     * skip writing the raw bytes for these extents. During snapshot merge, the
+     * bytes will read from the source partitions instead.
+     * 
+ * + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; + */ + @java.lang.Override + public java.util.List + getMergeOperationsOrBuilderList() { + return mergeOperations_; + } + /** + *
+     * A sorted list of CowMergeOperation. When writing cow, we can choose to
+     * skip writing the raw bytes for these extents. During snapshot merge, the
+     * bytes will read from the source partitions instead.
+     * 
+ * + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; + */ + @java.lang.Override + public int getMergeOperationsCount() { + return mergeOperations_.size(); + } + /** + *
+     * A sorted list of CowMergeOperation. When writing cow, we can choose to
+     * skip writing the raw bytes for these extents. During snapshot merge, the
+     * bytes will read from the source partitions instead.
+     * 
+ * + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.CowMergeOperation getMergeOperations(int index) { + return mergeOperations_.get(index); + } + /** + *
+     * A sorted list of CowMergeOperation. When writing cow, we can choose to
+     * skip writing the raw bytes for these extents. During snapshot merge, the
+     * bytes will read from the source partitions instead.
+     * 
+ * + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.CowMergeOperationOrBuilder getMergeOperationsOrBuilder( + int index) { + return mergeOperations_.get(index); + } + + public static final int ESTIMATE_COW_SIZE_FIELD_NUMBER = 19; + private long estimateCowSize_ = 0L; + /** + *
+     * Estimated size for COW image. This is used by libsnapshot
+     * as a hint. If set to 0, libsnapshot should use alternative
+     * methods for estimating size.
+     * 
+ * + * optional uint64 estimate_cow_size = 19; + * @return Whether the estimateCowSize field is set. + */ + @java.lang.Override + public boolean hasEstimateCowSize() { + return ((bitField0_ & 0x00008000) != 0); + } + /** + *
+     * Estimated size for COW image. This is used by libsnapshot
+     * as a hint. If set to 0, libsnapshot should use alternative
+     * methods for estimating size.
+     * 
+ * + * optional uint64 estimate_cow_size = 19; + * @return The estimateCowSize. + */ + @java.lang.Override + public long getEstimateCowSize() { + return estimateCowSize_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (!hasPartitionName()) { + memoizedIsInitialized = 0; + return false; + } + for (int i = 0; i < getOperationsCount(); i++) { + if (!getOperations(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, partitionName_); + } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeBool(2, runPostinstall_); + } + if (((bitField0_ & 0x00000004) != 0)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, postinstallPath_); + } + if (((bitField0_ & 0x00000008) != 0)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, filesystemType_); + } + for (int i = 0; i < newPartitionSignature_.size(); i++) { + output.writeMessage(5, newPartitionSignature_.get(i)); + } + if (((bitField0_ & 0x00000010) != 0)) { + output.writeMessage(6, getOldPartitionInfo()); + } + if (((bitField0_ & 0x00000020) != 0)) { + output.writeMessage(7, getNewPartitionInfo()); + } + for (int i = 0; i < operations_.size(); i++) { + output.writeMessage(8, operations_.get(i)); + } + if (((bitField0_ & 0x00000040) != 0)) { + output.writeBool(9, postinstallOptional_); + } + if (((bitField0_ & 0x00000080) != 0)) { + output.writeMessage(10, getHashTreeDataExtent()); + } + if (((bitField0_ & 0x00000100) != 0)) { + output.writeMessage(11, getHashTreeExtent()); + } + if (((bitField0_ & 0x00000200) != 0)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 12, hashTreeAlgorithm_); + } + if (((bitField0_ & 0x00000400) != 0)) { + output.writeBytes(13, hashTreeSalt_); + } + if (((bitField0_ & 0x00000800) != 0)) { + output.writeMessage(14, getFecDataExtent()); + } + if (((bitField0_ & 0x00001000) != 0)) { + output.writeMessage(15, getFecExtent()); + } + if (((bitField0_ & 0x00002000) != 0)) { + output.writeUInt32(16, fecRoots_); + } + if (((bitField0_ & 0x00004000) != 0)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 17, version_); + } + for (int i = 0; i < mergeOperations_.size(); i++) { + output.writeMessage(18, mergeOperations_.get(i)); + } + if (((bitField0_ & 0x00008000) != 0)) { + output.writeUInt64(19, estimateCowSize_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, partitionName_); + } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, runPostinstall_); + } + if (((bitField0_ & 0x00000004) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, postinstallPath_); + } + if (((bitField0_ & 0x00000008) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, filesystemType_); + } + for (int i = 0; i < newPartitionSignature_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, newPartitionSignature_.get(i)); + } + if (((bitField0_ & 0x00000010) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, getOldPartitionInfo()); + } + if (((bitField0_ & 0x00000020) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(7, getNewPartitionInfo()); + } + for (int i = 0; i < operations_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(8, operations_.get(i)); + } + if (((bitField0_ & 0x00000040) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(9, postinstallOptional_); + } + if (((bitField0_ & 0x00000080) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(10, getHashTreeDataExtent()); + } + if (((bitField0_ & 0x00000100) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(11, getHashTreeExtent()); + } + if (((bitField0_ & 0x00000200) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, hashTreeAlgorithm_); + } + if (((bitField0_ & 0x00000400) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(13, hashTreeSalt_); + } + if (((bitField0_ & 0x00000800) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(14, getFecDataExtent()); + } + if (((bitField0_ & 0x00001000) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(15, getFecExtent()); + } + if (((bitField0_ & 0x00002000) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(16, fecRoots_); + } + if (((bitField0_ & 0x00004000) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(17, version_); + } + for (int i = 0; i < mergeOperations_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(18, mergeOperations_.get(i)); + } + if (((bitField0_ & 0x00008000) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(19, estimateCowSize_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof chromeos_update_engine.UpdateMetadata.PartitionUpdate)) { + return super.equals(obj); + } + chromeos_update_engine.UpdateMetadata.PartitionUpdate other = (chromeos_update_engine.UpdateMetadata.PartitionUpdate) obj; + + if (hasPartitionName() != other.hasPartitionName()) return false; + if (hasPartitionName()) { + if (!getPartitionName() + .equals(other.getPartitionName())) return false; + } + if (hasRunPostinstall() != other.hasRunPostinstall()) return false; + if (hasRunPostinstall()) { + if (getRunPostinstall() + != other.getRunPostinstall()) return false; + } + if (hasPostinstallPath() != other.hasPostinstallPath()) return false; + if (hasPostinstallPath()) { + if (!getPostinstallPath() + .equals(other.getPostinstallPath())) return false; + } + if (hasFilesystemType() != other.hasFilesystemType()) return false; + if (hasFilesystemType()) { + if (!getFilesystemType() + .equals(other.getFilesystemType())) return false; + } + if (!getNewPartitionSignatureList() + .equals(other.getNewPartitionSignatureList())) return false; + if (hasOldPartitionInfo() != other.hasOldPartitionInfo()) return false; + if (hasOldPartitionInfo()) { + if (!getOldPartitionInfo() + .equals(other.getOldPartitionInfo())) return false; + } + if (hasNewPartitionInfo() != other.hasNewPartitionInfo()) return false; + if (hasNewPartitionInfo()) { + if (!getNewPartitionInfo() + .equals(other.getNewPartitionInfo())) return false; + } + if (!getOperationsList() + .equals(other.getOperationsList())) return false; + if (hasPostinstallOptional() != other.hasPostinstallOptional()) return false; + if (hasPostinstallOptional()) { + if (getPostinstallOptional() + != other.getPostinstallOptional()) return false; + } + if (hasHashTreeDataExtent() != other.hasHashTreeDataExtent()) return false; + if (hasHashTreeDataExtent()) { + if (!getHashTreeDataExtent() + .equals(other.getHashTreeDataExtent())) return false; + } + if (hasHashTreeExtent() != other.hasHashTreeExtent()) return false; + if (hasHashTreeExtent()) { + if (!getHashTreeExtent() + .equals(other.getHashTreeExtent())) return false; + } + if (hasHashTreeAlgorithm() != other.hasHashTreeAlgorithm()) return false; + if (hasHashTreeAlgorithm()) { + if (!getHashTreeAlgorithm() + .equals(other.getHashTreeAlgorithm())) return false; + } + if (hasHashTreeSalt() != other.hasHashTreeSalt()) return false; + if (hasHashTreeSalt()) { + if (!getHashTreeSalt() + .equals(other.getHashTreeSalt())) return false; + } + if (hasFecDataExtent() != other.hasFecDataExtent()) return false; + if (hasFecDataExtent()) { + if (!getFecDataExtent() + .equals(other.getFecDataExtent())) return false; + } + if (hasFecExtent() != other.hasFecExtent()) return false; + if (hasFecExtent()) { + if (!getFecExtent() + .equals(other.getFecExtent())) return false; + } + if (hasFecRoots() != other.hasFecRoots()) return false; + if (hasFecRoots()) { + if (getFecRoots() + != other.getFecRoots()) return false; + } + if (hasVersion() != other.hasVersion()) return false; + if (hasVersion()) { + if (!getVersion() + .equals(other.getVersion())) return false; + } + if (!getMergeOperationsList() + .equals(other.getMergeOperationsList())) return false; + if (hasEstimateCowSize() != other.hasEstimateCowSize()) return false; + if (hasEstimateCowSize()) { + if (getEstimateCowSize() + != other.getEstimateCowSize()) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasPartitionName()) { + hash = (37 * hash) + PARTITION_NAME_FIELD_NUMBER; + hash = (53 * hash) + getPartitionName().hashCode(); + } + if (hasRunPostinstall()) { + hash = (37 * hash) + RUN_POSTINSTALL_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getRunPostinstall()); + } + if (hasPostinstallPath()) { + hash = (37 * hash) + POSTINSTALL_PATH_FIELD_NUMBER; + hash = (53 * hash) + getPostinstallPath().hashCode(); + } + if (hasFilesystemType()) { + hash = (37 * hash) + FILESYSTEM_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getFilesystemType().hashCode(); + } + if (getNewPartitionSignatureCount() > 0) { + hash = (37 * hash) + NEW_PARTITION_SIGNATURE_FIELD_NUMBER; + hash = (53 * hash) + getNewPartitionSignatureList().hashCode(); + } + if (hasOldPartitionInfo()) { + hash = (37 * hash) + OLD_PARTITION_INFO_FIELD_NUMBER; + hash = (53 * hash) + getOldPartitionInfo().hashCode(); + } + if (hasNewPartitionInfo()) { + hash = (37 * hash) + NEW_PARTITION_INFO_FIELD_NUMBER; + hash = (53 * hash) + getNewPartitionInfo().hashCode(); + } + if (getOperationsCount() > 0) { + hash = (37 * hash) + OPERATIONS_FIELD_NUMBER; + hash = (53 * hash) + getOperationsList().hashCode(); + } + if (hasPostinstallOptional()) { + hash = (37 * hash) + POSTINSTALL_OPTIONAL_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getPostinstallOptional()); + } + if (hasHashTreeDataExtent()) { + hash = (37 * hash) + HASH_TREE_DATA_EXTENT_FIELD_NUMBER; + hash = (53 * hash) + getHashTreeDataExtent().hashCode(); + } + if (hasHashTreeExtent()) { + hash = (37 * hash) + HASH_TREE_EXTENT_FIELD_NUMBER; + hash = (53 * hash) + getHashTreeExtent().hashCode(); + } + if (hasHashTreeAlgorithm()) { + hash = (37 * hash) + HASH_TREE_ALGORITHM_FIELD_NUMBER; + hash = (53 * hash) + getHashTreeAlgorithm().hashCode(); + } + if (hasHashTreeSalt()) { + hash = (37 * hash) + HASH_TREE_SALT_FIELD_NUMBER; + hash = (53 * hash) + getHashTreeSalt().hashCode(); + } + if (hasFecDataExtent()) { + hash = (37 * hash) + FEC_DATA_EXTENT_FIELD_NUMBER; + hash = (53 * hash) + getFecDataExtent().hashCode(); + } + if (hasFecExtent()) { + hash = (37 * hash) + FEC_EXTENT_FIELD_NUMBER; + hash = (53 * hash) + getFecExtent().hashCode(); + } + if (hasFecRoots()) { + hash = (37 * hash) + FEC_ROOTS_FIELD_NUMBER; + hash = (53 * hash) + getFecRoots(); + } + if (hasVersion()) { + hash = (37 * hash) + VERSION_FIELD_NUMBER; + hash = (53 * hash) + getVersion().hashCode(); + } + if (getMergeOperationsCount() > 0) { + hash = (37 * hash) + MERGE_OPERATIONS_FIELD_NUMBER; + hash = (53 * hash) + getMergeOperationsList().hashCode(); + } + if (hasEstimateCowSize()) { + hash = (37 * hash) + ESTIMATE_COW_SIZE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getEstimateCowSize()); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.PartitionUpdate prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Describes the update to apply to a single partition.
+     * 
+ * + * Protobuf type {@code chromeos_update_engine.PartitionUpdate} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:chromeos_update_engine.PartitionUpdate) + chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_PartitionUpdate_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_PartitionUpdate_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.PartitionUpdate.class, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder.class); + } + + // Construct using chromeos_update_engine.UpdateMetadata.PartitionUpdate.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getNewPartitionSignatureFieldBuilder(); + getOldPartitionInfoFieldBuilder(); + getNewPartitionInfoFieldBuilder(); + getOperationsFieldBuilder(); + getHashTreeDataExtentFieldBuilder(); + getHashTreeExtentFieldBuilder(); + getFecDataExtentFieldBuilder(); + getFecExtentFieldBuilder(); + getMergeOperationsFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + partitionName_ = ""; + runPostinstall_ = false; + postinstallPath_ = ""; + filesystemType_ = ""; + if (newPartitionSignatureBuilder_ == null) { + newPartitionSignature_ = java.util.Collections.emptyList(); + } else { + newPartitionSignature_ = null; + newPartitionSignatureBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); + oldPartitionInfo_ = null; + if (oldPartitionInfoBuilder_ != null) { + oldPartitionInfoBuilder_.dispose(); + oldPartitionInfoBuilder_ = null; + } + newPartitionInfo_ = null; + if (newPartitionInfoBuilder_ != null) { + newPartitionInfoBuilder_.dispose(); + newPartitionInfoBuilder_ = null; + } + if (operationsBuilder_ == null) { + operations_ = java.util.Collections.emptyList(); + } else { + operations_ = null; + operationsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000080); + postinstallOptional_ = false; + hashTreeDataExtent_ = null; + if (hashTreeDataExtentBuilder_ != null) { + hashTreeDataExtentBuilder_.dispose(); + hashTreeDataExtentBuilder_ = null; + } + hashTreeExtent_ = null; + if (hashTreeExtentBuilder_ != null) { + hashTreeExtentBuilder_.dispose(); + hashTreeExtentBuilder_ = null; + } + hashTreeAlgorithm_ = ""; + hashTreeSalt_ = com.google.protobuf.ByteString.EMPTY; + fecDataExtent_ = null; + if (fecDataExtentBuilder_ != null) { + fecDataExtentBuilder_.dispose(); + fecDataExtentBuilder_ = null; + } + fecExtent_ = null; + if (fecExtentBuilder_ != null) { + fecExtentBuilder_.dispose(); + fecExtentBuilder_ = null; + } + fecRoots_ = 2; + version_ = ""; + if (mergeOperationsBuilder_ == null) { + mergeOperations_ = java.util.Collections.emptyList(); + } else { + mergeOperations_ = null; + mergeOperationsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00020000); + estimateCowSize_ = 0L; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_PartitionUpdate_descriptor; + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.PartitionUpdate getDefaultInstanceForType() { + return chromeos_update_engine.UpdateMetadata.PartitionUpdate.getDefaultInstance(); + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.PartitionUpdate build() { + chromeos_update_engine.UpdateMetadata.PartitionUpdate result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.PartitionUpdate buildPartial() { + chromeos_update_engine.UpdateMetadata.PartitionUpdate result = new chromeos_update_engine.UpdateMetadata.PartitionUpdate(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(chromeos_update_engine.UpdateMetadata.PartitionUpdate result) { + if (newPartitionSignatureBuilder_ == null) { + if (((bitField0_ & 0x00000010) != 0)) { + newPartitionSignature_ = java.util.Collections.unmodifiableList(newPartitionSignature_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.newPartitionSignature_ = newPartitionSignature_; + } else { + result.newPartitionSignature_ = newPartitionSignatureBuilder_.build(); + } + if (operationsBuilder_ == null) { + if (((bitField0_ & 0x00000080) != 0)) { + operations_ = java.util.Collections.unmodifiableList(operations_); + bitField0_ = (bitField0_ & ~0x00000080); + } + result.operations_ = operations_; + } else { + result.operations_ = operationsBuilder_.build(); + } + if (mergeOperationsBuilder_ == null) { + if (((bitField0_ & 0x00020000) != 0)) { + mergeOperations_ = java.util.Collections.unmodifiableList(mergeOperations_); + bitField0_ = (bitField0_ & ~0x00020000); + } + result.mergeOperations_ = mergeOperations_; + } else { + result.mergeOperations_ = mergeOperationsBuilder_.build(); + } + } + + private void buildPartial0(chromeos_update_engine.UpdateMetadata.PartitionUpdate result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.partitionName_ = partitionName_; + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.runPostinstall_ = runPostinstall_; + to_bitField0_ |= 0x00000002; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.postinstallPath_ = postinstallPath_; + to_bitField0_ |= 0x00000004; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.filesystemType_ = filesystemType_; + to_bitField0_ |= 0x00000008; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.oldPartitionInfo_ = oldPartitionInfoBuilder_ == null + ? oldPartitionInfo_ + : oldPartitionInfoBuilder_.build(); + to_bitField0_ |= 0x00000010; + } + if (((from_bitField0_ & 0x00000040) != 0)) { + result.newPartitionInfo_ = newPartitionInfoBuilder_ == null + ? newPartitionInfo_ + : newPartitionInfoBuilder_.build(); + to_bitField0_ |= 0x00000020; + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.postinstallOptional_ = postinstallOptional_; + to_bitField0_ |= 0x00000040; + } + if (((from_bitField0_ & 0x00000200) != 0)) { + result.hashTreeDataExtent_ = hashTreeDataExtentBuilder_ == null + ? hashTreeDataExtent_ + : hashTreeDataExtentBuilder_.build(); + to_bitField0_ |= 0x00000080; + } + if (((from_bitField0_ & 0x00000400) != 0)) { + result.hashTreeExtent_ = hashTreeExtentBuilder_ == null + ? hashTreeExtent_ + : hashTreeExtentBuilder_.build(); + to_bitField0_ |= 0x00000100; + } + if (((from_bitField0_ & 0x00000800) != 0)) { + result.hashTreeAlgorithm_ = hashTreeAlgorithm_; + to_bitField0_ |= 0x00000200; + } + if (((from_bitField0_ & 0x00001000) != 0)) { + result.hashTreeSalt_ = hashTreeSalt_; + to_bitField0_ |= 0x00000400; + } + if (((from_bitField0_ & 0x00002000) != 0)) { + result.fecDataExtent_ = fecDataExtentBuilder_ == null + ? fecDataExtent_ + : fecDataExtentBuilder_.build(); + to_bitField0_ |= 0x00000800; + } + if (((from_bitField0_ & 0x00004000) != 0)) { + result.fecExtent_ = fecExtentBuilder_ == null + ? fecExtent_ + : fecExtentBuilder_.build(); + to_bitField0_ |= 0x00001000; + } + if (((from_bitField0_ & 0x00008000) != 0)) { + result.fecRoots_ = fecRoots_; + to_bitField0_ |= 0x00002000; + } + if (((from_bitField0_ & 0x00010000) != 0)) { + result.version_ = version_; + to_bitField0_ |= 0x00004000; + } + if (((from_bitField0_ & 0x00040000) != 0)) { + result.estimateCowSize_ = estimateCowSize_; + to_bitField0_ |= 0x00008000; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof chromeos_update_engine.UpdateMetadata.PartitionUpdate) { + return mergeFrom((chromeos_update_engine.UpdateMetadata.PartitionUpdate)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.PartitionUpdate other) { + if (other == chromeos_update_engine.UpdateMetadata.PartitionUpdate.getDefaultInstance()) return this; + if (other.hasPartitionName()) { + partitionName_ = other.partitionName_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (other.hasRunPostinstall()) { + setRunPostinstall(other.getRunPostinstall()); + } + if (other.hasPostinstallPath()) { + postinstallPath_ = other.postinstallPath_; + bitField0_ |= 0x00000004; + onChanged(); + } + if (other.hasFilesystemType()) { + filesystemType_ = other.filesystemType_; + bitField0_ |= 0x00000008; + onChanged(); + } + if (newPartitionSignatureBuilder_ == null) { + if (!other.newPartitionSignature_.isEmpty()) { + if (newPartitionSignature_.isEmpty()) { + newPartitionSignature_ = other.newPartitionSignature_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensureNewPartitionSignatureIsMutable(); + newPartitionSignature_.addAll(other.newPartitionSignature_); + } + onChanged(); + } + } else { + if (!other.newPartitionSignature_.isEmpty()) { + if (newPartitionSignatureBuilder_.isEmpty()) { + newPartitionSignatureBuilder_.dispose(); + newPartitionSignatureBuilder_ = null; + newPartitionSignature_ = other.newPartitionSignature_; + bitField0_ = (bitField0_ & ~0x00000010); + newPartitionSignatureBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getNewPartitionSignatureFieldBuilder() : null; + } else { + newPartitionSignatureBuilder_.addAllMessages(other.newPartitionSignature_); + } + } + } + if (other.hasOldPartitionInfo()) { + mergeOldPartitionInfo(other.getOldPartitionInfo()); + } + if (other.hasNewPartitionInfo()) { + mergeNewPartitionInfo(other.getNewPartitionInfo()); + } + if (operationsBuilder_ == null) { + if (!other.operations_.isEmpty()) { + if (operations_.isEmpty()) { + operations_ = other.operations_; + bitField0_ = (bitField0_ & ~0x00000080); + } else { + ensureOperationsIsMutable(); + operations_.addAll(other.operations_); + } + onChanged(); + } + } else { + if (!other.operations_.isEmpty()) { + if (operationsBuilder_.isEmpty()) { + operationsBuilder_.dispose(); + operationsBuilder_ = null; + operations_ = other.operations_; + bitField0_ = (bitField0_ & ~0x00000080); + operationsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getOperationsFieldBuilder() : null; + } else { + operationsBuilder_.addAllMessages(other.operations_); + } + } + } + if (other.hasPostinstallOptional()) { + setPostinstallOptional(other.getPostinstallOptional()); + } + if (other.hasHashTreeDataExtent()) { + mergeHashTreeDataExtent(other.getHashTreeDataExtent()); + } + if (other.hasHashTreeExtent()) { + mergeHashTreeExtent(other.getHashTreeExtent()); + } + if (other.hasHashTreeAlgorithm()) { + hashTreeAlgorithm_ = other.hashTreeAlgorithm_; + bitField0_ |= 0x00000800; + onChanged(); + } + if (other.hasHashTreeSalt()) { + setHashTreeSalt(other.getHashTreeSalt()); + } + if (other.hasFecDataExtent()) { + mergeFecDataExtent(other.getFecDataExtent()); + } + if (other.hasFecExtent()) { + mergeFecExtent(other.getFecExtent()); + } + if (other.hasFecRoots()) { + setFecRoots(other.getFecRoots()); + } + if (other.hasVersion()) { + version_ = other.version_; + bitField0_ |= 0x00010000; + onChanged(); + } + if (mergeOperationsBuilder_ == null) { + if (!other.mergeOperations_.isEmpty()) { + if (mergeOperations_.isEmpty()) { + mergeOperations_ = other.mergeOperations_; + bitField0_ = (bitField0_ & ~0x00020000); + } else { + ensureMergeOperationsIsMutable(); + mergeOperations_.addAll(other.mergeOperations_); + } + onChanged(); + } + } else { + if (!other.mergeOperations_.isEmpty()) { + if (mergeOperationsBuilder_.isEmpty()) { + mergeOperationsBuilder_.dispose(); + mergeOperationsBuilder_ = null; + mergeOperations_ = other.mergeOperations_; + bitField0_ = (bitField0_ & ~0x00020000); + mergeOperationsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getMergeOperationsFieldBuilder() : null; + } else { + mergeOperationsBuilder_.addAllMessages(other.mergeOperations_); + } + } + } + if (other.hasEstimateCowSize()) { + setEstimateCowSize(other.getEstimateCowSize()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + if (!hasPartitionName()) { + return false; + } + for (int i = 0; i < getOperationsCount(); i++) { + if (!getOperations(i).isInitialized()) { + return false; + } + } + return true; + } - public static final int HASH_TREE_EXTENT_FIELD_NUMBER = 11; - private chromeos_update_engine.UpdateMetadata.Extent hashTreeExtent_; - /** - *
-     * The extent to store verity hash tree.
-     * 
- * - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; - * @return Whether the hashTreeExtent field is set. - */ - @java.lang.Override - public boolean hasHashTreeExtent() { - return ((bitField0_ & 0x00000100) != 0); - } - /** - *
-     * The extent to store verity hash tree.
-     * 
- * - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; - * @return The hashTreeExtent. - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.Extent getHashTreeExtent() { - return hashTreeExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeExtent_; - } - /** - *
-     * The extent to store verity hash tree.
-     * 
- * - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getHashTreeExtentOrBuilder() { - return hashTreeExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeExtent_; - } + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + partitionName_ = input.readBytes(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 16: { + runPostinstall_ = input.readBool(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 26: { + postinstallPath_ = input.readBytes(); + bitField0_ |= 0x00000004; + break; + } // case 26 + case 34: { + filesystemType_ = input.readBytes(); + bitField0_ |= 0x00000008; + break; + } // case 34 + case 42: { + chromeos_update_engine.UpdateMetadata.Signatures.Signature m = + input.readMessage( + chromeos_update_engine.UpdateMetadata.Signatures.Signature.PARSER, + extensionRegistry); + if (newPartitionSignatureBuilder_ == null) { + ensureNewPartitionSignatureIsMutable(); + newPartitionSignature_.add(m); + } else { + newPartitionSignatureBuilder_.addMessage(m); + } + break; + } // case 42 + case 50: { + input.readMessage( + getOldPartitionInfoFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000020; + break; + } // case 50 + case 58: { + input.readMessage( + getNewPartitionInfoFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000040; + break; + } // case 58 + case 66: { + chromeos_update_engine.UpdateMetadata.InstallOperation m = + input.readMessage( + chromeos_update_engine.UpdateMetadata.InstallOperation.PARSER, + extensionRegistry); + if (operationsBuilder_ == null) { + ensureOperationsIsMutable(); + operations_.add(m); + } else { + operationsBuilder_.addMessage(m); + } + break; + } // case 66 + case 72: { + postinstallOptional_ = input.readBool(); + bitField0_ |= 0x00000100; + break; + } // case 72 + case 82: { + input.readMessage( + getHashTreeDataExtentFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000200; + break; + } // case 82 + case 90: { + input.readMessage( + getHashTreeExtentFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000400; + break; + } // case 90 + case 98: { + hashTreeAlgorithm_ = input.readBytes(); + bitField0_ |= 0x00000800; + break; + } // case 98 + case 106: { + hashTreeSalt_ = input.readBytes(); + bitField0_ |= 0x00001000; + break; + } // case 106 + case 114: { + input.readMessage( + getFecDataExtentFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00002000; + break; + } // case 114 + case 122: { + input.readMessage( + getFecExtentFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00004000; + break; + } // case 122 + case 128: { + fecRoots_ = input.readUInt32(); + bitField0_ |= 0x00008000; + break; + } // case 128 + case 138: { + version_ = input.readBytes(); + bitField0_ |= 0x00010000; + break; + } // case 138 + case 146: { + chromeos_update_engine.UpdateMetadata.CowMergeOperation m = + input.readMessage( + chromeos_update_engine.UpdateMetadata.CowMergeOperation.PARSER, + extensionRegistry); + if (mergeOperationsBuilder_ == null) { + ensureMergeOperationsIsMutable(); + mergeOperations_.add(m); + } else { + mergeOperationsBuilder_.addMessage(m); + } + break; + } // case 146 + case 152: { + estimateCowSize_ = input.readUInt64(); + bitField0_ |= 0x00040000; + break; + } // case 152 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; - public static final int HASH_TREE_ALGORITHM_FIELD_NUMBER = 12; - private volatile java.lang.Object hashTreeAlgorithm_; - /** - *
-     * The hash algorithm used in verity hash tree.
-     * 
- * - * optional string hash_tree_algorithm = 12; - * @return Whether the hashTreeAlgorithm field is set. - */ - @java.lang.Override - public boolean hasHashTreeAlgorithm() { - return ((bitField0_ & 0x00000200) != 0); - } - /** - *
-     * The hash algorithm used in verity hash tree.
-     * 
- * - * optional string hash_tree_algorithm = 12; - * @return The hashTreeAlgorithm. - */ - @java.lang.Override - public java.lang.String getHashTreeAlgorithm() { - java.lang.Object ref = hashTreeAlgorithm_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - hashTreeAlgorithm_ = s; + private java.lang.Object partitionName_ = ""; + /** + *
+       * A platform-specific name to identify the partition set being updated. For
+       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * 
+ * + * required string partition_name = 1; + * @return Whether the partitionName field is set. + */ + public boolean hasPartitionName() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+       * A platform-specific name to identify the partition set being updated. For
+       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * 
+ * + * required string partition_name = 1; + * @return The partitionName. + */ + public java.lang.String getPartitionName() { + java.lang.Object ref = partitionName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + partitionName_ = s; + } + return s; + } else { + return (java.lang.String) ref; } - return s; } - } - /** - *
-     * The hash algorithm used in verity hash tree.
-     * 
- * - * optional string hash_tree_algorithm = 12; - * @return The bytes for hashTreeAlgorithm. - */ - @java.lang.Override - public com.google.protobuf.ByteString - getHashTreeAlgorithmBytes() { - java.lang.Object ref = hashTreeAlgorithm_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - hashTreeAlgorithm_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; + /** + *
+       * A platform-specific name to identify the partition set being updated. For
+       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * 
+ * + * required string partition_name = 1; + * @return The bytes for partitionName. + */ + public com.google.protobuf.ByteString + getPartitionNameBytes() { + java.lang.Object ref = partitionName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + partitionName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * A platform-specific name to identify the partition set being updated. For
+       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * 
+ * + * required string partition_name = 1; + * @param value The partitionName to set. + * @return This builder for chaining. + */ + public Builder setPartitionName( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + partitionName_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+       * A platform-specific name to identify the partition set being updated. For
+       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * 
+ * + * required string partition_name = 1; + * @return This builder for chaining. + */ + public Builder clearPartitionName() { + partitionName_ = getDefaultInstance().getPartitionName(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + *
+       * A platform-specific name to identify the partition set being updated. For
+       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * 
+ * + * required string partition_name = 1; + * @param value The bytes for partitionName to set. + * @return This builder for chaining. + */ + public Builder setPartitionNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + partitionName_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; } - } - - public static final int HASH_TREE_SALT_FIELD_NUMBER = 13; - private com.google.protobuf.ByteString hashTreeSalt_; - /** - *
-     * The salt used for verity hash tree.
-     * 
- * - * optional bytes hash_tree_salt = 13; - * @return Whether the hashTreeSalt field is set. - */ - @java.lang.Override - public boolean hasHashTreeSalt() { - return ((bitField0_ & 0x00000400) != 0); - } - /** - *
-     * The salt used for verity hash tree.
-     * 
- * - * optional bytes hash_tree_salt = 13; - * @return The hashTreeSalt. - */ - @java.lang.Override - public com.google.protobuf.ByteString getHashTreeSalt() { - return hashTreeSalt_; - } - - public static final int FEC_DATA_EXTENT_FIELD_NUMBER = 14; - private chromeos_update_engine.UpdateMetadata.Extent fecDataExtent_; - /** - *
-     * The extent for data covered by FEC.
-     * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - * @return Whether the fecDataExtent field is set. - */ - @java.lang.Override - public boolean hasFecDataExtent() { - return ((bitField0_ & 0x00000800) != 0); - } - /** - *
-     * The extent for data covered by FEC.
-     * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - * @return The fecDataExtent. - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.Extent getFecDataExtent() { - return fecDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecDataExtent_; - } - /** - *
-     * The extent for data covered by FEC.
-     * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getFecDataExtentOrBuilder() { - return fecDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecDataExtent_; - } - - public static final int FEC_EXTENT_FIELD_NUMBER = 15; - private chromeos_update_engine.UpdateMetadata.Extent fecExtent_; - /** - *
-     * The extent to store FEC.
-     * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; - * @return Whether the fecExtent field is set. - */ - @java.lang.Override - public boolean hasFecExtent() { - return ((bitField0_ & 0x00001000) != 0); - } - /** - *
-     * The extent to store FEC.
-     * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; - * @return The fecExtent. - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.Extent getFecExtent() { - return fecExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecExtent_; - } - /** - *
-     * The extent to store FEC.
-     * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getFecExtentOrBuilder() { - return fecExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecExtent_; - } - - public static final int FEC_ROOTS_FIELD_NUMBER = 16; - private int fecRoots_; - /** - *
-     * The number of FEC roots.
-     * 
- * - * optional uint32 fec_roots = 16 [default = 2]; - * @return Whether the fecRoots field is set. - */ - @java.lang.Override - public boolean hasFecRoots() { - return ((bitField0_ & 0x00002000) != 0); - } - /** - *
-     * The number of FEC roots.
-     * 
- * - * optional uint32 fec_roots = 16 [default = 2]; - * @return The fecRoots. - */ - @java.lang.Override - public int getFecRoots() { - return fecRoots_; - } - private byte memoizedIsInitialized = -1; - @java.lang.Override - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; + private boolean runPostinstall_ ; + /** + *
+       * Whether this partition carries a filesystem with post-install program that
+       * must be run to finalize the update process. See also |postinstall_path| and
+       * |filesystem_type|.
+       * 
+ * + * optional bool run_postinstall = 2; + * @return Whether the runPostinstall field is set. + */ + @java.lang.Override + public boolean hasRunPostinstall() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + *
+       * Whether this partition carries a filesystem with post-install program that
+       * must be run to finalize the update process. See also |postinstall_path| and
+       * |filesystem_type|.
+       * 
+ * + * optional bool run_postinstall = 2; + * @return The runPostinstall. + */ + @java.lang.Override + public boolean getRunPostinstall() { + return runPostinstall_; + } + /** + *
+       * Whether this partition carries a filesystem with post-install program that
+       * must be run to finalize the update process. See also |postinstall_path| and
+       * |filesystem_type|.
+       * 
+ * + * optional bool run_postinstall = 2; + * @param value The runPostinstall to set. + * @return This builder for chaining. + */ + public Builder setRunPostinstall(boolean value) { + + runPostinstall_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+       * Whether this partition carries a filesystem with post-install program that
+       * must be run to finalize the update process. See also |postinstall_path| and
+       * |filesystem_type|.
+       * 
+ * + * optional bool run_postinstall = 2; + * @return This builder for chaining. + */ + public Builder clearRunPostinstall() { + bitField0_ = (bitField0_ & ~0x00000002); + runPostinstall_ = false; + onChanged(); + return this; + } - if (!hasPartitionName()) { - memoizedIsInitialized = 0; - return false; + private java.lang.Object postinstallPath_ = ""; + /** + *
+       * The path of the executable program to run during the post-install step,
+       * relative to the root of this filesystem. If not set, the default "postinst"
+       * will be used. This setting is only used when |run_postinstall| is set and
+       * true.
+       * 
+ * + * optional string postinstall_path = 3; + * @return Whether the postinstallPath field is set. + */ + public boolean hasPostinstallPath() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + *
+       * The path of the executable program to run during the post-install step,
+       * relative to the root of this filesystem. If not set, the default "postinst"
+       * will be used. This setting is only used when |run_postinstall| is set and
+       * true.
+       * 
+ * + * optional string postinstall_path = 3; + * @return The postinstallPath. + */ + public java.lang.String getPostinstallPath() { + java.lang.Object ref = postinstallPath_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + postinstallPath_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } } - for (int i = 0; i < getOperationsCount(); i++) { - if (!getOperations(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; + /** + *
+       * The path of the executable program to run during the post-install step,
+       * relative to the root of this filesystem. If not set, the default "postinst"
+       * will be used. This setting is only used when |run_postinstall| is set and
+       * true.
+       * 
+ * + * optional string postinstall_path = 3; + * @return The bytes for postinstallPath. + */ + public com.google.protobuf.ByteString + getPostinstallPathBytes() { + java.lang.Object ref = postinstallPath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + postinstallPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; } } - memoizedIsInitialized = 1; - return true; - } - - @java.lang.Override - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (((bitField0_ & 0x00000001) != 0)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, partitionName_); + /** + *
+       * The path of the executable program to run during the post-install step,
+       * relative to the root of this filesystem. If not set, the default "postinst"
+       * will be used. This setting is only used when |run_postinstall| is set and
+       * true.
+       * 
+ * + * optional string postinstall_path = 3; + * @param value The postinstallPath to set. + * @return This builder for chaining. + */ + public Builder setPostinstallPath( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + postinstallPath_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; } - if (((bitField0_ & 0x00000002) != 0)) { - output.writeBool(2, runPostinstall_); + /** + *
+       * The path of the executable program to run during the post-install step,
+       * relative to the root of this filesystem. If not set, the default "postinst"
+       * will be used. This setting is only used when |run_postinstall| is set and
+       * true.
+       * 
+ * + * optional string postinstall_path = 3; + * @return This builder for chaining. + */ + public Builder clearPostinstallPath() { + postinstallPath_ = getDefaultInstance().getPostinstallPath(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; } - if (((bitField0_ & 0x00000004) != 0)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 3, postinstallPath_); + /** + *
+       * The path of the executable program to run during the post-install step,
+       * relative to the root of this filesystem. If not set, the default "postinst"
+       * will be used. This setting is only used when |run_postinstall| is set and
+       * true.
+       * 
+ * + * optional string postinstall_path = 3; + * @param value The bytes for postinstallPath to set. + * @return This builder for chaining. + */ + public Builder setPostinstallPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + postinstallPath_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; } - if (((bitField0_ & 0x00000008) != 0)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 4, filesystemType_); + + private java.lang.Object filesystemType_ = ""; + /** + *
+       * The filesystem type as passed to the mount(2) syscall when mounting the new
+       * filesystem to run the post-install program. If not set, a fixed list of
+       * filesystems will be attempted. This setting is only used if
+       * |run_postinstall| is set and true.
+       * 
+ * + * optional string filesystem_type = 4; + * @return Whether the filesystemType field is set. + */ + public boolean hasFilesystemType() { + return ((bitField0_ & 0x00000008) != 0); } - for (int i = 0; i < newPartitionSignature_.size(); i++) { - output.writeMessage(5, newPartitionSignature_.get(i)); + /** + *
+       * The filesystem type as passed to the mount(2) syscall when mounting the new
+       * filesystem to run the post-install program. If not set, a fixed list of
+       * filesystems will be attempted. This setting is only used if
+       * |run_postinstall| is set and true.
+       * 
+ * + * optional string filesystem_type = 4; + * @return The filesystemType. + */ + public java.lang.String getFilesystemType() { + java.lang.Object ref = filesystemType_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + filesystemType_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } } - if (((bitField0_ & 0x00000010) != 0)) { - output.writeMessage(6, getOldPartitionInfo()); + /** + *
+       * The filesystem type as passed to the mount(2) syscall when mounting the new
+       * filesystem to run the post-install program. If not set, a fixed list of
+       * filesystems will be attempted. This setting is only used if
+       * |run_postinstall| is set and true.
+       * 
+ * + * optional string filesystem_type = 4; + * @return The bytes for filesystemType. + */ + public com.google.protobuf.ByteString + getFilesystemTypeBytes() { + java.lang.Object ref = filesystemType_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + filesystemType_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - if (((bitField0_ & 0x00000020) != 0)) { - output.writeMessage(7, getNewPartitionInfo()); + /** + *
+       * The filesystem type as passed to the mount(2) syscall when mounting the new
+       * filesystem to run the post-install program. If not set, a fixed list of
+       * filesystems will be attempted. This setting is only used if
+       * |run_postinstall| is set and true.
+       * 
+ * + * optional string filesystem_type = 4; + * @param value The filesystemType to set. + * @return This builder for chaining. + */ + public Builder setFilesystemType( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + filesystemType_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; } - for (int i = 0; i < operations_.size(); i++) { - output.writeMessage(8, operations_.get(i)); + /** + *
+       * The filesystem type as passed to the mount(2) syscall when mounting the new
+       * filesystem to run the post-install program. If not set, a fixed list of
+       * filesystems will be attempted. This setting is only used if
+       * |run_postinstall| is set and true.
+       * 
+ * + * optional string filesystem_type = 4; + * @return This builder for chaining. + */ + public Builder clearFilesystemType() { + filesystemType_ = getDefaultInstance().getFilesystemType(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + return this; } - if (((bitField0_ & 0x00000040) != 0)) { - output.writeBool(9, postinstallOptional_); + /** + *
+       * The filesystem type as passed to the mount(2) syscall when mounting the new
+       * filesystem to run the post-install program. If not set, a fixed list of
+       * filesystems will be attempted. This setting is only used if
+       * |run_postinstall| is set and true.
+       * 
+ * + * optional string filesystem_type = 4; + * @param value The bytes for filesystemType to set. + * @return This builder for chaining. + */ + public Builder setFilesystemTypeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + filesystemType_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; } - if (((bitField0_ & 0x00000080) != 0)) { - output.writeMessage(10, getHashTreeDataExtent()); + + private java.util.List newPartitionSignature_ = + java.util.Collections.emptyList(); + private void ensureNewPartitionSignatureIsMutable() { + if (!((bitField0_ & 0x00000010) != 0)) { + newPartitionSignature_ = new java.util.ArrayList(newPartitionSignature_); + bitField0_ |= 0x00000010; + } } - if (((bitField0_ & 0x00000100) != 0)) { - output.writeMessage(11, getHashTreeExtent()); + + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Signatures.Signature, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder, chromeos_update_engine.UpdateMetadata.Signatures.SignatureOrBuilder> newPartitionSignatureBuilder_; + + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public java.util.List getNewPartitionSignatureList() { + if (newPartitionSignatureBuilder_ == null) { + return java.util.Collections.unmodifiableList(newPartitionSignature_); + } else { + return newPartitionSignatureBuilder_.getMessageList(); + } } - if (((bitField0_ & 0x00000200) != 0)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 12, hashTreeAlgorithm_); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public int getNewPartitionSignatureCount() { + if (newPartitionSignatureBuilder_ == null) { + return newPartitionSignature_.size(); + } else { + return newPartitionSignatureBuilder_.getCount(); + } } - if (((bitField0_ & 0x00000400) != 0)) { - output.writeBytes(13, hashTreeSalt_); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public chromeos_update_engine.UpdateMetadata.Signatures.Signature getNewPartitionSignature(int index) { + if (newPartitionSignatureBuilder_ == null) { + return newPartitionSignature_.get(index); + } else { + return newPartitionSignatureBuilder_.getMessage(index); + } } - if (((bitField0_ & 0x00000800) != 0)) { - output.writeMessage(14, getFecDataExtent()); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public Builder setNewPartitionSignature( + int index, chromeos_update_engine.UpdateMetadata.Signatures.Signature value) { + if (newPartitionSignatureBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureNewPartitionSignatureIsMutable(); + newPartitionSignature_.set(index, value); + onChanged(); + } else { + newPartitionSignatureBuilder_.setMessage(index, value); + } + return this; } - if (((bitField0_ & 0x00001000) != 0)) { - output.writeMessage(15, getFecExtent()); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public Builder setNewPartitionSignature( + int index, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder builderForValue) { + if (newPartitionSignatureBuilder_ == null) { + ensureNewPartitionSignatureIsMutable(); + newPartitionSignature_.set(index, builderForValue.build()); + onChanged(); + } else { + newPartitionSignatureBuilder_.setMessage(index, builderForValue.build()); + } + return this; } - if (((bitField0_ & 0x00002000) != 0)) { - output.writeUInt32(16, fecRoots_); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public Builder addNewPartitionSignature(chromeos_update_engine.UpdateMetadata.Signatures.Signature value) { + if (newPartitionSignatureBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureNewPartitionSignatureIsMutable(); + newPartitionSignature_.add(value); + onChanged(); + } else { + newPartitionSignatureBuilder_.addMessage(value); + } + return this; } - unknownFields.writeTo(output); - } - - @java.lang.Override - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) != 0)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, partitionName_); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public Builder addNewPartitionSignature( + int index, chromeos_update_engine.UpdateMetadata.Signatures.Signature value) { + if (newPartitionSignatureBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureNewPartitionSignatureIsMutable(); + newPartitionSignature_.add(index, value); + onChanged(); + } else { + newPartitionSignatureBuilder_.addMessage(index, value); + } + return this; } - if (((bitField0_ & 0x00000002) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(2, runPostinstall_); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public Builder addNewPartitionSignature( + chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder builderForValue) { + if (newPartitionSignatureBuilder_ == null) { + ensureNewPartitionSignatureIsMutable(); + newPartitionSignature_.add(builderForValue.build()); + onChanged(); + } else { + newPartitionSignatureBuilder_.addMessage(builderForValue.build()); + } + return this; } - if (((bitField0_ & 0x00000004) != 0)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, postinstallPath_); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public Builder addNewPartitionSignature( + int index, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder builderForValue) { + if (newPartitionSignatureBuilder_ == null) { + ensureNewPartitionSignatureIsMutable(); + newPartitionSignature_.add(index, builderForValue.build()); + onChanged(); + } else { + newPartitionSignatureBuilder_.addMessage(index, builderForValue.build()); + } + return this; } - if (((bitField0_ & 0x00000008) != 0)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, filesystemType_); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public Builder addAllNewPartitionSignature( + java.lang.Iterable values) { + if (newPartitionSignatureBuilder_ == null) { + ensureNewPartitionSignatureIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, newPartitionSignature_); + onChanged(); + } else { + newPartitionSignatureBuilder_.addAllMessages(values); + } + return this; } - for (int i = 0; i < newPartitionSignature_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(5, newPartitionSignature_.get(i)); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public Builder clearNewPartitionSignature() { + if (newPartitionSignatureBuilder_ == null) { + newPartitionSignature_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + } else { + newPartitionSignatureBuilder_.clear(); + } + return this; } - if (((bitField0_ & 0x00000010) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(6, getOldPartitionInfo()); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public Builder removeNewPartitionSignature(int index) { + if (newPartitionSignatureBuilder_ == null) { + ensureNewPartitionSignatureIsMutable(); + newPartitionSignature_.remove(index); + onChanged(); + } else { + newPartitionSignatureBuilder_.remove(index); + } + return this; } - if (((bitField0_ & 0x00000020) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(7, getNewPartitionInfo()); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder getNewPartitionSignatureBuilder( + int index) { + return getNewPartitionSignatureFieldBuilder().getBuilder(index); } - for (int i = 0; i < operations_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(8, operations_.get(i)); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public chromeos_update_engine.UpdateMetadata.Signatures.SignatureOrBuilder getNewPartitionSignatureOrBuilder( + int index) { + if (newPartitionSignatureBuilder_ == null) { + return newPartitionSignature_.get(index); } else { + return newPartitionSignatureBuilder_.getMessageOrBuilder(index); + } } - if (((bitField0_ & 0x00000040) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(9, postinstallOptional_); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public java.util.List + getNewPartitionSignatureOrBuilderList() { + if (newPartitionSignatureBuilder_ != null) { + return newPartitionSignatureBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(newPartitionSignature_); + } } - if (((bitField0_ & 0x00000080) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(10, getHashTreeDataExtent()); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder addNewPartitionSignatureBuilder() { + return getNewPartitionSignatureFieldBuilder().addBuilder( + chromeos_update_engine.UpdateMetadata.Signatures.Signature.getDefaultInstance()); } - if (((bitField0_ & 0x00000100) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(11, getHashTreeExtent()); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder addNewPartitionSignatureBuilder( + int index) { + return getNewPartitionSignatureFieldBuilder().addBuilder( + index, chromeos_update_engine.UpdateMetadata.Signatures.Signature.getDefaultInstance()); } - if (((bitField0_ & 0x00000200) != 0)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, hashTreeAlgorithm_); + /** + *
+       * If present, a list of signatures of the new_partition_info.hash signed with
+       * different keys. If the update_engine daemon requires vendor-signed images
+       * and has its public key installed, one of the signatures should be valid
+       * for /postinstall to run.
+       * 
+ * + * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + */ + public java.util.List + getNewPartitionSignatureBuilderList() { + return getNewPartitionSignatureFieldBuilder().getBuilderList(); } - if (((bitField0_ & 0x00000400) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(13, hashTreeSalt_); + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Signatures.Signature, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder, chromeos_update_engine.UpdateMetadata.Signatures.SignatureOrBuilder> + getNewPartitionSignatureFieldBuilder() { + if (newPartitionSignatureBuilder_ == null) { + newPartitionSignatureBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Signatures.Signature, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder, chromeos_update_engine.UpdateMetadata.Signatures.SignatureOrBuilder>( + newPartitionSignature_, + ((bitField0_ & 0x00000010) != 0), + getParentForChildren(), + isClean()); + newPartitionSignature_ = null; + } + return newPartitionSignatureBuilder_; } - if (((bitField0_ & 0x00000800) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(14, getFecDataExtent()); + + private chromeos_update_engine.UpdateMetadata.PartitionInfo oldPartitionInfo_; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> oldPartitionInfoBuilder_; + /** + * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; + * @return Whether the oldPartitionInfo field is set. + */ + public boolean hasOldPartitionInfo() { + return ((bitField0_ & 0x00000020) != 0); } - if (((bitField0_ & 0x00001000) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(15, getFecExtent()); + /** + * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; + * @return The oldPartitionInfo. + */ + public chromeos_update_engine.UpdateMetadata.PartitionInfo getOldPartitionInfo() { + if (oldPartitionInfoBuilder_ == null) { + return oldPartitionInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldPartitionInfo_; + } else { + return oldPartitionInfoBuilder_.getMessage(); + } } - if (((bitField0_ & 0x00002000) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(16, fecRoots_); + /** + * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; + */ + public Builder setOldPartitionInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { + if (oldPartitionInfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + oldPartitionInfo_ = value; + } else { + oldPartitionInfoBuilder_.setMessage(value); + } + bitField0_ |= 0x00000020; + onChanged(); + return this; } - size += unknownFields.getSerializedSize(); - memoizedSize = size; - return size; - } - - @java.lang.Override - public boolean equals(final java.lang.Object obj) { - if (obj == this) { - return true; + /** + * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; + */ + public Builder setOldPartitionInfo( + chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder builderForValue) { + if (oldPartitionInfoBuilder_ == null) { + oldPartitionInfo_ = builderForValue.build(); + } else { + oldPartitionInfoBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000020; + onChanged(); + return this; } - if (!(obj instanceof chromeos_update_engine.UpdateMetadata.PartitionUpdate)) { - return super.equals(obj); + /** + * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; + */ + public Builder mergeOldPartitionInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { + if (oldPartitionInfoBuilder_ == null) { + if (((bitField0_ & 0x00000020) != 0) && + oldPartitionInfo_ != null && + oldPartitionInfo_ != chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance()) { + getOldPartitionInfoBuilder().mergeFrom(value); + } else { + oldPartitionInfo_ = value; + } + } else { + oldPartitionInfoBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000020; + onChanged(); + return this; } - chromeos_update_engine.UpdateMetadata.PartitionUpdate other = (chromeos_update_engine.UpdateMetadata.PartitionUpdate) obj; - - if (hasPartitionName() != other.hasPartitionName()) return false; - if (hasPartitionName()) { - if (!getPartitionName() - .equals(other.getPartitionName())) return false; + /** + * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; + */ + public Builder clearOldPartitionInfo() { + bitField0_ = (bitField0_ & ~0x00000020); + oldPartitionInfo_ = null; + if (oldPartitionInfoBuilder_ != null) { + oldPartitionInfoBuilder_.dispose(); + oldPartitionInfoBuilder_ = null; + } + onChanged(); + return this; } - if (hasRunPostinstall() != other.hasRunPostinstall()) return false; - if (hasRunPostinstall()) { - if (getRunPostinstall() - != other.getRunPostinstall()) return false; + /** + * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; + */ + public chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder getOldPartitionInfoBuilder() { + bitField0_ |= 0x00000020; + onChanged(); + return getOldPartitionInfoFieldBuilder().getBuilder(); } - if (hasPostinstallPath() != other.hasPostinstallPath()) return false; - if (hasPostinstallPath()) { - if (!getPostinstallPath() - .equals(other.getPostinstallPath())) return false; + /** + * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; + */ + public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getOldPartitionInfoOrBuilder() { + if (oldPartitionInfoBuilder_ != null) { + return oldPartitionInfoBuilder_.getMessageOrBuilder(); + } else { + return oldPartitionInfo_ == null ? + chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldPartitionInfo_; + } } - if (hasFilesystemType() != other.hasFilesystemType()) return false; - if (hasFilesystemType()) { - if (!getFilesystemType() - .equals(other.getFilesystemType())) return false; + /** + * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; + */ + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> + getOldPartitionInfoFieldBuilder() { + if (oldPartitionInfoBuilder_ == null) { + oldPartitionInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder>( + getOldPartitionInfo(), + getParentForChildren(), + isClean()); + oldPartitionInfo_ = null; + } + return oldPartitionInfoBuilder_; } - if (!getNewPartitionSignatureList() - .equals(other.getNewPartitionSignatureList())) return false; - if (hasOldPartitionInfo() != other.hasOldPartitionInfo()) return false; - if (hasOldPartitionInfo()) { - if (!getOldPartitionInfo() - .equals(other.getOldPartitionInfo())) return false; + + private chromeos_update_engine.UpdateMetadata.PartitionInfo newPartitionInfo_; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> newPartitionInfoBuilder_; + /** + * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; + * @return Whether the newPartitionInfo field is set. + */ + public boolean hasNewPartitionInfo() { + return ((bitField0_ & 0x00000040) != 0); } - if (hasNewPartitionInfo() != other.hasNewPartitionInfo()) return false; - if (hasNewPartitionInfo()) { - if (!getNewPartitionInfo() - .equals(other.getNewPartitionInfo())) return false; + /** + * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; + * @return The newPartitionInfo. + */ + public chromeos_update_engine.UpdateMetadata.PartitionInfo getNewPartitionInfo() { + if (newPartitionInfoBuilder_ == null) { + return newPartitionInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newPartitionInfo_; + } else { + return newPartitionInfoBuilder_.getMessage(); + } } - if (!getOperationsList() - .equals(other.getOperationsList())) return false; - if (hasPostinstallOptional() != other.hasPostinstallOptional()) return false; - if (hasPostinstallOptional()) { - if (getPostinstallOptional() - != other.getPostinstallOptional()) return false; + /** + * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; + */ + public Builder setNewPartitionInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { + if (newPartitionInfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + newPartitionInfo_ = value; + } else { + newPartitionInfoBuilder_.setMessage(value); + } + bitField0_ |= 0x00000040; + onChanged(); + return this; } - if (hasHashTreeDataExtent() != other.hasHashTreeDataExtent()) return false; - if (hasHashTreeDataExtent()) { - if (!getHashTreeDataExtent() - .equals(other.getHashTreeDataExtent())) return false; + /** + * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; + */ + public Builder setNewPartitionInfo( + chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder builderForValue) { + if (newPartitionInfoBuilder_ == null) { + newPartitionInfo_ = builderForValue.build(); + } else { + newPartitionInfoBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000040; + onChanged(); + return this; } - if (hasHashTreeExtent() != other.hasHashTreeExtent()) return false; - if (hasHashTreeExtent()) { - if (!getHashTreeExtent() - .equals(other.getHashTreeExtent())) return false; + /** + * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; + */ + public Builder mergeNewPartitionInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { + if (newPartitionInfoBuilder_ == null) { + if (((bitField0_ & 0x00000040) != 0) && + newPartitionInfo_ != null && + newPartitionInfo_ != chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance()) { + getNewPartitionInfoBuilder().mergeFrom(value); + } else { + newPartitionInfo_ = value; + } + } else { + newPartitionInfoBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000040; + onChanged(); + return this; } - if (hasHashTreeAlgorithm() != other.hasHashTreeAlgorithm()) return false; - if (hasHashTreeAlgorithm()) { - if (!getHashTreeAlgorithm() - .equals(other.getHashTreeAlgorithm())) return false; + /** + * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; + */ + public Builder clearNewPartitionInfo() { + bitField0_ = (bitField0_ & ~0x00000040); + newPartitionInfo_ = null; + if (newPartitionInfoBuilder_ != null) { + newPartitionInfoBuilder_.dispose(); + newPartitionInfoBuilder_ = null; + } + onChanged(); + return this; } - if (hasHashTreeSalt() != other.hasHashTreeSalt()) return false; - if (hasHashTreeSalt()) { - if (!getHashTreeSalt() - .equals(other.getHashTreeSalt())) return false; + /** + * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; + */ + public chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder getNewPartitionInfoBuilder() { + bitField0_ |= 0x00000040; + onChanged(); + return getNewPartitionInfoFieldBuilder().getBuilder(); } - if (hasFecDataExtent() != other.hasFecDataExtent()) return false; - if (hasFecDataExtent()) { - if (!getFecDataExtent() - .equals(other.getFecDataExtent())) return false; + /** + * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; + */ + public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getNewPartitionInfoOrBuilder() { + if (newPartitionInfoBuilder_ != null) { + return newPartitionInfoBuilder_.getMessageOrBuilder(); + } else { + return newPartitionInfo_ == null ? + chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newPartitionInfo_; + } } - if (hasFecExtent() != other.hasFecExtent()) return false; - if (hasFecExtent()) { - if (!getFecExtent() - .equals(other.getFecExtent())) return false; + /** + * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; + */ + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> + getNewPartitionInfoFieldBuilder() { + if (newPartitionInfoBuilder_ == null) { + newPartitionInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder>( + getNewPartitionInfo(), + getParentForChildren(), + isClean()); + newPartitionInfo_ = null; + } + return newPartitionInfoBuilder_; } - if (hasFecRoots() != other.hasFecRoots()) return false; - if (hasFecRoots()) { - if (getFecRoots() - != other.getFecRoots()) return false; + + private java.util.List operations_ = + java.util.Collections.emptyList(); + private void ensureOperationsIsMutable() { + if (!((bitField0_ & 0x00000080) != 0)) { + operations_ = new java.util.ArrayList(operations_); + bitField0_ |= 0x00000080; + } } - if (!unknownFields.equals(other.unknownFields)) return false; - return true; - } - @java.lang.Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder> operationsBuilder_; + + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public java.util.List getOperationsList() { + if (operationsBuilder_ == null) { + return java.util.Collections.unmodifiableList(operations_); + } else { + return operationsBuilder_.getMessageList(); + } } - int hash = 41; - hash = (19 * hash) + getDescriptor().hashCode(); - if (hasPartitionName()) { - hash = (37 * hash) + PARTITION_NAME_FIELD_NUMBER; - hash = (53 * hash) + getPartitionName().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public int getOperationsCount() { + if (operationsBuilder_ == null) { + return operations_.size(); + } else { + return operationsBuilder_.getCount(); + } } - if (hasRunPostinstall()) { - hash = (37 * hash) + RUN_POSTINSTALL_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getRunPostinstall()); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public chromeos_update_engine.UpdateMetadata.InstallOperation getOperations(int index) { + if (operationsBuilder_ == null) { + return operations_.get(index); + } else { + return operationsBuilder_.getMessage(index); + } } - if (hasPostinstallPath()) { - hash = (37 * hash) + POSTINSTALL_PATH_FIELD_NUMBER; - hash = (53 * hash) + getPostinstallPath().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public Builder setOperations( + int index, chromeos_update_engine.UpdateMetadata.InstallOperation value) { + if (operationsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOperationsIsMutable(); + operations_.set(index, value); + onChanged(); + } else { + operationsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public Builder setOperations( + int index, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { + if (operationsBuilder_ == null) { + ensureOperationsIsMutable(); + operations_.set(index, builderForValue.build()); + onChanged(); + } else { + operationsBuilder_.setMessage(index, builderForValue.build()); + } + return this; } - if (hasFilesystemType()) { - hash = (37 * hash) + FILESYSTEM_TYPE_FIELD_NUMBER; - hash = (53 * hash) + getFilesystemType().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public Builder addOperations(chromeos_update_engine.UpdateMetadata.InstallOperation value) { + if (operationsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOperationsIsMutable(); + operations_.add(value); + onChanged(); + } else { + operationsBuilder_.addMessage(value); + } + return this; } - if (getNewPartitionSignatureCount() > 0) { - hash = (37 * hash) + NEW_PARTITION_SIGNATURE_FIELD_NUMBER; - hash = (53 * hash) + getNewPartitionSignatureList().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public Builder addOperations( + int index, chromeos_update_engine.UpdateMetadata.InstallOperation value) { + if (operationsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOperationsIsMutable(); + operations_.add(index, value); + onChanged(); + } else { + operationsBuilder_.addMessage(index, value); + } + return this; } - if (hasOldPartitionInfo()) { - hash = (37 * hash) + OLD_PARTITION_INFO_FIELD_NUMBER; - hash = (53 * hash) + getOldPartitionInfo().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public Builder addOperations( + chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { + if (operationsBuilder_ == null) { + ensureOperationsIsMutable(); + operations_.add(builderForValue.build()); + onChanged(); + } else { + operationsBuilder_.addMessage(builderForValue.build()); + } + return this; } - if (hasNewPartitionInfo()) { - hash = (37 * hash) + NEW_PARTITION_INFO_FIELD_NUMBER; - hash = (53 * hash) + getNewPartitionInfo().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public Builder addOperations( + int index, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { + if (operationsBuilder_ == null) { + ensureOperationsIsMutable(); + operations_.add(index, builderForValue.build()); + onChanged(); + } else { + operationsBuilder_.addMessage(index, builderForValue.build()); + } + return this; } - if (getOperationsCount() > 0) { - hash = (37 * hash) + OPERATIONS_FIELD_NUMBER; - hash = (53 * hash) + getOperationsList().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public Builder addAllOperations( + java.lang.Iterable values) { + if (operationsBuilder_ == null) { + ensureOperationsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, operations_); + onChanged(); + } else { + operationsBuilder_.addAllMessages(values); + } + return this; } - if (hasPostinstallOptional()) { - hash = (37 * hash) + POSTINSTALL_OPTIONAL_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getPostinstallOptional()); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public Builder clearOperations() { + if (operationsBuilder_ == null) { + operations_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000080); + onChanged(); + } else { + operationsBuilder_.clear(); + } + return this; } - if (hasHashTreeDataExtent()) { - hash = (37 * hash) + HASH_TREE_DATA_EXTENT_FIELD_NUMBER; - hash = (53 * hash) + getHashTreeDataExtent().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public Builder removeOperations(int index) { + if (operationsBuilder_ == null) { + ensureOperationsIsMutable(); + operations_.remove(index); + onChanged(); + } else { + operationsBuilder_.remove(index); + } + return this; } - if (hasHashTreeExtent()) { - hash = (37 * hash) + HASH_TREE_EXTENT_FIELD_NUMBER; - hash = (53 * hash) + getHashTreeExtent().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder getOperationsBuilder( + int index) { + return getOperationsFieldBuilder().getBuilder(index); } - if (hasHashTreeAlgorithm()) { - hash = (37 * hash) + HASH_TREE_ALGORITHM_FIELD_NUMBER; - hash = (53 * hash) + getHashTreeAlgorithm().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder getOperationsOrBuilder( + int index) { + if (operationsBuilder_ == null) { + return operations_.get(index); } else { + return operationsBuilder_.getMessageOrBuilder(index); + } } - if (hasHashTreeSalt()) { - hash = (37 * hash) + HASH_TREE_SALT_FIELD_NUMBER; - hash = (53 * hash) + getHashTreeSalt().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public java.util.List + getOperationsOrBuilderList() { + if (operationsBuilder_ != null) { + return operationsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(operations_); + } } - if (hasFecDataExtent()) { - hash = (37 * hash) + FEC_DATA_EXTENT_FIELD_NUMBER; - hash = (53 * hash) + getFecDataExtent().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder addOperationsBuilder() { + return getOperationsFieldBuilder().addBuilder( + chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance()); } - if (hasFecExtent()) { - hash = (37 * hash) + FEC_EXTENT_FIELD_NUMBER; - hash = (53 * hash) + getFecExtent().hashCode(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder addOperationsBuilder( + int index) { + return getOperationsFieldBuilder().addBuilder( + index, chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance()); } - if (hasFecRoots()) { - hash = (37 * hash) + FEC_ROOTS_FIELD_NUMBER; - hash = (53 * hash) + getFecRoots(); + /** + *
+       * The list of operations to be performed to apply this PartitionUpdate. The
+       * associated operation blobs (in operations[i].data_offset, data_length)
+       * should be stored contiguously and in the same order.
+       * 
+ * + * repeated .chromeos_update_engine.InstallOperation operations = 8; + */ + public java.util.List + getOperationsBuilderList() { + return getOperationsFieldBuilder().getBuilderList(); } - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( - java.nio.ByteBuffer data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( - java.nio.ByteBuffer data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - @java.lang.Override - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.PartitionUpdate prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - @java.lang.Override - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - *
-     * Describes the update to apply to a single partition.
-     * 
- * - * Protobuf type {@code chromeos_update_engine.PartitionUpdate} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:chromeos_update_engine.PartitionUpdate) - chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_PartitionUpdate_descriptor; + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder> + getOperationsFieldBuilder() { + if (operationsBuilder_ == null) { + operationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder>( + operations_, + ((bitField0_ & 0x00000080) != 0), + getParentForChildren(), + isClean()); + operations_ = null; + } + return operationsBuilder_; } + private boolean postinstallOptional_ ; + /** + *
+       * Whether a failure in the postinstall step for this partition should be
+       * ignored.
+       * 
+ * + * optional bool postinstall_optional = 9; + * @return Whether the postinstallOptional field is set. + */ @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_PartitionUpdate_fieldAccessorTable - .ensureFieldAccessorsInitialized( - chromeos_update_engine.UpdateMetadata.PartitionUpdate.class, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder.class); + public boolean hasPostinstallOptional() { + return ((bitField0_ & 0x00000100) != 0); } - - // Construct using chromeos_update_engine.UpdateMetadata.PartitionUpdate.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); + /** + *
+       * Whether a failure in the postinstall step for this partition should be
+       * ignored.
+       * 
+ * + * optional bool postinstall_optional = 9; + * @return The postinstallOptional. + */ + @java.lang.Override + public boolean getPostinstallOptional() { + return postinstallOptional_; } - - private Builder( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); + /** + *
+       * Whether a failure in the postinstall step for this partition should be
+       * ignored.
+       * 
+ * + * optional bool postinstall_optional = 9; + * @param value The postinstallOptional to set. + * @return This builder for chaining. + */ + public Builder setPostinstallOptional(boolean value) { + + postinstallOptional_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - getNewPartitionSignatureFieldBuilder(); - getOldPartitionInfoFieldBuilder(); - getNewPartitionInfoFieldBuilder(); - getOperationsFieldBuilder(); - getHashTreeDataExtentFieldBuilder(); - getHashTreeExtentFieldBuilder(); - getFecDataExtentFieldBuilder(); - getFecExtentFieldBuilder(); - } + /** + *
+       * Whether a failure in the postinstall step for this partition should be
+       * ignored.
+       * 
+ * + * optional bool postinstall_optional = 9; + * @return This builder for chaining. + */ + public Builder clearPostinstallOptional() { + bitField0_ = (bitField0_ & ~0x00000100); + postinstallOptional_ = false; + onChanged(); + return this; } - @java.lang.Override - public Builder clear() { - super.clear(); - partitionName_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - runPostinstall_ = false; - bitField0_ = (bitField0_ & ~0x00000002); - postinstallPath_ = ""; - bitField0_ = (bitField0_ & ~0x00000004); - filesystemType_ = ""; - bitField0_ = (bitField0_ & ~0x00000008); - if (newPartitionSignatureBuilder_ == null) { - newPartitionSignature_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000010); - } else { - newPartitionSignatureBuilder_.clear(); - } - if (oldPartitionInfoBuilder_ == null) { - oldPartitionInfo_ = null; + + private chromeos_update_engine.UpdateMetadata.Extent hashTreeDataExtent_; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> hashTreeDataExtentBuilder_; + /** + *
+       * The extent for data covered by verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + * @return Whether the hashTreeDataExtent field is set. + */ + public boolean hasHashTreeDataExtent() { + return ((bitField0_ & 0x00000200) != 0); + } + /** + *
+       * The extent for data covered by verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + * @return The hashTreeDataExtent. + */ + public chromeos_update_engine.UpdateMetadata.Extent getHashTreeDataExtent() { + if (hashTreeDataExtentBuilder_ == null) { + return hashTreeDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeDataExtent_; } else { - oldPartitionInfoBuilder_.clear(); + return hashTreeDataExtentBuilder_.getMessage(); } - bitField0_ = (bitField0_ & ~0x00000020); - if (newPartitionInfoBuilder_ == null) { - newPartitionInfo_ = null; + } + /** + *
+       * The extent for data covered by verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + */ + public Builder setHashTreeDataExtent(chromeos_update_engine.UpdateMetadata.Extent value) { + if (hashTreeDataExtentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + hashTreeDataExtent_ = value; } else { - newPartitionInfoBuilder_.clear(); + hashTreeDataExtentBuilder_.setMessage(value); } - bitField0_ = (bitField0_ & ~0x00000040); - if (operationsBuilder_ == null) { - operations_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000080); + bitField0_ |= 0x00000200; + onChanged(); + return this; + } + /** + *
+       * The extent for data covered by verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + */ + public Builder setHashTreeDataExtent( + chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (hashTreeDataExtentBuilder_ == null) { + hashTreeDataExtent_ = builderForValue.build(); } else { - operationsBuilder_.clear(); + hashTreeDataExtentBuilder_.setMessage(builderForValue.build()); } - postinstallOptional_ = false; - bitField0_ = (bitField0_ & ~0x00000100); + bitField0_ |= 0x00000200; + onChanged(); + return this; + } + /** + *
+       * The extent for data covered by verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + */ + public Builder mergeHashTreeDataExtent(chromeos_update_engine.UpdateMetadata.Extent value) { if (hashTreeDataExtentBuilder_ == null) { - hashTreeDataExtent_ = null; + if (((bitField0_ & 0x00000200) != 0) && + hashTreeDataExtent_ != null && + hashTreeDataExtent_ != chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()) { + getHashTreeDataExtentBuilder().mergeFrom(value); + } else { + hashTreeDataExtent_ = value; + } } else { - hashTreeDataExtentBuilder_.clear(); + hashTreeDataExtentBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000200; + onChanged(); + return this; + } + /** + *
+       * The extent for data covered by verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + */ + public Builder clearHashTreeDataExtent() { bitField0_ = (bitField0_ & ~0x00000200); - if (hashTreeExtentBuilder_ == null) { - hashTreeExtent_ = null; - } else { - hashTreeExtentBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000400); - hashTreeAlgorithm_ = ""; - bitField0_ = (bitField0_ & ~0x00000800); - hashTreeSalt_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00001000); - if (fecDataExtentBuilder_ == null) { - fecDataExtent_ = null; - } else { - fecDataExtentBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00002000); - if (fecExtentBuilder_ == null) { - fecExtent_ = null; - } else { - fecExtentBuilder_.clear(); + hashTreeDataExtent_ = null; + if (hashTreeDataExtentBuilder_ != null) { + hashTreeDataExtentBuilder_.dispose(); + hashTreeDataExtentBuilder_ = null; } - bitField0_ = (bitField0_ & ~0x00004000); - fecRoots_ = 2; - bitField0_ = (bitField0_ & ~0x00008000); + onChanged(); return this; } - - @java.lang.Override - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_PartitionUpdate_descriptor; + /** + *
+       * The extent for data covered by verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + */ + public chromeos_update_engine.UpdateMetadata.Extent.Builder getHashTreeDataExtentBuilder() { + bitField0_ |= 0x00000200; + onChanged(); + return getHashTreeDataExtentFieldBuilder().getBuilder(); } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionUpdate getDefaultInstanceForType() { - return chromeos_update_engine.UpdateMetadata.PartitionUpdate.getDefaultInstance(); + /** + *
+       * The extent for data covered by verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + */ + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getHashTreeDataExtentOrBuilder() { + if (hashTreeDataExtentBuilder_ != null) { + return hashTreeDataExtentBuilder_.getMessageOrBuilder(); + } else { + return hashTreeDataExtent_ == null ? + chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeDataExtent_; + } } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionUpdate build() { - chromeos_update_engine.UpdateMetadata.PartitionUpdate result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); + /** + *
+       * The extent for data covered by verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + */ + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> + getHashTreeDataExtentFieldBuilder() { + if (hashTreeDataExtentBuilder_ == null) { + hashTreeDataExtentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( + getHashTreeDataExtent(), + getParentForChildren(), + isClean()); + hashTreeDataExtent_ = null; } - return result; + return hashTreeDataExtentBuilder_; } - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionUpdate buildPartial() { - chromeos_update_engine.UpdateMetadata.PartitionUpdate result = new chromeos_update_engine.UpdateMetadata.PartitionUpdate(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) != 0)) { - to_bitField0_ |= 0x00000001; - } - result.partitionName_ = partitionName_; - if (((from_bitField0_ & 0x00000002) != 0)) { - result.runPostinstall_ = runPostinstall_; - to_bitField0_ |= 0x00000002; - } - if (((from_bitField0_ & 0x00000004) != 0)) { - to_bitField0_ |= 0x00000004; - } - result.postinstallPath_ = postinstallPath_; - if (((from_bitField0_ & 0x00000008) != 0)) { - to_bitField0_ |= 0x00000008; - } - result.filesystemType_ = filesystemType_; - if (newPartitionSignatureBuilder_ == null) { - if (((bitField0_ & 0x00000010) != 0)) { - newPartitionSignature_ = java.util.Collections.unmodifiableList(newPartitionSignature_); - bitField0_ = (bitField0_ & ~0x00000010); - } - result.newPartitionSignature_ = newPartitionSignature_; + private chromeos_update_engine.UpdateMetadata.Extent hashTreeExtent_; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> hashTreeExtentBuilder_; + /** + *
+       * The extent to store verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + * @return Whether the hashTreeExtent field is set. + */ + public boolean hasHashTreeExtent() { + return ((bitField0_ & 0x00000400) != 0); + } + /** + *
+       * The extent to store verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + * @return The hashTreeExtent. + */ + public chromeos_update_engine.UpdateMetadata.Extent getHashTreeExtent() { + if (hashTreeExtentBuilder_ == null) { + return hashTreeExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeExtent_; } else { - result.newPartitionSignature_ = newPartitionSignatureBuilder_.build(); - } - if (((from_bitField0_ & 0x00000020) != 0)) { - if (oldPartitionInfoBuilder_ == null) { - result.oldPartitionInfo_ = oldPartitionInfo_; - } else { - result.oldPartitionInfo_ = oldPartitionInfoBuilder_.build(); - } - to_bitField0_ |= 0x00000010; - } - if (((from_bitField0_ & 0x00000040) != 0)) { - if (newPartitionInfoBuilder_ == null) { - result.newPartitionInfo_ = newPartitionInfo_; - } else { - result.newPartitionInfo_ = newPartitionInfoBuilder_.build(); - } - to_bitField0_ |= 0x00000020; + return hashTreeExtentBuilder_.getMessage(); } - if (operationsBuilder_ == null) { - if (((bitField0_ & 0x00000080) != 0)) { - operations_ = java.util.Collections.unmodifiableList(operations_); - bitField0_ = (bitField0_ & ~0x00000080); + } + /** + *
+       * The extent to store verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + */ + public Builder setHashTreeExtent(chromeos_update_engine.UpdateMetadata.Extent value) { + if (hashTreeExtentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); } - result.operations_ = operations_; + hashTreeExtent_ = value; } else { - result.operations_ = operationsBuilder_.build(); - } - if (((from_bitField0_ & 0x00000100) != 0)) { - result.postinstallOptional_ = postinstallOptional_; - to_bitField0_ |= 0x00000040; + hashTreeExtentBuilder_.setMessage(value); } - if (((from_bitField0_ & 0x00000200) != 0)) { - if (hashTreeDataExtentBuilder_ == null) { - result.hashTreeDataExtent_ = hashTreeDataExtent_; - } else { - result.hashTreeDataExtent_ = hashTreeDataExtentBuilder_.build(); - } - to_bitField0_ |= 0x00000080; + bitField0_ |= 0x00000400; + onChanged(); + return this; + } + /** + *
+       * The extent to store verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + */ + public Builder setHashTreeExtent( + chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (hashTreeExtentBuilder_ == null) { + hashTreeExtent_ = builderForValue.build(); + } else { + hashTreeExtentBuilder_.setMessage(builderForValue.build()); } - if (((from_bitField0_ & 0x00000400) != 0)) { - if (hashTreeExtentBuilder_ == null) { - result.hashTreeExtent_ = hashTreeExtent_; + bitField0_ |= 0x00000400; + onChanged(); + return this; + } + /** + *
+       * The extent to store verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + */ + public Builder mergeHashTreeExtent(chromeos_update_engine.UpdateMetadata.Extent value) { + if (hashTreeExtentBuilder_ == null) { + if (((bitField0_ & 0x00000400) != 0) && + hashTreeExtent_ != null && + hashTreeExtent_ != chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()) { + getHashTreeExtentBuilder().mergeFrom(value); } else { - result.hashTreeExtent_ = hashTreeExtentBuilder_.build(); + hashTreeExtent_ = value; } - to_bitField0_ |= 0x00000100; + } else { + hashTreeExtentBuilder_.mergeFrom(value); } - if (((from_bitField0_ & 0x00000800) != 0)) { - to_bitField0_ |= 0x00000200; + bitField0_ |= 0x00000400; + onChanged(); + return this; + } + /** + *
+       * The extent to store verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + */ + public Builder clearHashTreeExtent() { + bitField0_ = (bitField0_ & ~0x00000400); + hashTreeExtent_ = null; + if (hashTreeExtentBuilder_ != null) { + hashTreeExtentBuilder_.dispose(); + hashTreeExtentBuilder_ = null; } - result.hashTreeAlgorithm_ = hashTreeAlgorithm_; - if (((from_bitField0_ & 0x00001000) != 0)) { - to_bitField0_ |= 0x00000400; + onChanged(); + return this; + } + /** + *
+       * The extent to store verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + */ + public chromeos_update_engine.UpdateMetadata.Extent.Builder getHashTreeExtentBuilder() { + bitField0_ |= 0x00000400; + onChanged(); + return getHashTreeExtentFieldBuilder().getBuilder(); + } + /** + *
+       * The extent to store verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + */ + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getHashTreeExtentOrBuilder() { + if (hashTreeExtentBuilder_ != null) { + return hashTreeExtentBuilder_.getMessageOrBuilder(); + } else { + return hashTreeExtent_ == null ? + chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeExtent_; } - result.hashTreeSalt_ = hashTreeSalt_; - if (((from_bitField0_ & 0x00002000) != 0)) { - if (fecDataExtentBuilder_ == null) { - result.fecDataExtent_ = fecDataExtent_; - } else { - result.fecDataExtent_ = fecDataExtentBuilder_.build(); - } - to_bitField0_ |= 0x00000800; + } + /** + *
+       * The extent to store verity hash tree.
+       * 
+ * + * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + */ + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> + getHashTreeExtentFieldBuilder() { + if (hashTreeExtentBuilder_ == null) { + hashTreeExtentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( + getHashTreeExtent(), + getParentForChildren(), + isClean()); + hashTreeExtent_ = null; } - if (((from_bitField0_ & 0x00004000) != 0)) { - if (fecExtentBuilder_ == null) { - result.fecExtent_ = fecExtent_; - } else { - result.fecExtent_ = fecExtentBuilder_.build(); + return hashTreeExtentBuilder_; + } + + private java.lang.Object hashTreeAlgorithm_ = ""; + /** + *
+       * The hash algorithm used in verity hash tree.
+       * 
+ * + * optional string hash_tree_algorithm = 12; + * @return Whether the hashTreeAlgorithm field is set. + */ + public boolean hasHashTreeAlgorithm() { + return ((bitField0_ & 0x00000800) != 0); + } + /** + *
+       * The hash algorithm used in verity hash tree.
+       * 
+ * + * optional string hash_tree_algorithm = 12; + * @return The hashTreeAlgorithm. + */ + public java.lang.String getHashTreeAlgorithm() { + java.lang.Object ref = hashTreeAlgorithm_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + hashTreeAlgorithm_ = s; } - to_bitField0_ |= 0x00001000; + return s; + } else { + return (java.lang.String) ref; } - if (((from_bitField0_ & 0x00008000) != 0)) { - to_bitField0_ |= 0x00002000; + } + /** + *
+       * The hash algorithm used in verity hash tree.
+       * 
+ * + * optional string hash_tree_algorithm = 12; + * @return The bytes for hashTreeAlgorithm. + */ + public com.google.protobuf.ByteString + getHashTreeAlgorithmBytes() { + java.lang.Object ref = hashTreeAlgorithm_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + hashTreeAlgorithm_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; } - result.fecRoots_ = fecRoots_; - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; } - - @java.lang.Override - public Builder clone() { - return super.clone(); + /** + *
+       * The hash algorithm used in verity hash tree.
+       * 
+ * + * optional string hash_tree_algorithm = 12; + * @param value The hashTreeAlgorithm to set. + * @return This builder for chaining. + */ + public Builder setHashTreeAlgorithm( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + hashTreeAlgorithm_ = value; + bitField0_ |= 0x00000800; + onChanged(); + return this; } - @java.lang.Override - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.setField(field, value); + /** + *
+       * The hash algorithm used in verity hash tree.
+       * 
+ * + * optional string hash_tree_algorithm = 12; + * @return This builder for chaining. + */ + public Builder clearHashTreeAlgorithm() { + hashTreeAlgorithm_ = getDefaultInstance().getHashTreeAlgorithm(); + bitField0_ = (bitField0_ & ~0x00000800); + onChanged(); + return this; } - @java.lang.Override - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); + /** + *
+       * The hash algorithm used in verity hash tree.
+       * 
+ * + * optional string hash_tree_algorithm = 12; + * @param value The bytes for hashTreeAlgorithm to set. + * @return This builder for chaining. + */ + public Builder setHashTreeAlgorithmBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + hashTreeAlgorithm_ = value; + bitField0_ |= 0x00000800; + onChanged(); + return this; } + + private com.google.protobuf.ByteString hashTreeSalt_ = com.google.protobuf.ByteString.EMPTY; + /** + *
+       * The salt used for verity hash tree.
+       * 
+ * + * optional bytes hash_tree_salt = 13; + * @return Whether the hashTreeSalt field is set. + */ @java.lang.Override - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); + public boolean hasHashTreeSalt() { + return ((bitField0_ & 0x00001000) != 0); } + /** + *
+       * The salt used for verity hash tree.
+       * 
+ * + * optional bytes hash_tree_salt = 13; + * @return The hashTreeSalt. + */ @java.lang.Override - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); + public com.google.protobuf.ByteString getHashTreeSalt() { + return hashTreeSalt_; + } + /** + *
+       * The salt used for verity hash tree.
+       * 
+ * + * optional bytes hash_tree_salt = 13; + * @param value The hashTreeSalt to set. + * @return This builder for chaining. + */ + public Builder setHashTreeSalt(com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + hashTreeSalt_ = value; + bitField0_ |= 0x00001000; + onChanged(); + return this; + } + /** + *
+       * The salt used for verity hash tree.
+       * 
+ * + * optional bytes hash_tree_salt = 13; + * @return This builder for chaining. + */ + public Builder clearHashTreeSalt() { + bitField0_ = (bitField0_ & ~0x00001000); + hashTreeSalt_ = getDefaultInstance().getHashTreeSalt(); + onChanged(); + return this; } - @java.lang.Override - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.addRepeatedField(field, value); + + private chromeos_update_engine.UpdateMetadata.Extent fecDataExtent_; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> fecDataExtentBuilder_; + /** + *
+       * The extent for data covered by FEC.
+       * 
+ * + * optional .chromeos_update_engine.Extent fec_data_extent = 14; + * @return Whether the fecDataExtent field is set. + */ + public boolean hasFecDataExtent() { + return ((bitField0_ & 0x00002000) != 0); } - @java.lang.Override - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof chromeos_update_engine.UpdateMetadata.PartitionUpdate) { - return mergeFrom((chromeos_update_engine.UpdateMetadata.PartitionUpdate)other); + /** + *
+       * The extent for data covered by FEC.
+       * 
+ * + * optional .chromeos_update_engine.Extent fec_data_extent = 14; + * @return The fecDataExtent. + */ + public chromeos_update_engine.UpdateMetadata.Extent getFecDataExtent() { + if (fecDataExtentBuilder_ == null) { + return fecDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecDataExtent_; } else { - super.mergeFrom(other); - return this; + return fecDataExtentBuilder_.getMessage(); } } - - public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.PartitionUpdate other) { - if (other == chromeos_update_engine.UpdateMetadata.PartitionUpdate.getDefaultInstance()) return this; - if (other.hasPartitionName()) { - bitField0_ |= 0x00000001; - partitionName_ = other.partitionName_; - onChanged(); - } - if (other.hasRunPostinstall()) { - setRunPostinstall(other.getRunPostinstall()); - } - if (other.hasPostinstallPath()) { - bitField0_ |= 0x00000004; - postinstallPath_ = other.postinstallPath_; - onChanged(); - } - if (other.hasFilesystemType()) { - bitField0_ |= 0x00000008; - filesystemType_ = other.filesystemType_; - onChanged(); - } - if (newPartitionSignatureBuilder_ == null) { - if (!other.newPartitionSignature_.isEmpty()) { - if (newPartitionSignature_.isEmpty()) { - newPartitionSignature_ = other.newPartitionSignature_; - bitField0_ = (bitField0_ & ~0x00000010); - } else { - ensureNewPartitionSignatureIsMutable(); - newPartitionSignature_.addAll(other.newPartitionSignature_); - } - onChanged(); + /** + *
+       * The extent for data covered by FEC.
+       * 
+ * + * optional .chromeos_update_engine.Extent fec_data_extent = 14; + */ + public Builder setFecDataExtent(chromeos_update_engine.UpdateMetadata.Extent value) { + if (fecDataExtentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); } + fecDataExtent_ = value; } else { - if (!other.newPartitionSignature_.isEmpty()) { - if (newPartitionSignatureBuilder_.isEmpty()) { - newPartitionSignatureBuilder_.dispose(); - newPartitionSignatureBuilder_ = null; - newPartitionSignature_ = other.newPartitionSignature_; - bitField0_ = (bitField0_ & ~0x00000010); - newPartitionSignatureBuilder_ = - com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getNewPartitionSignatureFieldBuilder() : null; - } else { - newPartitionSignatureBuilder_.addAllMessages(other.newPartitionSignature_); - } - } - } - if (other.hasOldPartitionInfo()) { - mergeOldPartitionInfo(other.getOldPartitionInfo()); - } - if (other.hasNewPartitionInfo()) { - mergeNewPartitionInfo(other.getNewPartitionInfo()); + fecDataExtentBuilder_.setMessage(value); } - if (operationsBuilder_ == null) { - if (!other.operations_.isEmpty()) { - if (operations_.isEmpty()) { - operations_ = other.operations_; - bitField0_ = (bitField0_ & ~0x00000080); - } else { - ensureOperationsIsMutable(); - operations_.addAll(other.operations_); - } - onChanged(); - } + bitField0_ |= 0x00002000; + onChanged(); + return this; + } + /** + *
+       * The extent for data covered by FEC.
+       * 
+ * + * optional .chromeos_update_engine.Extent fec_data_extent = 14; + */ + public Builder setFecDataExtent( + chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (fecDataExtentBuilder_ == null) { + fecDataExtent_ = builderForValue.build(); } else { - if (!other.operations_.isEmpty()) { - if (operationsBuilder_.isEmpty()) { - operationsBuilder_.dispose(); - operationsBuilder_ = null; - operations_ = other.operations_; - bitField0_ = (bitField0_ & ~0x00000080); - operationsBuilder_ = - com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getOperationsFieldBuilder() : null; - } else { - operationsBuilder_.addAllMessages(other.operations_); - } - } - } - if (other.hasPostinstallOptional()) { - setPostinstallOptional(other.getPostinstallOptional()); - } - if (other.hasHashTreeDataExtent()) { - mergeHashTreeDataExtent(other.getHashTreeDataExtent()); - } - if (other.hasHashTreeExtent()) { - mergeHashTreeExtent(other.getHashTreeExtent()); - } - if (other.hasHashTreeAlgorithm()) { - bitField0_ |= 0x00000800; - hashTreeAlgorithm_ = other.hashTreeAlgorithm_; - onChanged(); - } - if (other.hasHashTreeSalt()) { - setHashTreeSalt(other.getHashTreeSalt()); - } - if (other.hasFecDataExtent()) { - mergeFecDataExtent(other.getFecDataExtent()); - } - if (other.hasFecExtent()) { - mergeFecExtent(other.getFecExtent()); - } - if (other.hasFecRoots()) { - setFecRoots(other.getFecRoots()); + fecDataExtentBuilder_.setMessage(builderForValue.build()); } - this.mergeUnknownFields(other.unknownFields); + bitField0_ |= 0x00002000; onChanged(); return this; } - - @java.lang.Override - public final boolean isInitialized() { - if (!hasPartitionName()) { - return false; - } - for (int i = 0; i < getOperationsCount(); i++) { - if (!getOperations(i).isInitialized()) { - return false; + /** + *
+       * The extent for data covered by FEC.
+       * 
+ * + * optional .chromeos_update_engine.Extent fec_data_extent = 14; + */ + public Builder mergeFecDataExtent(chromeos_update_engine.UpdateMetadata.Extent value) { + if (fecDataExtentBuilder_ == null) { + if (((bitField0_ & 0x00002000) != 0) && + fecDataExtent_ != null && + fecDataExtent_ != chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()) { + getFecDataExtentBuilder().mergeFrom(value); + } else { + fecDataExtent_ = value; } + } else { + fecDataExtentBuilder_.mergeFrom(value); } - return true; + bitField0_ |= 0x00002000; + onChanged(); + return this; } - - @java.lang.Override - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - chromeos_update_engine.UpdateMetadata.PartitionUpdate parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (chromeos_update_engine.UpdateMetadata.PartitionUpdate) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + /** + *
+       * The extent for data covered by FEC.
+       * 
+ * + * optional .chromeos_update_engine.Extent fec_data_extent = 14; + */ + public Builder clearFecDataExtent() { + bitField0_ = (bitField0_ & ~0x00002000); + fecDataExtent_ = null; + if (fecDataExtentBuilder_ != null) { + fecDataExtentBuilder_.dispose(); + fecDataExtentBuilder_ = null; } + onChanged(); return this; } - private int bitField0_; - - private java.lang.Object partitionName_ = ""; /** *
-       * A platform-specific name to identify the partition set being updated. For
-       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * The extent for data covered by FEC.
        * 
* - * required string partition_name = 1; - * @return Whether the partitionName field is set. + * optional .chromeos_update_engine.Extent fec_data_extent = 14; */ - public boolean hasPartitionName() { - return ((bitField0_ & 0x00000001) != 0); + public chromeos_update_engine.UpdateMetadata.Extent.Builder getFecDataExtentBuilder() { + bitField0_ |= 0x00002000; + onChanged(); + return getFecDataExtentFieldBuilder().getBuilder(); } /** *
-       * A platform-specific name to identify the partition set being updated. For
-       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * The extent for data covered by FEC.
        * 
* - * required string partition_name = 1; - * @return The partitionName. + * optional .chromeos_update_engine.Extent fec_data_extent = 14; */ - public java.lang.String getPartitionName() { - java.lang.Object ref = partitionName_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - partitionName_ = s; - } - return s; + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getFecDataExtentOrBuilder() { + if (fecDataExtentBuilder_ != null) { + return fecDataExtentBuilder_.getMessageOrBuilder(); } else { - return (java.lang.String) ref; + return fecDataExtent_ == null ? + chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecDataExtent_; } } /** *
-       * A platform-specific name to identify the partition set being updated. For
-       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * The extent for data covered by FEC.
        * 
* - * required string partition_name = 1; - * @return The bytes for partitionName. + * optional .chromeos_update_engine.Extent fec_data_extent = 14; */ - public com.google.protobuf.ByteString - getPartitionNameBytes() { - java.lang.Object ref = partitionName_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - partitionName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> + getFecDataExtentFieldBuilder() { + if (fecDataExtentBuilder_ == null) { + fecDataExtentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( + getFecDataExtent(), + getParentForChildren(), + isClean()); + fecDataExtent_ = null; } + return fecDataExtentBuilder_; } + + private chromeos_update_engine.UpdateMetadata.Extent fecExtent_; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> fecExtentBuilder_; /** *
-       * A platform-specific name to identify the partition set being updated. For
-       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * The extent to store FEC.
        * 
* - * required string partition_name = 1; - * @param value The partitionName to set. - * @return This builder for chaining. + * optional .chromeos_update_engine.Extent fec_extent = 15; + * @return Whether the fecExtent field is set. */ - public Builder setPartitionName( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - partitionName_ = value; - onChanged(); - return this; + public boolean hasFecExtent() { + return ((bitField0_ & 0x00004000) != 0); } /** *
-       * A platform-specific name to identify the partition set being updated. For
-       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * The extent to store FEC.
        * 
* - * required string partition_name = 1; - * @return This builder for chaining. + * optional .chromeos_update_engine.Extent fec_extent = 15; + * @return The fecExtent. */ - public Builder clearPartitionName() { - bitField0_ = (bitField0_ & ~0x00000001); - partitionName_ = getDefaultInstance().getPartitionName(); - onChanged(); - return this; + public chromeos_update_engine.UpdateMetadata.Extent getFecExtent() { + if (fecExtentBuilder_ == null) { + return fecExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecExtent_; + } else { + return fecExtentBuilder_.getMessage(); + } } /** *
-       * A platform-specific name to identify the partition set being updated. For
-       * example, in Chrome OS this could be "ROOT" or "KERNEL".
+       * The extent to store FEC.
        * 
* - * required string partition_name = 1; - * @param value The bytes for partitionName to set. - * @return This builder for chaining. + * optional .chromeos_update_engine.Extent fec_extent = 15; */ - public Builder setPartitionNameBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - partitionName_ = value; + public Builder setFecExtent(chromeos_update_engine.UpdateMetadata.Extent value) { + if (fecExtentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fecExtent_ = value; + } else { + fecExtentBuilder_.setMessage(value); + } + bitField0_ |= 0x00004000; onChanged(); return this; } - - private boolean runPostinstall_ ; /** *
-       * Whether this partition carries a filesystem with post-install program that
-       * must be run to finalize the update process. See also |postinstall_path| and
-       * |filesystem_type|.
+       * The extent to store FEC.
        * 
* - * optional bool run_postinstall = 2; - * @return Whether the runPostinstall field is set. + * optional .chromeos_update_engine.Extent fec_extent = 15; */ - @java.lang.Override - public boolean hasRunPostinstall() { - return ((bitField0_ & 0x00000002) != 0); + public Builder setFecExtent( + chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { + if (fecExtentBuilder_ == null) { + fecExtent_ = builderForValue.build(); + } else { + fecExtentBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00004000; + onChanged(); + return this; } /** *
-       * Whether this partition carries a filesystem with post-install program that
-       * must be run to finalize the update process. See also |postinstall_path| and
-       * |filesystem_type|.
+       * The extent to store FEC.
        * 
* - * optional bool run_postinstall = 2; - * @return The runPostinstall. + * optional .chromeos_update_engine.Extent fec_extent = 15; */ - @java.lang.Override - public boolean getRunPostinstall() { - return runPostinstall_; + public Builder mergeFecExtent(chromeos_update_engine.UpdateMetadata.Extent value) { + if (fecExtentBuilder_ == null) { + if (((bitField0_ & 0x00004000) != 0) && + fecExtent_ != null && + fecExtent_ != chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()) { + getFecExtentBuilder().mergeFrom(value); + } else { + fecExtent_ = value; + } + } else { + fecExtentBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00004000; + onChanged(); + return this; } /** *
-       * Whether this partition carries a filesystem with post-install program that
-       * must be run to finalize the update process. See also |postinstall_path| and
-       * |filesystem_type|.
+       * The extent to store FEC.
        * 
* - * optional bool run_postinstall = 2; - * @param value The runPostinstall to set. - * @return This builder for chaining. + * optional .chromeos_update_engine.Extent fec_extent = 15; */ - public Builder setRunPostinstall(boolean value) { - bitField0_ |= 0x00000002; - runPostinstall_ = value; + public Builder clearFecExtent() { + bitField0_ = (bitField0_ & ~0x00004000); + fecExtent_ = null; + if (fecExtentBuilder_ != null) { + fecExtentBuilder_.dispose(); + fecExtentBuilder_ = null; + } onChanged(); return this; } /** *
-       * Whether this partition carries a filesystem with post-install program that
-       * must be run to finalize the update process. See also |postinstall_path| and
-       * |filesystem_type|.
+       * The extent to store FEC.
        * 
* - * optional bool run_postinstall = 2; - * @return This builder for chaining. + * optional .chromeos_update_engine.Extent fec_extent = 15; */ - public Builder clearRunPostinstall() { - bitField0_ = (bitField0_ & ~0x00000002); - runPostinstall_ = false; + public chromeos_update_engine.UpdateMetadata.Extent.Builder getFecExtentBuilder() { + bitField0_ |= 0x00004000; onChanged(); - return this; + return getFecExtentFieldBuilder().getBuilder(); } - - private java.lang.Object postinstallPath_ = ""; /** *
-       * The path of the executable program to run during the post-install step,
-       * relative to the root of this filesystem. If not set, the default "postinst"
-       * will be used. This setting is only used when |run_postinstall| is set and
-       * true.
+       * The extent to store FEC.
        * 
* - * optional string postinstall_path = 3; - * @return Whether the postinstallPath field is set. + * optional .chromeos_update_engine.Extent fec_extent = 15; */ - public boolean hasPostinstallPath() { - return ((bitField0_ & 0x00000004) != 0); + public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getFecExtentOrBuilder() { + if (fecExtentBuilder_ != null) { + return fecExtentBuilder_.getMessageOrBuilder(); + } else { + return fecExtent_ == null ? + chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecExtent_; + } } /** *
-       * The path of the executable program to run during the post-install step,
-       * relative to the root of this filesystem. If not set, the default "postinst"
-       * will be used. This setting is only used when |run_postinstall| is set and
-       * true.
+       * The extent to store FEC.
        * 
* - * optional string postinstall_path = 3; - * @return The postinstallPath. + * optional .chromeos_update_engine.Extent fec_extent = 15; */ - public java.lang.String getPostinstallPath() { - java.lang.Object ref = postinstallPath_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - postinstallPath_ = s; - } - return s; - } else { - return (java.lang.String) ref; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> + getFecExtentFieldBuilder() { + if (fecExtentBuilder_ == null) { + fecExtentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( + getFecExtent(), + getParentForChildren(), + isClean()); + fecExtent_ = null; } + return fecExtentBuilder_; } + + private int fecRoots_ = 2; /** *
-       * The path of the executable program to run during the post-install step,
-       * relative to the root of this filesystem. If not set, the default "postinst"
-       * will be used. This setting is only used when |run_postinstall| is set and
-       * true.
+       * The number of FEC roots.
        * 
* - * optional string postinstall_path = 3; - * @return The bytes for postinstallPath. + * optional uint32 fec_roots = 16 [default = 2]; + * @return Whether the fecRoots field is set. */ - public com.google.protobuf.ByteString - getPostinstallPathBytes() { - java.lang.Object ref = postinstallPath_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - postinstallPath_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + @java.lang.Override + public boolean hasFecRoots() { + return ((bitField0_ & 0x00008000) != 0); } /** *
-       * The path of the executable program to run during the post-install step,
-       * relative to the root of this filesystem. If not set, the default "postinst"
-       * will be used. This setting is only used when |run_postinstall| is set and
-       * true.
+       * The number of FEC roots.
        * 
* - * optional string postinstall_path = 3; - * @param value The postinstallPath to set. - * @return This builder for chaining. + * optional uint32 fec_roots = 16 [default = 2]; + * @return The fecRoots. */ - public Builder setPostinstallPath( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - postinstallPath_ = value; - onChanged(); - return this; + @java.lang.Override + public int getFecRoots() { + return fecRoots_; } /** *
-       * The path of the executable program to run during the post-install step,
-       * relative to the root of this filesystem. If not set, the default "postinst"
-       * will be used. This setting is only used when |run_postinstall| is set and
-       * true.
+       * The number of FEC roots.
        * 
* - * optional string postinstall_path = 3; + * optional uint32 fec_roots = 16 [default = 2]; + * @param value The fecRoots to set. * @return This builder for chaining. */ - public Builder clearPostinstallPath() { - bitField0_ = (bitField0_ & ~0x00000004); - postinstallPath_ = getDefaultInstance().getPostinstallPath(); + public Builder setFecRoots(int value) { + + fecRoots_ = value; + bitField0_ |= 0x00008000; onChanged(); return this; } /** *
-       * The path of the executable program to run during the post-install step,
-       * relative to the root of this filesystem. If not set, the default "postinst"
-       * will be used. This setting is only used when |run_postinstall| is set and
-       * true.
+       * The number of FEC roots.
        * 
* - * optional string postinstall_path = 3; - * @param value The bytes for postinstallPath to set. + * optional uint32 fec_roots = 16 [default = 2]; * @return This builder for chaining. */ - public Builder setPostinstallPathBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - postinstallPath_ = value; + public Builder clearFecRoots() { + bitField0_ = (bitField0_ & ~0x00008000); + fecRoots_ = 2; onChanged(); return this; } - private java.lang.Object filesystemType_ = ""; + private java.lang.Object version_ = ""; /** *
-       * The filesystem type as passed to the mount(2) syscall when mounting the new
-       * filesystem to run the post-install program. If not set, a fixed list of
-       * filesystems will be attempted. This setting is only used if
-       * |run_postinstall| is set and true.
+       * Per-partition version used for downgrade detection, added
+       * as an effort to support partial updates. For most partitions,
+       * this is the build timestamp.
        * 
* - * optional string filesystem_type = 4; - * @return Whether the filesystemType field is set. + * optional string version = 17; + * @return Whether the version field is set. */ - public boolean hasFilesystemType() { - return ((bitField0_ & 0x00000008) != 0); + public boolean hasVersion() { + return ((bitField0_ & 0x00010000) != 0); } /** *
-       * The filesystem type as passed to the mount(2) syscall when mounting the new
-       * filesystem to run the post-install program. If not set, a fixed list of
-       * filesystems will be attempted. This setting is only used if
-       * |run_postinstall| is set and true.
+       * Per-partition version used for downgrade detection, added
+       * as an effort to support partial updates. For most partitions,
+       * this is the build timestamp.
        * 
* - * optional string filesystem_type = 4; - * @return The filesystemType. + * optional string version = 17; + * @return The version. */ - public java.lang.String getFilesystemType() { - java.lang.Object ref = filesystemType_; + public java.lang.String getVersion() { + java.lang.Object ref = version_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { - filesystemType_ = s; + version_ = s; } return s; } else { @@ -9654,23 +11583,22 @@ public final class UpdateMetadata { } /** *
-       * The filesystem type as passed to the mount(2) syscall when mounting the new
-       * filesystem to run the post-install program. If not set, a fixed list of
-       * filesystems will be attempted. This setting is only used if
-       * |run_postinstall| is set and true.
+       * Per-partition version used for downgrade detection, added
+       * as an effort to support partial updates. For most partitions,
+       * this is the build timestamp.
        * 
* - * optional string filesystem_type = 4; - * @return The bytes for filesystemType. + * optional string version = 17; + * @return The bytes for version. */ public com.google.protobuf.ByteString - getFilesystemTypeBytes() { - java.lang.Object ref = filesystemType_; + getVersionBytes() { + java.lang.Object ref = version_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); - filesystemType_ = b; + version_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; @@ -9678,1920 +11606,2136 @@ public final class UpdateMetadata { } /** *
-       * The filesystem type as passed to the mount(2) syscall when mounting the new
-       * filesystem to run the post-install program. If not set, a fixed list of
-       * filesystems will be attempted. This setting is only used if
-       * |run_postinstall| is set and true.
+       * Per-partition version used for downgrade detection, added
+       * as an effort to support partial updates. For most partitions,
+       * this is the build timestamp.
        * 
* - * optional string filesystem_type = 4; - * @param value The filesystemType to set. + * optional string version = 17; + * @param value The version to set. * @return This builder for chaining. */ - public Builder setFilesystemType( + public Builder setVersion( java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000008; - filesystemType_ = value; + if (value == null) { throw new NullPointerException(); } + version_ = value; + bitField0_ |= 0x00010000; onChanged(); return this; } /** *
-       * The filesystem type as passed to the mount(2) syscall when mounting the new
-       * filesystem to run the post-install program. If not set, a fixed list of
-       * filesystems will be attempted. This setting is only used if
-       * |run_postinstall| is set and true.
+       * Per-partition version used for downgrade detection, added
+       * as an effort to support partial updates. For most partitions,
+       * this is the build timestamp.
        * 
* - * optional string filesystem_type = 4; + * optional string version = 17; * @return This builder for chaining. */ - public Builder clearFilesystemType() { - bitField0_ = (bitField0_ & ~0x00000008); - filesystemType_ = getDefaultInstance().getFilesystemType(); + public Builder clearVersion() { + version_ = getDefaultInstance().getVersion(); + bitField0_ = (bitField0_ & ~0x00010000); onChanged(); return this; } /** *
-       * The filesystem type as passed to the mount(2) syscall when mounting the new
-       * filesystem to run the post-install program. If not set, a fixed list of
-       * filesystems will be attempted. This setting is only used if
-       * |run_postinstall| is set and true.
+       * Per-partition version used for downgrade detection, added
+       * as an effort to support partial updates. For most partitions,
+       * this is the build timestamp.
        * 
* - * optional string filesystem_type = 4; - * @param value The bytes for filesystemType to set. + * optional string version = 17; + * @param value The bytes for version to set. * @return This builder for chaining. */ - public Builder setFilesystemTypeBytes( + public Builder setVersionBytes( com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000008; - filesystemType_ = value; + if (value == null) { throw new NullPointerException(); } + version_ = value; + bitField0_ |= 0x00010000; onChanged(); return this; } - private java.util.List newPartitionSignature_ = + private java.util.List mergeOperations_ = java.util.Collections.emptyList(); - private void ensureNewPartitionSignatureIsMutable() { - if (!((bitField0_ & 0x00000010) != 0)) { - newPartitionSignature_ = new java.util.ArrayList(newPartitionSignature_); - bitField0_ |= 0x00000010; + private void ensureMergeOperationsIsMutable() { + if (!((bitField0_ & 0x00020000) != 0)) { + mergeOperations_ = new java.util.ArrayList(mergeOperations_); + bitField0_ |= 0x00020000; } } private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Signatures.Signature, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder, chromeos_update_engine.UpdateMetadata.Signatures.SignatureOrBuilder> newPartitionSignatureBuilder_; + chromeos_update_engine.UpdateMetadata.CowMergeOperation, chromeos_update_engine.UpdateMetadata.CowMergeOperation.Builder, chromeos_update_engine.UpdateMetadata.CowMergeOperationOrBuilder> mergeOperationsBuilder_; /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public java.util.List getNewPartitionSignatureList() { - if (newPartitionSignatureBuilder_ == null) { - return java.util.Collections.unmodifiableList(newPartitionSignature_); + public java.util.List getMergeOperationsList() { + if (mergeOperationsBuilder_ == null) { + return java.util.Collections.unmodifiableList(mergeOperations_); } else { - return newPartitionSignatureBuilder_.getMessageList(); + return mergeOperationsBuilder_.getMessageList(); } } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public int getNewPartitionSignatureCount() { - if (newPartitionSignatureBuilder_ == null) { - return newPartitionSignature_.size(); + public int getMergeOperationsCount() { + if (mergeOperationsBuilder_ == null) { + return mergeOperations_.size(); } else { - return newPartitionSignatureBuilder_.getCount(); + return mergeOperationsBuilder_.getCount(); } } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public chromeos_update_engine.UpdateMetadata.Signatures.Signature getNewPartitionSignature(int index) { - if (newPartitionSignatureBuilder_ == null) { - return newPartitionSignature_.get(index); + public chromeos_update_engine.UpdateMetadata.CowMergeOperation getMergeOperations(int index) { + if (mergeOperationsBuilder_ == null) { + return mergeOperations_.get(index); } else { - return newPartitionSignatureBuilder_.getMessage(index); + return mergeOperationsBuilder_.getMessage(index); } } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public Builder setNewPartitionSignature( - int index, chromeos_update_engine.UpdateMetadata.Signatures.Signature value) { - if (newPartitionSignatureBuilder_ == null) { + public Builder setMergeOperations( + int index, chromeos_update_engine.UpdateMetadata.CowMergeOperation value) { + if (mergeOperationsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureNewPartitionSignatureIsMutable(); - newPartitionSignature_.set(index, value); + ensureMergeOperationsIsMutable(); + mergeOperations_.set(index, value); onChanged(); } else { - newPartitionSignatureBuilder_.setMessage(index, value); + mergeOperationsBuilder_.setMessage(index, value); } return this; } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public Builder setNewPartitionSignature( - int index, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder builderForValue) { - if (newPartitionSignatureBuilder_ == null) { - ensureNewPartitionSignatureIsMutable(); - newPartitionSignature_.set(index, builderForValue.build()); + public Builder setMergeOperations( + int index, chromeos_update_engine.UpdateMetadata.CowMergeOperation.Builder builderForValue) { + if (mergeOperationsBuilder_ == null) { + ensureMergeOperationsIsMutable(); + mergeOperations_.set(index, builderForValue.build()); onChanged(); } else { - newPartitionSignatureBuilder_.setMessage(index, builderForValue.build()); + mergeOperationsBuilder_.setMessage(index, builderForValue.build()); } return this; } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public Builder addNewPartitionSignature(chromeos_update_engine.UpdateMetadata.Signatures.Signature value) { - if (newPartitionSignatureBuilder_ == null) { + public Builder addMergeOperations(chromeos_update_engine.UpdateMetadata.CowMergeOperation value) { + if (mergeOperationsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureNewPartitionSignatureIsMutable(); - newPartitionSignature_.add(value); + ensureMergeOperationsIsMutable(); + mergeOperations_.add(value); onChanged(); } else { - newPartitionSignatureBuilder_.addMessage(value); + mergeOperationsBuilder_.addMessage(value); } return this; } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public Builder addNewPartitionSignature( - int index, chromeos_update_engine.UpdateMetadata.Signatures.Signature value) { - if (newPartitionSignatureBuilder_ == null) { + public Builder addMergeOperations( + int index, chromeos_update_engine.UpdateMetadata.CowMergeOperation value) { + if (mergeOperationsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureNewPartitionSignatureIsMutable(); - newPartitionSignature_.add(index, value); + ensureMergeOperationsIsMutable(); + mergeOperations_.add(index, value); onChanged(); } else { - newPartitionSignatureBuilder_.addMessage(index, value); + mergeOperationsBuilder_.addMessage(index, value); } return this; } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public Builder addNewPartitionSignature( - chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder builderForValue) { - if (newPartitionSignatureBuilder_ == null) { - ensureNewPartitionSignatureIsMutable(); - newPartitionSignature_.add(builderForValue.build()); + public Builder addMergeOperations( + chromeos_update_engine.UpdateMetadata.CowMergeOperation.Builder builderForValue) { + if (mergeOperationsBuilder_ == null) { + ensureMergeOperationsIsMutable(); + mergeOperations_.add(builderForValue.build()); onChanged(); } else { - newPartitionSignatureBuilder_.addMessage(builderForValue.build()); + mergeOperationsBuilder_.addMessage(builderForValue.build()); } return this; } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public Builder addNewPartitionSignature( - int index, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder builderForValue) { - if (newPartitionSignatureBuilder_ == null) { - ensureNewPartitionSignatureIsMutable(); - newPartitionSignature_.add(index, builderForValue.build()); + public Builder addMergeOperations( + int index, chromeos_update_engine.UpdateMetadata.CowMergeOperation.Builder builderForValue) { + if (mergeOperationsBuilder_ == null) { + ensureMergeOperationsIsMutable(); + mergeOperations_.add(index, builderForValue.build()); onChanged(); } else { - newPartitionSignatureBuilder_.addMessage(index, builderForValue.build()); + mergeOperationsBuilder_.addMessage(index, builderForValue.build()); } return this; } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public Builder addAllNewPartitionSignature( - java.lang.Iterable values) { - if (newPartitionSignatureBuilder_ == null) { - ensureNewPartitionSignatureIsMutable(); + public Builder addAllMergeOperations( + java.lang.Iterable values) { + if (mergeOperationsBuilder_ == null) { + ensureMergeOperationsIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, newPartitionSignature_); + values, mergeOperations_); onChanged(); } else { - newPartitionSignatureBuilder_.addAllMessages(values); + mergeOperationsBuilder_.addAllMessages(values); } return this; } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public Builder clearNewPartitionSignature() { - if (newPartitionSignatureBuilder_ == null) { - newPartitionSignature_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000010); + public Builder clearMergeOperations() { + if (mergeOperationsBuilder_ == null) { + mergeOperations_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00020000); onChanged(); } else { - newPartitionSignatureBuilder_.clear(); + mergeOperationsBuilder_.clear(); } return this; } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public Builder removeNewPartitionSignature(int index) { - if (newPartitionSignatureBuilder_ == null) { - ensureNewPartitionSignatureIsMutable(); - newPartitionSignature_.remove(index); + public Builder removeMergeOperations(int index) { + if (mergeOperationsBuilder_ == null) { + ensureMergeOperationsIsMutable(); + mergeOperations_.remove(index); onChanged(); } else { - newPartitionSignatureBuilder_.remove(index); + mergeOperationsBuilder_.remove(index); } return this; } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder getNewPartitionSignatureBuilder( + public chromeos_update_engine.UpdateMetadata.CowMergeOperation.Builder getMergeOperationsBuilder( int index) { - return getNewPartitionSignatureFieldBuilder().getBuilder(index); + return getMergeOperationsFieldBuilder().getBuilder(index); } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public chromeos_update_engine.UpdateMetadata.Signatures.SignatureOrBuilder getNewPartitionSignatureOrBuilder( + public chromeos_update_engine.UpdateMetadata.CowMergeOperationOrBuilder getMergeOperationsOrBuilder( int index) { - if (newPartitionSignatureBuilder_ == null) { - return newPartitionSignature_.get(index); } else { - return newPartitionSignatureBuilder_.getMessageOrBuilder(index); + if (mergeOperationsBuilder_ == null) { + return mergeOperations_.get(index); } else { + return mergeOperationsBuilder_.getMessageOrBuilder(index); } - } - /** - *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+      }
+      /**
+       * 
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public java.util.List - getNewPartitionSignatureOrBuilderList() { - if (newPartitionSignatureBuilder_ != null) { - return newPartitionSignatureBuilder_.getMessageOrBuilderList(); + public java.util.List + getMergeOperationsOrBuilderList() { + if (mergeOperationsBuilder_ != null) { + return mergeOperationsBuilder_.getMessageOrBuilderList(); } else { - return java.util.Collections.unmodifiableList(newPartitionSignature_); + return java.util.Collections.unmodifiableList(mergeOperations_); } } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder addNewPartitionSignatureBuilder() { - return getNewPartitionSignatureFieldBuilder().addBuilder( - chromeos_update_engine.UpdateMetadata.Signatures.Signature.getDefaultInstance()); + public chromeos_update_engine.UpdateMetadata.CowMergeOperation.Builder addMergeOperationsBuilder() { + return getMergeOperationsFieldBuilder().addBuilder( + chromeos_update_engine.UpdateMetadata.CowMergeOperation.getDefaultInstance()); } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder addNewPartitionSignatureBuilder( + public chromeos_update_engine.UpdateMetadata.CowMergeOperation.Builder addMergeOperationsBuilder( int index) { - return getNewPartitionSignatureFieldBuilder().addBuilder( - index, chromeos_update_engine.UpdateMetadata.Signatures.Signature.getDefaultInstance()); + return getMergeOperationsFieldBuilder().addBuilder( + index, chromeos_update_engine.UpdateMetadata.CowMergeOperation.getDefaultInstance()); } /** *
-       * If present, a list of signatures of the new_partition_info.hash signed with
-       * different keys. If the update_engine daemon requires vendor-signed images
-       * and has its public key installed, one of the signatures should be valid
-       * for /postinstall to run.
+       * A sorted list of CowMergeOperation. When writing cow, we can choose to
+       * skip writing the raw bytes for these extents. During snapshot merge, the
+       * bytes will read from the source partitions instead.
        * 
* - * repeated .chromeos_update_engine.Signatures.Signature new_partition_signature = 5; + * repeated .chromeos_update_engine.CowMergeOperation merge_operations = 18; */ - public java.util.List - getNewPartitionSignatureBuilderList() { - return getNewPartitionSignatureFieldBuilder().getBuilderList(); + public java.util.List + getMergeOperationsBuilderList() { + return getMergeOperationsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Signatures.Signature, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder, chromeos_update_engine.UpdateMetadata.Signatures.SignatureOrBuilder> - getNewPartitionSignatureFieldBuilder() { - if (newPartitionSignatureBuilder_ == null) { - newPartitionSignatureBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Signatures.Signature, chromeos_update_engine.UpdateMetadata.Signatures.Signature.Builder, chromeos_update_engine.UpdateMetadata.Signatures.SignatureOrBuilder>( - newPartitionSignature_, - ((bitField0_ & 0x00000010) != 0), + chromeos_update_engine.UpdateMetadata.CowMergeOperation, chromeos_update_engine.UpdateMetadata.CowMergeOperation.Builder, chromeos_update_engine.UpdateMetadata.CowMergeOperationOrBuilder> + getMergeOperationsFieldBuilder() { + if (mergeOperationsBuilder_ == null) { + mergeOperationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.CowMergeOperation, chromeos_update_engine.UpdateMetadata.CowMergeOperation.Builder, chromeos_update_engine.UpdateMetadata.CowMergeOperationOrBuilder>( + mergeOperations_, + ((bitField0_ & 0x00020000) != 0), getParentForChildren(), isClean()); - newPartitionSignature_ = null; + mergeOperations_ = null; } - return newPartitionSignatureBuilder_; + return mergeOperationsBuilder_; } - private chromeos_update_engine.UpdateMetadata.PartitionInfo oldPartitionInfo_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> oldPartitionInfoBuilder_; + private long estimateCowSize_ ; /** - * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; - * @return Whether the oldPartitionInfo field is set. + *
+       * Estimated size for COW image. This is used by libsnapshot
+       * as a hint. If set to 0, libsnapshot should use alternative
+       * methods for estimating size.
+       * 
+ * + * optional uint64 estimate_cow_size = 19; + * @return Whether the estimateCowSize field is set. */ - public boolean hasOldPartitionInfo() { - return ((bitField0_ & 0x00000020) != 0); + @java.lang.Override + public boolean hasEstimateCowSize() { + return ((bitField0_ & 0x00040000) != 0); } /** - * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; - * @return The oldPartitionInfo. + *
+       * Estimated size for COW image. This is used by libsnapshot
+       * as a hint. If set to 0, libsnapshot should use alternative
+       * methods for estimating size.
+       * 
+ * + * optional uint64 estimate_cow_size = 19; + * @return The estimateCowSize. */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo getOldPartitionInfo() { - if (oldPartitionInfoBuilder_ == null) { - return oldPartitionInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldPartitionInfo_; - } else { - return oldPartitionInfoBuilder_.getMessage(); - } + @java.lang.Override + public long getEstimateCowSize() { + return estimateCowSize_; } /** - * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; + *
+       * Estimated size for COW image. This is used by libsnapshot
+       * as a hint. If set to 0, libsnapshot should use alternative
+       * methods for estimating size.
+       * 
+ * + * optional uint64 estimate_cow_size = 19; + * @param value The estimateCowSize to set. + * @return This builder for chaining. */ - public Builder setOldPartitionInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (oldPartitionInfoBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - oldPartitionInfo_ = value; - onChanged(); - } else { - oldPartitionInfoBuilder_.setMessage(value); + public Builder setEstimateCowSize(long value) { + + estimateCowSize_ = value; + bitField0_ |= 0x00040000; + onChanged(); + return this; + } + /** + *
+       * Estimated size for COW image. This is used by libsnapshot
+       * as a hint. If set to 0, libsnapshot should use alternative
+       * methods for estimating size.
+       * 
+ * + * optional uint64 estimate_cow_size = 19; + * @return This builder for chaining. + */ + public Builder clearEstimateCowSize() { + bitField0_ = (bitField0_ & ~0x00040000); + estimateCowSize_ = 0L; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:chromeos_update_engine.PartitionUpdate) + } + + // @@protoc_insertion_point(class_scope:chromeos_update_engine.PartitionUpdate) + private static final chromeos_update_engine.UpdateMetadata.PartitionUpdate DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.PartitionUpdate(); + } + + public static chromeos_update_engine.UpdateMetadata.PartitionUpdate getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PartitionUpdate parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.PartitionUpdate getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface DynamicPartitionGroupOrBuilder extends + // @@protoc_insertion_point(interface_extends:chromeos_update_engine.DynamicPartitionGroup) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * Name of the group.
+     * 
+ * + * required string name = 1; + * @return Whether the name field is set. + */ + boolean hasName(); + /** + *
+     * Name of the group.
+     * 
+ * + * required string name = 1; + * @return The name. + */ + java.lang.String getName(); + /** + *
+     * Name of the group.
+     * 
+ * + * required string name = 1; + * @return The bytes for name. + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + *
+     * Maximum size of the group. The sum of sizes of all partitions in the group
+     * must not exceed the maximum size of the group.
+     * 
+ * + * optional uint64 size = 2; + * @return Whether the size field is set. + */ + boolean hasSize(); + /** + *
+     * Maximum size of the group. The sum of sizes of all partitions in the group
+     * must not exceed the maximum size of the group.
+     * 
+ * + * optional uint64 size = 2; + * @return The size. + */ + long getSize(); + + /** + *
+     * A list of partitions that belong to the group.
+     * 
+ * + * repeated string partition_names = 3; + * @return A list containing the partitionNames. + */ + java.util.List + getPartitionNamesList(); + /** + *
+     * A list of partitions that belong to the group.
+     * 
+ * + * repeated string partition_names = 3; + * @return The count of partitionNames. + */ + int getPartitionNamesCount(); + /** + *
+     * A list of partitions that belong to the group.
+     * 
+ * + * repeated string partition_names = 3; + * @param index The index of the element to return. + * @return The partitionNames at the given index. + */ + java.lang.String getPartitionNames(int index); + /** + *
+     * A list of partitions that belong to the group.
+     * 
+ * + * repeated string partition_names = 3; + * @param index The index of the value to return. + * @return The bytes of the partitionNames at the given index. + */ + com.google.protobuf.ByteString + getPartitionNamesBytes(int index); + } + /** + * Protobuf type {@code chromeos_update_engine.DynamicPartitionGroup} + */ + public static final class DynamicPartitionGroup extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:chromeos_update_engine.DynamicPartitionGroup) + DynamicPartitionGroupOrBuilder { + private static final long serialVersionUID = 0L; + // Use DynamicPartitionGroup.newBuilder() to construct. + private DynamicPartitionGroup(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DynamicPartitionGroup() { + name_ = ""; + partitionNames_ = com.google.protobuf.LazyStringArrayList.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DynamicPartitionGroup(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionGroup_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionGroup_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.class, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder.class); + } + + private int bitField0_; + public static final int NAME_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; + /** + *
+     * Name of the group.
+     * 
+ * + * required string name = 1; + * @return Whether the name field is set. + */ + @java.lang.Override + public boolean hasName() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+     * Name of the group.
+     * 
+ * + * required string name = 1; + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; } - bitField0_ |= 0x00000020; - return this; + return s; } - /** - * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; - */ - public Builder setOldPartitionInfo( - chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder builderForValue) { - if (oldPartitionInfoBuilder_ == null) { - oldPartitionInfo_ = builderForValue.build(); - onChanged(); - } else { - oldPartitionInfoBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00000020; - return this; + } + /** + *
+     * Name of the group.
+     * 
+ * + * required string name = 1; + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; } - /** - * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; - */ - public Builder mergeOldPartitionInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (oldPartitionInfoBuilder_ == null) { - if (((bitField0_ & 0x00000020) != 0) && - oldPartitionInfo_ != null && - oldPartitionInfo_ != chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance()) { - oldPartitionInfo_ = - chromeos_update_engine.UpdateMetadata.PartitionInfo.newBuilder(oldPartitionInfo_).mergeFrom(value).buildPartial(); - } else { - oldPartitionInfo_ = value; - } - onChanged(); - } else { - oldPartitionInfoBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000020; - return this; + } + + public static final int SIZE_FIELD_NUMBER = 2; + private long size_ = 0L; + /** + *
+     * Maximum size of the group. The sum of sizes of all partitions in the group
+     * must not exceed the maximum size of the group.
+     * 
+ * + * optional uint64 size = 2; + * @return Whether the size field is set. + */ + @java.lang.Override + public boolean hasSize() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + *
+     * Maximum size of the group. The sum of sizes of all partitions in the group
+     * must not exceed the maximum size of the group.
+     * 
+ * + * optional uint64 size = 2; + * @return The size. + */ + @java.lang.Override + public long getSize() { + return size_; + } + + public static final int PARTITION_NAMES_FIELD_NUMBER = 3; + @SuppressWarnings("serial") + private com.google.protobuf.LazyStringList partitionNames_; + /** + *
+     * A list of partitions that belong to the group.
+     * 
+ * + * repeated string partition_names = 3; + * @return A list containing the partitionNames. + */ + public com.google.protobuf.ProtocolStringList + getPartitionNamesList() { + return partitionNames_; + } + /** + *
+     * A list of partitions that belong to the group.
+     * 
+ * + * repeated string partition_names = 3; + * @return The count of partitionNames. + */ + public int getPartitionNamesCount() { + return partitionNames_.size(); + } + /** + *
+     * A list of partitions that belong to the group.
+     * 
+ * + * repeated string partition_names = 3; + * @param index The index of the element to return. + * @return The partitionNames at the given index. + */ + public java.lang.String getPartitionNames(int index) { + return partitionNames_.get(index); + } + /** + *
+     * A list of partitions that belong to the group.
+     * 
+ * + * repeated string partition_names = 3; + * @param index The index of the value to return. + * @return The bytes of the partitionNames at the given index. + */ + public com.google.protobuf.ByteString + getPartitionNamesBytes(int index) { + return partitionNames_.getByteString(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (!hasName()) { + memoizedIsInitialized = 0; + return false; } - /** - * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; - */ - public Builder clearOldPartitionInfo() { - if (oldPartitionInfoBuilder_ == null) { - oldPartitionInfo_ = null; - onChanged(); - } else { - oldPartitionInfoBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000020); - return this; + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); } - /** - * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder getOldPartitionInfoBuilder() { - bitField0_ |= 0x00000020; - onChanged(); - return getOldPartitionInfoFieldBuilder().getBuilder(); + if (((bitField0_ & 0x00000002) != 0)) { + output.writeUInt64(2, size_); } - /** - * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getOldPartitionInfoOrBuilder() { - if (oldPartitionInfoBuilder_ != null) { - return oldPartitionInfoBuilder_.getMessageOrBuilder(); - } else { - return oldPartitionInfo_ == null ? - chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldPartitionInfo_; - } + for (int i = 0; i < partitionNames_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, partitionNames_.getRaw(i)); } - /** - * optional .chromeos_update_engine.PartitionInfo old_partition_info = 6; - */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> - getOldPartitionInfoFieldBuilder() { - if (oldPartitionInfoBuilder_ == null) { - oldPartitionInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder>( - getOldPartitionInfo(), - getParentForChildren(), - isClean()); - oldPartitionInfo_ = null; + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); + } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(2, size_); + } + { + int dataSize = 0; + for (int i = 0; i < partitionNames_.size(); i++) { + dataSize += computeStringSizeNoTag(partitionNames_.getRaw(i)); } - return oldPartitionInfoBuilder_; + size += dataSize; + size += 1 * getPartitionNamesList().size(); } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } - private chromeos_update_engine.UpdateMetadata.PartitionInfo newPartitionInfo_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> newPartitionInfoBuilder_; - /** - * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; - * @return Whether the newPartitionInfo field is set. - */ - public boolean hasNewPartitionInfo() { - return ((bitField0_ & 0x00000040) != 0); + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; } - /** - * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; - * @return The newPartitionInfo. - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo getNewPartitionInfo() { - if (newPartitionInfoBuilder_ == null) { - return newPartitionInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newPartitionInfo_; - } else { - return newPartitionInfoBuilder_.getMessage(); - } + if (!(obj instanceof chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup)) { + return super.equals(obj); } - /** - * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; - */ - public Builder setNewPartitionInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (newPartitionInfoBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - newPartitionInfo_ = value; - onChanged(); - } else { - newPartitionInfoBuilder_.setMessage(value); - } - bitField0_ |= 0x00000040; - return this; + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup other = (chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup) obj; + + if (hasName() != other.hasName()) return false; + if (hasName()) { + if (!getName() + .equals(other.getName())) return false; } - /** - * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; - */ - public Builder setNewPartitionInfo( - chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder builderForValue) { - if (newPartitionInfoBuilder_ == null) { - newPartitionInfo_ = builderForValue.build(); - onChanged(); - } else { - newPartitionInfoBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00000040; - return this; + if (hasSize() != other.hasSize()) return false; + if (hasSize()) { + if (getSize() + != other.getSize()) return false; } - /** - * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; - */ - public Builder mergeNewPartitionInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (newPartitionInfoBuilder_ == null) { - if (((bitField0_ & 0x00000040) != 0) && - newPartitionInfo_ != null && - newPartitionInfo_ != chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance()) { - newPartitionInfo_ = - chromeos_update_engine.UpdateMetadata.PartitionInfo.newBuilder(newPartitionInfo_).mergeFrom(value).buildPartial(); - } else { - newPartitionInfo_ = value; - } - onChanged(); - } else { - newPartitionInfoBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000040; - return this; + if (!getPartitionNamesList() + .equals(other.getPartitionNamesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; } - /** - * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; - */ - public Builder clearNewPartitionInfo() { - if (newPartitionInfoBuilder_ == null) { - newPartitionInfo_ = null; - onChanged(); - } else { - newPartitionInfoBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000040); - return this; + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasName()) { + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); } - /** - * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder getNewPartitionInfoBuilder() { - bitField0_ |= 0x00000040; - onChanged(); - return getNewPartitionInfoFieldBuilder().getBuilder(); + if (hasSize()) { + hash = (37 * hash) + SIZE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getSize()); } - /** - * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getNewPartitionInfoOrBuilder() { - if (newPartitionInfoBuilder_ != null) { - return newPartitionInfoBuilder_.getMessageOrBuilder(); - } else { - return newPartitionInfo_ == null ? - chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newPartitionInfo_; - } + if (getPartitionNamesCount() > 0) { + hash = (37 * hash) + PARTITION_NAMES_FIELD_NUMBER; + hash = (53 * hash) + getPartitionNamesList().hashCode(); } - /** - * optional .chromeos_update_engine.PartitionInfo new_partition_info = 7; - */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> - getNewPartitionInfoFieldBuilder() { - if (newPartitionInfoBuilder_ == null) { - newPartitionInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder>( - getNewPartitionInfo(), - getParentForChildren(), - isClean()); - newPartitionInfo_ = null; - } - return newPartitionInfoBuilder_; + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code chromeos_update_engine.DynamicPartitionGroup} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:chromeos_update_engine.DynamicPartitionGroup) + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionGroup_descriptor; } - private java.util.List operations_ = - java.util.Collections.emptyList(); - private void ensureOperationsIsMutable() { - if (!((bitField0_ & 0x00000080) != 0)) { - operations_ = new java.util.ArrayList(operations_); - bitField0_ |= 0x00000080; - } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionGroup_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.class, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder.class); } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder> operationsBuilder_; + // Construct using chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.newBuilder() + private Builder() { - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public java.util.List getOperationsList() { - if (operationsBuilder_ == null) { - return java.util.Collections.unmodifiableList(operations_); - } else { - return operationsBuilder_.getMessageList(); - } - } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public int getOperationsCount() { - if (operationsBuilder_ == null) { - return operations_.size(); - } else { - return operationsBuilder_.getCount(); - } - } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation getOperations(int index) { - if (operationsBuilder_ == null) { - return operations_.get(index); - } else { - return operationsBuilder_.getMessage(index); - } - } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public Builder setOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation value) { - if (operationsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureOperationsIsMutable(); - operations_.set(index, value); - onChanged(); - } else { - operationsBuilder_.setMessage(index, value); - } - return this; - } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public Builder setOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { - if (operationsBuilder_ == null) { - ensureOperationsIsMutable(); - operations_.set(index, builderForValue.build()); - onChanged(); - } else { - operationsBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public Builder addOperations(chromeos_update_engine.UpdateMetadata.InstallOperation value) { - if (operationsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureOperationsIsMutable(); - operations_.add(value); - onChanged(); - } else { - operationsBuilder_.addMessage(value); - } - return this; - } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public Builder addOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation value) { - if (operationsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureOperationsIsMutable(); - operations_.add(index, value); - onChanged(); - } else { - operationsBuilder_.addMessage(index, value); - } - return this; } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public Builder addOperations( - chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { - if (operationsBuilder_ == null) { - ensureOperationsIsMutable(); - operations_.add(builderForValue.build()); - onChanged(); - } else { - operationsBuilder_.addMessage(builderForValue.build()); - } - return this; + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public Builder addOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { - if (operationsBuilder_ == null) { - ensureOperationsIsMutable(); - operations_.add(index, builderForValue.build()); - onChanged(); - } else { - operationsBuilder_.addMessage(index, builderForValue.build()); - } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + name_ = ""; + size_ = 0L; + partitionNames_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public Builder addAllOperations( - java.lang.Iterable values) { - if (operationsBuilder_ == null) { - ensureOperationsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, operations_); - onChanged(); - } else { - operationsBuilder_.addAllMessages(values); - } - return this; + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionGroup_descriptor; } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public Builder clearOperations() { - if (operationsBuilder_ == null) { - operations_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000080); - onChanged(); - } else { - operationsBuilder_.clear(); - } - return this; + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getDefaultInstanceForType() { + return chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.getDefaultInstance(); } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public Builder removeOperations(int index) { - if (operationsBuilder_ == null) { - ensureOperationsIsMutable(); - operations_.remove(index); - onChanged(); - } else { - operationsBuilder_.remove(index); + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup build() { + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); } - return this; + return result; } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder getOperationsBuilder( - int index) { - return getOperationsFieldBuilder().getBuilder(index); + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup buildPartial() { + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup result = new chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder getOperationsOrBuilder( - int index) { - if (operationsBuilder_ == null) { - return operations_.get(index); } else { - return operationsBuilder_.getMessageOrBuilder(index); + + private void buildPartialRepeatedFields(chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup result) { + if (((bitField0_ & 0x00000004) != 0)) { + partitionNames_ = partitionNames_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000004); } + result.partitionNames_ = partitionNames_; } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public java.util.List - getOperationsOrBuilderList() { - if (operationsBuilder_ != null) { - return operationsBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(operations_); + + private void buildPartial0(chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.name_ = name_; + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.size_ = size_; + to_bitField0_ |= 0x00000002; } + result.bitField0_ |= to_bitField0_; } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder addOperationsBuilder() { - return getOperationsFieldBuilder().addBuilder( - chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance()); + + @java.lang.Override + public Builder clone() { + return super.clone(); } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder addOperationsBuilder( - int index) { - return getOperationsFieldBuilder().addBuilder( - index, chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance()); + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); } - /** - *
-       * The list of operations to be performed to apply this PartitionUpdate. The
-       * associated operation blobs (in operations[i].data_offset, data_length)
-       * should be stored contiguously and in the same order.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation operations = 8; - */ - public java.util.List - getOperationsBuilderList() { - return getOperationsFieldBuilder().getBuilderList(); + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder> - getOperationsFieldBuilder() { - if (operationsBuilder_ == null) { - operationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder>( - operations_, - ((bitField0_ & 0x00000080) != 0), - getParentForChildren(), - isClean()); - operations_ = null; - } - return operationsBuilder_; + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); } - - private boolean postinstallOptional_ ; - /** - *
-       * Whether a failure in the postinstall step for this partition should be
-       * ignored.
-       * 
- * - * optional bool postinstall_optional = 9; - * @return Whether the postinstallOptional field is set. - */ @java.lang.Override - public boolean hasPostinstallOptional() { - return ((bitField0_ & 0x00000100) != 0); + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); } - /** - *
-       * Whether a failure in the postinstall step for this partition should be
-       * ignored.
-       * 
- * - * optional bool postinstall_optional = 9; - * @return The postinstallOptional. - */ @java.lang.Override - public boolean getPostinstallOptional() { - return postinstallOptional_; + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); } - /** - *
-       * Whether a failure in the postinstall step for this partition should be
-       * ignored.
-       * 
- * - * optional bool postinstall_optional = 9; - * @param value The postinstallOptional to set. - * @return This builder for chaining. - */ - public Builder setPostinstallOptional(boolean value) { - bitField0_ |= 0x00000100; - postinstallOptional_ = value; + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup) { + return mergeFrom((chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup other) { + if (other == chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.getDefaultInstance()) return this; + if (other.hasName()) { + name_ = other.name_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (other.hasSize()) { + setSize(other.getSize()); + } + if (!other.partitionNames_.isEmpty()) { + if (partitionNames_.isEmpty()) { + partitionNames_ = other.partitionNames_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensurePartitionNamesIsMutable(); + partitionNames_.addAll(other.partitionNames_); + } + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } + + @java.lang.Override + public final boolean isInitialized() { + if (!hasName()) { + return false; + } + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + name_ = input.readBytes(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 16: { + size_ = input.readUInt64(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 26: { + com.google.protobuf.ByteString bs = input.readBytes(); + ensurePartitionNamesIsMutable(); + partitionNames_.add(bs); + break; + } // case 26 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object name_ = ""; /** *
-       * Whether a failure in the postinstall step for this partition should be
-       * ignored.
+       * Name of the group.
        * 
* - * optional bool postinstall_optional = 9; - * @return This builder for chaining. + * required string name = 1; + * @return Whether the name field is set. */ - public Builder clearPostinstallOptional() { - bitField0_ = (bitField0_ & ~0x00000100); - postinstallOptional_ = false; - onChanged(); - return this; + public boolean hasName() { + return ((bitField0_ & 0x00000001) != 0); } - - private chromeos_update_engine.UpdateMetadata.Extent hashTreeDataExtent_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> hashTreeDataExtentBuilder_; /** *
-       * The extent for data covered by verity hash tree.
+       * Name of the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; - * @return Whether the hashTreeDataExtent field is set. + * required string name = 1; + * @return The name. */ - public boolean hasHashTreeDataExtent() { - return ((bitField0_ & 0x00000200) != 0); + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } } /** *
-       * The extent for data covered by verity hash tree.
+       * Name of the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; - * @return The hashTreeDataExtent. + * required string name = 1; + * @return The bytes for name. */ - public chromeos_update_engine.UpdateMetadata.Extent getHashTreeDataExtent() { - if (hashTreeDataExtentBuilder_ == null) { - return hashTreeDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeDataExtent_; + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; } else { - return hashTreeDataExtentBuilder_.getMessage(); + return (com.google.protobuf.ByteString) ref; } } /** *
-       * The extent for data covered by verity hash tree.
+       * Name of the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + * required string name = 1; + * @param value The name to set. + * @return This builder for chaining. */ - public Builder setHashTreeDataExtent(chromeos_update_engine.UpdateMetadata.Extent value) { - if (hashTreeDataExtentBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - hashTreeDataExtent_ = value; - onChanged(); - } else { - hashTreeDataExtentBuilder_.setMessage(value); - } - bitField0_ |= 0x00000200; + public Builder setName( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); return this; } /** *
-       * The extent for data covered by verity hash tree.
+       * Name of the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + * required string name = 1; + * @return This builder for chaining. */ - public Builder setHashTreeDataExtent( - chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { - if (hashTreeDataExtentBuilder_ == null) { - hashTreeDataExtent_ = builderForValue.build(); - onChanged(); - } else { - hashTreeDataExtentBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00000200; + public Builder clearName() { + name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); return this; } /** *
-       * The extent for data covered by verity hash tree.
+       * Name of the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + * required string name = 1; + * @param value The bytes for name to set. + * @return This builder for chaining. */ - public Builder mergeHashTreeDataExtent(chromeos_update_engine.UpdateMetadata.Extent value) { - if (hashTreeDataExtentBuilder_ == null) { - if (((bitField0_ & 0x00000200) != 0) && - hashTreeDataExtent_ != null && - hashTreeDataExtent_ != chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()) { - hashTreeDataExtent_ = - chromeos_update_engine.UpdateMetadata.Extent.newBuilder(hashTreeDataExtent_).mergeFrom(value).buildPartial(); - } else { - hashTreeDataExtent_ = value; - } - onChanged(); - } else { - hashTreeDataExtentBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000200; + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); return this; } + + private long size_ ; /** *
-       * The extent for data covered by verity hash tree.
+       * Maximum size of the group. The sum of sizes of all partitions in the group
+       * must not exceed the maximum size of the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + * optional uint64 size = 2; + * @return Whether the size field is set. */ - public Builder clearHashTreeDataExtent() { - if (hashTreeDataExtentBuilder_ == null) { - hashTreeDataExtent_ = null; - onChanged(); - } else { - hashTreeDataExtentBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000200); - return this; + @java.lang.Override + public boolean hasSize() { + return ((bitField0_ & 0x00000002) != 0); } /** *
-       * The extent for data covered by verity hash tree.
+       * Maximum size of the group. The sum of sizes of all partitions in the group
+       * must not exceed the maximum size of the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + * optional uint64 size = 2; + * @return The size. */ - public chromeos_update_engine.UpdateMetadata.Extent.Builder getHashTreeDataExtentBuilder() { - bitField0_ |= 0x00000200; - onChanged(); - return getHashTreeDataExtentFieldBuilder().getBuilder(); + @java.lang.Override + public long getSize() { + return size_; } /** *
-       * The extent for data covered by verity hash tree.
+       * Maximum size of the group. The sum of sizes of all partitions in the group
+       * must not exceed the maximum size of the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + * optional uint64 size = 2; + * @param value The size to set. + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getHashTreeDataExtentOrBuilder() { - if (hashTreeDataExtentBuilder_ != null) { - return hashTreeDataExtentBuilder_.getMessageOrBuilder(); - } else { - return hashTreeDataExtent_ == null ? - chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeDataExtent_; - } + public Builder setSize(long value) { + + size_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; } /** *
-       * The extent for data covered by verity hash tree.
+       * Maximum size of the group. The sum of sizes of all partitions in the group
+       * must not exceed the maximum size of the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_data_extent = 10; + * optional uint64 size = 2; + * @return This builder for chaining. */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> - getHashTreeDataExtentFieldBuilder() { - if (hashTreeDataExtentBuilder_ == null) { - hashTreeDataExtentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( - getHashTreeDataExtent(), - getParentForChildren(), - isClean()); - hashTreeDataExtent_ = null; - } - return hashTreeDataExtentBuilder_; + public Builder clearSize() { + bitField0_ = (bitField0_ & ~0x00000002); + size_ = 0L; + onChanged(); + return this; } - private chromeos_update_engine.UpdateMetadata.Extent hashTreeExtent_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> hashTreeExtentBuilder_; + private com.google.protobuf.LazyStringList partitionNames_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensurePartitionNamesIsMutable() { + if (!((bitField0_ & 0x00000004) != 0)) { + partitionNames_ = new com.google.protobuf.LazyStringArrayList(partitionNames_); + bitField0_ |= 0x00000004; + } + } /** *
-       * The extent to store verity hash tree.
+       * A list of partitions that belong to the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; - * @return Whether the hashTreeExtent field is set. + * repeated string partition_names = 3; + * @return A list containing the partitionNames. */ - public boolean hasHashTreeExtent() { - return ((bitField0_ & 0x00000400) != 0); + public com.google.protobuf.ProtocolStringList + getPartitionNamesList() { + return partitionNames_.getUnmodifiableView(); } /** *
-       * The extent to store verity hash tree.
+       * A list of partitions that belong to the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; - * @return The hashTreeExtent. + * repeated string partition_names = 3; + * @return The count of partitionNames. */ - public chromeos_update_engine.UpdateMetadata.Extent getHashTreeExtent() { - if (hashTreeExtentBuilder_ == null) { - return hashTreeExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeExtent_; - } else { - return hashTreeExtentBuilder_.getMessage(); - } + public int getPartitionNamesCount() { + return partitionNames_.size(); } /** *
-       * The extent to store verity hash tree.
+       * A list of partitions that belong to the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; - */ - public Builder setHashTreeExtent(chromeos_update_engine.UpdateMetadata.Extent value) { - if (hashTreeExtentBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - hashTreeExtent_ = value; - onChanged(); - } else { - hashTreeExtentBuilder_.setMessage(value); - } - bitField0_ |= 0x00000400; - return this; + * repeated string partition_names = 3; + * @param index The index of the element to return. + * @return The partitionNames at the given index. + */ + public java.lang.String getPartitionNames(int index) { + return partitionNames_.get(index); } /** *
-       * The extent to store verity hash tree.
+       * A list of partitions that belong to the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + * repeated string partition_names = 3; + * @param index The index of the value to return. + * @return The bytes of the partitionNames at the given index. */ - public Builder setHashTreeExtent( - chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { - if (hashTreeExtentBuilder_ == null) { - hashTreeExtent_ = builderForValue.build(); - onChanged(); - } else { - hashTreeExtentBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00000400; - return this; + public com.google.protobuf.ByteString + getPartitionNamesBytes(int index) { + return partitionNames_.getByteString(index); } /** *
-       * The extent to store verity hash tree.
+       * A list of partitions that belong to the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + * repeated string partition_names = 3; + * @param index The index to set the value at. + * @param value The partitionNames to set. + * @return This builder for chaining. */ - public Builder mergeHashTreeExtent(chromeos_update_engine.UpdateMetadata.Extent value) { - if (hashTreeExtentBuilder_ == null) { - if (((bitField0_ & 0x00000400) != 0) && - hashTreeExtent_ != null && - hashTreeExtent_ != chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()) { - hashTreeExtent_ = - chromeos_update_engine.UpdateMetadata.Extent.newBuilder(hashTreeExtent_).mergeFrom(value).buildPartial(); - } else { - hashTreeExtent_ = value; - } - onChanged(); - } else { - hashTreeExtentBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000400; + public Builder setPartitionNames( + int index, java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + ensurePartitionNamesIsMutable(); + partitionNames_.set(index, value); + onChanged(); return this; } /** *
-       * The extent to store verity hash tree.
+       * A list of partitions that belong to the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + * repeated string partition_names = 3; + * @param value The partitionNames to add. + * @return This builder for chaining. */ - public Builder clearHashTreeExtent() { - if (hashTreeExtentBuilder_ == null) { - hashTreeExtent_ = null; - onChanged(); - } else { - hashTreeExtentBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000400); + public Builder addPartitionNames( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + ensurePartitionNamesIsMutable(); + partitionNames_.add(value); + onChanged(); return this; } /** *
-       * The extent to store verity hash tree.
+       * A list of partitions that belong to the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + * repeated string partition_names = 3; + * @param values The partitionNames to add. + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.Extent.Builder getHashTreeExtentBuilder() { - bitField0_ |= 0x00000400; + public Builder addAllPartitionNames( + java.lang.Iterable values) { + ensurePartitionNamesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, partitionNames_); onChanged(); - return getHashTreeExtentFieldBuilder().getBuilder(); + return this; } /** *
-       * The extent to store verity hash tree.
+       * A list of partitions that belong to the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + * repeated string partition_names = 3; + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getHashTreeExtentOrBuilder() { - if (hashTreeExtentBuilder_ != null) { - return hashTreeExtentBuilder_.getMessageOrBuilder(); - } else { - return hashTreeExtent_ == null ? - chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : hashTreeExtent_; - } + public Builder clearPartitionNames() { + partitionNames_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; } /** *
-       * The extent to store verity hash tree.
+       * A list of partitions that belong to the group.
        * 
* - * optional .chromeos_update_engine.Extent hash_tree_extent = 11; + * repeated string partition_names = 3; + * @param value The bytes of the partitionNames to add. + * @return This builder for chaining. */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> - getHashTreeExtentFieldBuilder() { - if (hashTreeExtentBuilder_ == null) { - hashTreeExtentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( - getHashTreeExtent(), - getParentForChildren(), - isClean()); - hashTreeExtent_ = null; + public Builder addPartitionNamesBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + ensurePartitionNamesIsMutable(); + partitionNames_.add(value); + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:chromeos_update_engine.DynamicPartitionGroup) + } + + // @@protoc_insertion_point(class_scope:chromeos_update_engine.DynamicPartitionGroup) + private static final chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup(); + } + + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DynamicPartitionGroup parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); } - return hashTreeExtentBuilder_; + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface VABCFeatureSetOrBuilder extends + // @@protoc_insertion_point(interface_extends:chromeos_update_engine.VABCFeatureSet) + com.google.protobuf.MessageOrBuilder { + + /** + * optional bool threaded = 1; + * @return Whether the threaded field is set. + */ + boolean hasThreaded(); + /** + * optional bool threaded = 1; + * @return The threaded. + */ + boolean getThreaded(); + + /** + * optional bool batch_writes = 2; + * @return Whether the batchWrites field is set. + */ + boolean hasBatchWrites(); + /** + * optional bool batch_writes = 2; + * @return The batchWrites. + */ + boolean getBatchWrites(); + } + /** + * Protobuf type {@code chromeos_update_engine.VABCFeatureSet} + */ + public static final class VABCFeatureSet extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:chromeos_update_engine.VABCFeatureSet) + VABCFeatureSetOrBuilder { + private static final long serialVersionUID = 0L; + // Use VABCFeatureSet.newBuilder() to construct. + private VABCFeatureSet(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private VABCFeatureSet() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new VABCFeatureSet(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_VABCFeatureSet_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_VABCFeatureSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.VABCFeatureSet.class, chromeos_update_engine.UpdateMetadata.VABCFeatureSet.Builder.class); + } + + private int bitField0_; + public static final int THREADED_FIELD_NUMBER = 1; + private boolean threaded_ = false; + /** + * optional bool threaded = 1; + * @return Whether the threaded field is set. + */ + @java.lang.Override + public boolean hasThreaded() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * optional bool threaded = 1; + * @return The threaded. + */ + @java.lang.Override + public boolean getThreaded() { + return threaded_; + } + + public static final int BATCH_WRITES_FIELD_NUMBER = 2; + private boolean batchWrites_ = false; + /** + * optional bool batch_writes = 2; + * @return Whether the batchWrites field is set. + */ + @java.lang.Override + public boolean hasBatchWrites() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * optional bool batch_writes = 2; + * @return The batchWrites. + */ + @java.lang.Override + public boolean getBatchWrites() { + return batchWrites_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeBool(1, threaded_); + } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeBool(2, batchWrites_); } + getUnknownFields().writeTo(output); + } - private java.lang.Object hashTreeAlgorithm_ = ""; - /** - *
-       * The hash algorithm used in verity hash tree.
-       * 
- * - * optional string hash_tree_algorithm = 12; - * @return Whether the hashTreeAlgorithm field is set. - */ - public boolean hasHashTreeAlgorithm() { - return ((bitField0_ & 0x00000800) != 0); + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(1, threaded_); } - /** - *
-       * The hash algorithm used in verity hash tree.
-       * 
- * - * optional string hash_tree_algorithm = 12; - * @return The hashTreeAlgorithm. - */ - public java.lang.String getHashTreeAlgorithm() { - java.lang.Object ref = hashTreeAlgorithm_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - if (bs.isValidUtf8()) { - hashTreeAlgorithm_ = s; - } - return s; - } else { - return (java.lang.String) ref; - } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, batchWrites_); } - /** - *
-       * The hash algorithm used in verity hash tree.
-       * 
- * - * optional string hash_tree_algorithm = 12; - * @return The bytes for hashTreeAlgorithm. - */ - public com.google.protobuf.ByteString - getHashTreeAlgorithmBytes() { - java.lang.Object ref = hashTreeAlgorithm_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - hashTreeAlgorithm_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; } - /** - *
-       * The hash algorithm used in verity hash tree.
-       * 
- * - * optional string hash_tree_algorithm = 12; - * @param value The hashTreeAlgorithm to set. - * @return This builder for chaining. - */ - public Builder setHashTreeAlgorithm( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000800; - hashTreeAlgorithm_ = value; - onChanged(); - return this; + if (!(obj instanceof chromeos_update_engine.UpdateMetadata.VABCFeatureSet)) { + return super.equals(obj); } - /** - *
-       * The hash algorithm used in verity hash tree.
-       * 
- * - * optional string hash_tree_algorithm = 12; - * @return This builder for chaining. - */ - public Builder clearHashTreeAlgorithm() { - bitField0_ = (bitField0_ & ~0x00000800); - hashTreeAlgorithm_ = getDefaultInstance().getHashTreeAlgorithm(); - onChanged(); - return this; + chromeos_update_engine.UpdateMetadata.VABCFeatureSet other = (chromeos_update_engine.UpdateMetadata.VABCFeatureSet) obj; + + if (hasThreaded() != other.hasThreaded()) return false; + if (hasThreaded()) { + if (getThreaded() + != other.getThreaded()) return false; } - /** - *
-       * The hash algorithm used in verity hash tree.
-       * 
- * - * optional string hash_tree_algorithm = 12; - * @param value The bytes for hashTreeAlgorithm to set. - * @return This builder for chaining. - */ - public Builder setHashTreeAlgorithmBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000800; - hashTreeAlgorithm_ = value; - onChanged(); - return this; + if (hasBatchWrites() != other.hasBatchWrites()) return false; + if (hasBatchWrites()) { + if (getBatchWrites() + != other.getBatchWrites()) return false; } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } - private com.google.protobuf.ByteString hashTreeSalt_ = com.google.protobuf.ByteString.EMPTY; - /** - *
-       * The salt used for verity hash tree.
-       * 
- * - * optional bytes hash_tree_salt = 13; - * @return Whether the hashTreeSalt field is set. - */ - @java.lang.Override - public boolean hasHashTreeSalt() { - return ((bitField0_ & 0x00001000) != 0); + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; } - /** - *
-       * The salt used for verity hash tree.
-       * 
- * - * optional bytes hash_tree_salt = 13; - * @return The hashTreeSalt. - */ - @java.lang.Override - public com.google.protobuf.ByteString getHashTreeSalt() { - return hashTreeSalt_; + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasThreaded()) { + hash = (37 * hash) + THREADED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getThreaded()); } - /** - *
-       * The salt used for verity hash tree.
-       * 
- * - * optional bytes hash_tree_salt = 13; - * @param value The hashTreeSalt to set. - * @return This builder for chaining. - */ - public Builder setHashTreeSalt(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00001000; - hashTreeSalt_ = value; - onChanged(); - return this; + if (hasBatchWrites()) { + hash = (37 * hash) + BATCH_WRITES_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getBatchWrites()); } - /** - *
-       * The salt used for verity hash tree.
-       * 
- * - * optional bytes hash_tree_salt = 13; - * @return This builder for chaining. - */ - public Builder clearHashTreeSalt() { - bitField0_ = (bitField0_ & ~0x00001000); - hashTreeSalt_ = getDefaultInstance().getHashTreeSalt(); - onChanged(); - return this; + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.VABCFeatureSet prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code chromeos_update_engine.VABCFeatureSet} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:chromeos_update_engine.VABCFeatureSet) + chromeos_update_engine.UpdateMetadata.VABCFeatureSetOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_VABCFeatureSet_descriptor; } - private chromeos_update_engine.UpdateMetadata.Extent fecDataExtent_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> fecDataExtentBuilder_; - /** - *
-       * The extent for data covered by FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - * @return Whether the fecDataExtent field is set. - */ - public boolean hasFecDataExtent() { - return ((bitField0_ & 0x00002000) != 0); + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_VABCFeatureSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.VABCFeatureSet.class, chromeos_update_engine.UpdateMetadata.VABCFeatureSet.Builder.class); } - /** - *
-       * The extent for data covered by FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - * @return The fecDataExtent. - */ - public chromeos_update_engine.UpdateMetadata.Extent getFecDataExtent() { - if (fecDataExtentBuilder_ == null) { - return fecDataExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecDataExtent_; - } else { - return fecDataExtentBuilder_.getMessage(); - } + + // Construct using chromeos_update_engine.UpdateMetadata.VABCFeatureSet.newBuilder() + private Builder() { + } - /** - *
-       * The extent for data covered by FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - */ - public Builder setFecDataExtent(chromeos_update_engine.UpdateMetadata.Extent value) { - if (fecDataExtentBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - fecDataExtent_ = value; - onChanged(); - } else { - fecDataExtentBuilder_.setMessage(value); - } - bitField0_ |= 0x00002000; - return this; + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } - /** - *
-       * The extent for data covered by FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - */ - public Builder setFecDataExtent( - chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { - if (fecDataExtentBuilder_ == null) { - fecDataExtent_ = builderForValue.build(); - onChanged(); - } else { - fecDataExtentBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00002000; + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + threaded_ = false; + batchWrites_ = false; return this; } - /** - *
-       * The extent for data covered by FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - */ - public Builder mergeFecDataExtent(chromeos_update_engine.UpdateMetadata.Extent value) { - if (fecDataExtentBuilder_ == null) { - if (((bitField0_ & 0x00002000) != 0) && - fecDataExtent_ != null && - fecDataExtent_ != chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()) { - fecDataExtent_ = - chromeos_update_engine.UpdateMetadata.Extent.newBuilder(fecDataExtent_).mergeFrom(value).buildPartial(); - } else { - fecDataExtent_ = value; - } - onChanged(); - } else { - fecDataExtentBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00002000; - return this; + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_VABCFeatureSet_descriptor; } - /** - *
-       * The extent for data covered by FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - */ - public Builder clearFecDataExtent() { - if (fecDataExtentBuilder_ == null) { - fecDataExtent_ = null; - onChanged(); - } else { - fecDataExtentBuilder_.clear(); + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.VABCFeatureSet getDefaultInstanceForType() { + return chromeos_update_engine.UpdateMetadata.VABCFeatureSet.getDefaultInstance(); + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.VABCFeatureSet build() { + chromeos_update_engine.UpdateMetadata.VABCFeatureSet result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); } - bitField0_ = (bitField0_ & ~0x00002000); - return this; + return result; } - /** - *
-       * The extent for data covered by FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - */ - public chromeos_update_engine.UpdateMetadata.Extent.Builder getFecDataExtentBuilder() { - bitField0_ |= 0x00002000; - onChanged(); - return getFecDataExtentFieldBuilder().getBuilder(); + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.VABCFeatureSet buildPartial() { + chromeos_update_engine.UpdateMetadata.VABCFeatureSet result = new chromeos_update_engine.UpdateMetadata.VABCFeatureSet(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; } - /** - *
-       * The extent for data covered by FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - */ - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getFecDataExtentOrBuilder() { - if (fecDataExtentBuilder_ != null) { - return fecDataExtentBuilder_.getMessageOrBuilder(); - } else { - return fecDataExtent_ == null ? - chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecDataExtent_; + + private void buildPartial0(chromeos_update_engine.UpdateMetadata.VABCFeatureSet result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.threaded_ = threaded_; + to_bitField0_ |= 0x00000001; } - } - /** - *
-       * The extent for data covered by FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_data_extent = 14; - */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> - getFecDataExtentFieldBuilder() { - if (fecDataExtentBuilder_ == null) { - fecDataExtentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( - getFecDataExtent(), - getParentForChildren(), - isClean()); - fecDataExtent_ = null; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.batchWrites_ = batchWrites_; + to_bitField0_ |= 0x00000002; } - return fecDataExtentBuilder_; + result.bitField0_ |= to_bitField0_; } - private chromeos_update_engine.UpdateMetadata.Extent fecExtent_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> fecExtentBuilder_; - /** - *
-       * The extent to store FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; - * @return Whether the fecExtent field is set. - */ - public boolean hasFecExtent() { - return ((bitField0_ & 0x00004000) != 0); + @java.lang.Override + public Builder clone() { + return super.clone(); } - /** - *
-       * The extent to store FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; - * @return The fecExtent. - */ - public chromeos_update_engine.UpdateMetadata.Extent getFecExtent() { - if (fecExtentBuilder_ == null) { - return fecExtent_ == null ? chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecExtent_; - } else { - return fecExtentBuilder_.getMessage(); - } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); } - /** - *
-       * The extent to store FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; - */ - public Builder setFecExtent(chromeos_update_engine.UpdateMetadata.Extent value) { - if (fecExtentBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - fecExtent_ = value; - onChanged(); + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof chromeos_update_engine.UpdateMetadata.VABCFeatureSet) { + return mergeFrom((chromeos_update_engine.UpdateMetadata.VABCFeatureSet)other); } else { - fecExtentBuilder_.setMessage(value); + super.mergeFrom(other); + return this; } - bitField0_ |= 0x00004000; - return this; } - /** - *
-       * The extent to store FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; - */ - public Builder setFecExtent( - chromeos_update_engine.UpdateMetadata.Extent.Builder builderForValue) { - if (fecExtentBuilder_ == null) { - fecExtent_ = builderForValue.build(); - onChanged(); - } else { - fecExtentBuilder_.setMessage(builderForValue.build()); + + public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.VABCFeatureSet other) { + if (other == chromeos_update_engine.UpdateMetadata.VABCFeatureSet.getDefaultInstance()) return this; + if (other.hasThreaded()) { + setThreaded(other.getThreaded()); } - bitField0_ |= 0x00004000; + if (other.hasBatchWrites()) { + setBatchWrites(other.getBatchWrites()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); return this; } - /** - *
-       * The extent to store FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; - */ - public Builder mergeFecExtent(chromeos_update_engine.UpdateMetadata.Extent value) { - if (fecExtentBuilder_ == null) { - if (((bitField0_ & 0x00004000) != 0) && - fecExtent_ != null && - fecExtent_ != chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance()) { - fecExtent_ = - chromeos_update_engine.UpdateMetadata.Extent.newBuilder(fecExtent_).mergeFrom(value).buildPartial(); - } else { - fecExtent_ = value; - } - onChanged(); - } else { - fecExtentBuilder_.mergeFrom(value); + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); } - bitField0_ |= 0x00004000; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + threaded_ = input.readBool(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 16: { + batchWrites_ = input.readBool(); + bitField0_ |= 0x00000002; + break; + } // case 16 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally return this; } + private int bitField0_; + + private boolean threaded_ ; /** - *
-       * The extent to store FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; + * optional bool threaded = 1; + * @return Whether the threaded field is set. */ - public Builder clearFecExtent() { - if (fecExtentBuilder_ == null) { - fecExtent_ = null; - onChanged(); - } else { - fecExtentBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00004000); - return this; + @java.lang.Override + public boolean hasThreaded() { + return ((bitField0_ & 0x00000001) != 0); } /** - *
-       * The extent to store FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; + * optional bool threaded = 1; + * @return The threaded. */ - public chromeos_update_engine.UpdateMetadata.Extent.Builder getFecExtentBuilder() { - bitField0_ |= 0x00004000; - onChanged(); - return getFecExtentFieldBuilder().getBuilder(); + @java.lang.Override + public boolean getThreaded() { + return threaded_; } /** - *
-       * The extent to store FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; + * optional bool threaded = 1; + * @param value The threaded to set. + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.ExtentOrBuilder getFecExtentOrBuilder() { - if (fecExtentBuilder_ != null) { - return fecExtentBuilder_.getMessageOrBuilder(); - } else { - return fecExtent_ == null ? - chromeos_update_engine.UpdateMetadata.Extent.getDefaultInstance() : fecExtent_; - } + public Builder setThreaded(boolean value) { + + threaded_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; } /** - *
-       * The extent to store FEC.
-       * 
- * - * optional .chromeos_update_engine.Extent fec_extent = 15; + * optional bool threaded = 1; + * @return This builder for chaining. */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder> - getFecExtentFieldBuilder() { - if (fecExtentBuilder_ == null) { - fecExtentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.Extent, chromeos_update_engine.UpdateMetadata.Extent.Builder, chromeos_update_engine.UpdateMetadata.ExtentOrBuilder>( - getFecExtent(), - getParentForChildren(), - isClean()); - fecExtent_ = null; - } - return fecExtentBuilder_; + public Builder clearThreaded() { + bitField0_ = (bitField0_ & ~0x00000001); + threaded_ = false; + onChanged(); + return this; } - private int fecRoots_ = 2; + private boolean batchWrites_ ; /** - *
-       * The number of FEC roots.
-       * 
- * - * optional uint32 fec_roots = 16 [default = 2]; - * @return Whether the fecRoots field is set. + * optional bool batch_writes = 2; + * @return Whether the batchWrites field is set. */ @java.lang.Override - public boolean hasFecRoots() { - return ((bitField0_ & 0x00008000) != 0); + public boolean hasBatchWrites() { + return ((bitField0_ & 0x00000002) != 0); } /** - *
-       * The number of FEC roots.
-       * 
- * - * optional uint32 fec_roots = 16 [default = 2]; - * @return The fecRoots. + * optional bool batch_writes = 2; + * @return The batchWrites. */ @java.lang.Override - public int getFecRoots() { - return fecRoots_; + public boolean getBatchWrites() { + return batchWrites_; } /** - *
-       * The number of FEC roots.
-       * 
- * - * optional uint32 fec_roots = 16 [default = 2]; - * @param value The fecRoots to set. + * optional bool batch_writes = 2; + * @param value The batchWrites to set. * @return This builder for chaining. */ - public Builder setFecRoots(int value) { - bitField0_ |= 0x00008000; - fecRoots_ = value; + public Builder setBatchWrites(boolean value) { + + batchWrites_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } /** - *
-       * The number of FEC roots.
-       * 
- * - * optional uint32 fec_roots = 16 [default = 2]; + * optional bool batch_writes = 2; * @return This builder for chaining. */ - public Builder clearFecRoots() { - bitField0_ = (bitField0_ & ~0x00008000); - fecRoots_ = 2; + public Builder clearBatchWrites() { + bitField0_ = (bitField0_ & ~0x00000002); + batchWrites_ = false; onChanged(); return this; } @@ -11601,390 +13745,601 @@ public final class UpdateMetadata { return super.setUnknownFields(unknownFields); } - @java.lang.Override - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.mergeUnknownFields(unknownFields); - } + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:chromeos_update_engine.VABCFeatureSet) + } + + // @@protoc_insertion_point(class_scope:chromeos_update_engine.VABCFeatureSet) + private static final chromeos_update_engine.UpdateMetadata.VABCFeatureSet DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.VABCFeatureSet(); + } + + public static chromeos_update_engine.UpdateMetadata.VABCFeatureSet getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public VABCFeatureSet parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.VABCFeatureSet getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface DynamicPartitionMetadataOrBuilder extends + // @@protoc_insertion_point(interface_extends:chromeos_update_engine.DynamicPartitionMetadata) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+     * - If an updatable group is on the device but not in the manifest, it is
+     *   not updated. Hence, the group will not be resized, and partitions cannot
+     *   be added to or removed from the group.
+     * - If an updatable group is in the manifest but not on the device, the group
+     *   is added to the device.
+     * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + java.util.List + getGroupsList(); + /** + *
+     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+     * - If an updatable group is on the device but not in the manifest, it is
+     *   not updated. Hence, the group will not be resized, and partitions cannot
+     *   be added to or removed from the group.
+     * - If an updatable group is in the manifest but not on the device, the group
+     *   is added to the device.
+     * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getGroups(int index); + /** + *
+     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+     * - If an updatable group is on the device but not in the manifest, it is
+     *   not updated. Hence, the group will not be resized, and partitions cannot
+     *   be added to or removed from the group.
+     * - If an updatable group is in the manifest but not on the device, the group
+     *   is added to the device.
+     * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + int getGroupsCount(); + /** + *
+     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+     * - If an updatable group is on the device but not in the manifest, it is
+     *   not updated. Hence, the group will not be resized, and partitions cannot
+     *   be added to or removed from the group.
+     * - If an updatable group is in the manifest but not on the device, the group
+     *   is added to the device.
+     * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + java.util.List + getGroupsOrBuilderList(); + /** + *
+     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+     * - If an updatable group is on the device but not in the manifest, it is
+     *   not updated. Hence, the group will not be resized, and partitions cannot
+     *   be added to or removed from the group.
+     * - If an updatable group is in the manifest but not on the device, the group
+     *   is added to the device.
+     * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder getGroupsOrBuilder( + int index); + + /** + *
+     * Whether dynamic partitions have snapshots during the update. If this is
+     * set to true, the update_engine daemon creates snapshots for all dynamic
+     * partitions if possible. If this is unset, the update_engine daemon MUST
+     * NOT create snapshots for dynamic partitions.
+     * 
+ * + * optional bool snapshot_enabled = 2; + * @return Whether the snapshotEnabled field is set. + */ + boolean hasSnapshotEnabled(); + /** + *
+     * Whether dynamic partitions have snapshots during the update. If this is
+     * set to true, the update_engine daemon creates snapshots for all dynamic
+     * partitions if possible. If this is unset, the update_engine daemon MUST
+     * NOT create snapshots for dynamic partitions.
+     * 
+ * + * optional bool snapshot_enabled = 2; + * @return The snapshotEnabled. + */ + boolean getSnapshotEnabled(); + /** + *
+     * If this is set to false, update_engine should not use VABC regardless. If
+     * this is set to true, update_engine may choose to use VABC if device
+     * supports it, but not guaranteed.
+     * VABC stands for Virtual AB Compression
+     * 
+ * + * optional bool vabc_enabled = 3; + * @return Whether the vabcEnabled field is set. + */ + boolean hasVabcEnabled(); + /** + *
+     * If this is set to false, update_engine should not use VABC regardless. If
+     * this is set to true, update_engine may choose to use VABC if device
+     * supports it, but not guaranteed.
+     * VABC stands for Virtual AB Compression
+     * 
+ * + * optional bool vabc_enabled = 3; + * @return The vabcEnabled. + */ + boolean getVabcEnabled(); - // @@protoc_insertion_point(builder_scope:chromeos_update_engine.PartitionUpdate) - } + /** + *
+     * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+     * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+     * as this parameter is ultimated forwarded to libsnapshot's CowWriter
+     * 
+ * + * optional string vabc_compression_param = 4; + * @return Whether the vabcCompressionParam field is set. + */ + boolean hasVabcCompressionParam(); + /** + *
+     * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+     * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+     * as this parameter is ultimated forwarded to libsnapshot's CowWriter
+     * 
+ * + * optional string vabc_compression_param = 4; + * @return The vabcCompressionParam. + */ + java.lang.String getVabcCompressionParam(); + /** + *
+     * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+     * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+     * as this parameter is ultimated forwarded to libsnapshot's CowWriter
+     * 
+ * + * optional string vabc_compression_param = 4; + * @return The bytes for vabcCompressionParam. + */ + com.google.protobuf.ByteString + getVabcCompressionParamBytes(); - // @@protoc_insertion_point(class_scope:chromeos_update_engine.PartitionUpdate) - private static final chromeos_update_engine.UpdateMetadata.PartitionUpdate DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.PartitionUpdate(); - } + /** + *
+     * COW version used by VABC. The represents the major version in the COW
+     * header
+     * 
+ * + * optional uint32 cow_version = 5; + * @return Whether the cowVersion field is set. + */ + boolean hasCowVersion(); + /** + *
+     * COW version used by VABC. The represents the major version in the COW
+     * header
+     * 
+ * + * optional uint32 cow_version = 5; + * @return The cowVersion. + */ + int getCowVersion(); - public static chromeos_update_engine.UpdateMetadata.PartitionUpdate getDefaultInstance() { - return DEFAULT_INSTANCE; + /** + *
+     * A collection of knobs to tune Virtual AB Compression
+     * 
+ * + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; + * @return Whether the vabcFeatureSet field is set. + */ + boolean hasVabcFeatureSet(); + /** + *
+     * A collection of knobs to tune Virtual AB Compression
+     * 
+ * + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; + * @return The vabcFeatureSet. + */ + chromeos_update_engine.UpdateMetadata.VABCFeatureSet getVabcFeatureSet(); + /** + *
+     * A collection of knobs to tune Virtual AB Compression
+     * 
+ * + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; + */ + chromeos_update_engine.UpdateMetadata.VABCFeatureSetOrBuilder getVabcFeatureSetOrBuilder(); + } + /** + *
+   * Metadata related to all dynamic partitions.
+   * 
+ * + * Protobuf type {@code chromeos_update_engine.DynamicPartitionMetadata} + */ + public static final class DynamicPartitionMetadata extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:chromeos_update_engine.DynamicPartitionMetadata) + DynamicPartitionMetadataOrBuilder { + private static final long serialVersionUID = 0L; + // Use DynamicPartitionMetadata.newBuilder() to construct. + private DynamicPartitionMetadata(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); } - - @java.lang.Deprecated public static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - @java.lang.Override - public PartitionUpdate parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new PartitionUpdate(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; + private DynamicPartitionMetadata() { + groups_ = java.util.Collections.emptyList(); + vabcCompressionParam_ = ""; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DynamicPartitionMetadata(); } @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionUpdate getDefaultInstanceForType() { - return DEFAULT_INSTANCE; + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionMetadata_descriptor; } - } - - public interface DynamicPartitionGroupOrBuilder extends - // @@protoc_insertion_point(interface_extends:chromeos_update_engine.DynamicPartitionGroup) - com.google.protobuf.MessageOrBuilder { + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.class, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder.class); + } + private int bitField0_; + public static final int GROUPS_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private java.util.List groups_; /** *
-     * Name of the group.
+     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+     * - If an updatable group is on the device but not in the manifest, it is
+     *   not updated. Hence, the group will not be resized, and partitions cannot
+     *   be added to or removed from the group.
+     * - If an updatable group is in the manifest but not on the device, the group
+     *   is added to the device.
      * 
* - * required string name = 1; - * @return Whether the name field is set. + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; */ - boolean hasName(); + @java.lang.Override + public java.util.List getGroupsList() { + return groups_; + } /** *
-     * Name of the group.
+     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+     * - If an updatable group is on the device but not in the manifest, it is
+     *   not updated. Hence, the group will not be resized, and partitions cannot
+     *   be added to or removed from the group.
+     * - If an updatable group is in the manifest but not on the device, the group
+     *   is added to the device.
      * 
* - * required string name = 1; - * @return The name. + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; */ - java.lang.String getName(); + @java.lang.Override + public java.util.List + getGroupsOrBuilderList() { + return groups_; + } /** *
-     * Name of the group.
+     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+     * - If an updatable group is on the device but not in the manifest, it is
+     *   not updated. Hence, the group will not be resized, and partitions cannot
+     *   be added to or removed from the group.
+     * - If an updatable group is in the manifest but not on the device, the group
+     *   is added to the device.
      * 
* - * required string name = 1; - * @return The bytes for name. + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; */ - com.google.protobuf.ByteString - getNameBytes(); - + @java.lang.Override + public int getGroupsCount() { + return groups_.size(); + } /** *
-     * Maximum size of the group. The sum of sizes of all partitions in the group
-     * must not exceed the maximum size of the group.
+     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+     * - If an updatable group is on the device but not in the manifest, it is
+     *   not updated. Hence, the group will not be resized, and partitions cannot
+     *   be added to or removed from the group.
+     * - If an updatable group is in the manifest but not on the device, the group
+     *   is added to the device.
      * 
* - * optional uint64 size = 2; - * @return Whether the size field is set. + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; */ - boolean hasSize(); + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getGroups(int index) { + return groups_.get(index); + } /** *
-     * Maximum size of the group. The sum of sizes of all partitions in the group
-     * must not exceed the maximum size of the group.
+     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+     * - If an updatable group is on the device but not in the manifest, it is
+     *   not updated. Hence, the group will not be resized, and partitions cannot
+     *   be added to or removed from the group.
+     * - If an updatable group is in the manifest but not on the device, the group
+     *   is added to the device.
      * 
* - * optional uint64 size = 2; - * @return The size. + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; */ - long getSize(); + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder getGroupsOrBuilder( + int index) { + return groups_.get(index); + } + public static final int SNAPSHOT_ENABLED_FIELD_NUMBER = 2; + private boolean snapshotEnabled_ = false; /** *
-     * A list of partitions that belong to the group.
+     * Whether dynamic partitions have snapshots during the update. If this is
+     * set to true, the update_engine daemon creates snapshots for all dynamic
+     * partitions if possible. If this is unset, the update_engine daemon MUST
+     * NOT create snapshots for dynamic partitions.
      * 
* - * repeated string partition_names = 3; - * @return A list containing the partitionNames. + * optional bool snapshot_enabled = 2; + * @return Whether the snapshotEnabled field is set. */ - java.util.List - getPartitionNamesList(); + @java.lang.Override + public boolean hasSnapshotEnabled() { + return ((bitField0_ & 0x00000001) != 0); + } /** *
-     * A list of partitions that belong to the group.
+     * Whether dynamic partitions have snapshots during the update. If this is
+     * set to true, the update_engine daemon creates snapshots for all dynamic
+     * partitions if possible. If this is unset, the update_engine daemon MUST
+     * NOT create snapshots for dynamic partitions.
      * 
* - * repeated string partition_names = 3; - * @return The count of partitionNames. + * optional bool snapshot_enabled = 2; + * @return The snapshotEnabled. */ - int getPartitionNamesCount(); + @java.lang.Override + public boolean getSnapshotEnabled() { + return snapshotEnabled_; + } + + public static final int VABC_ENABLED_FIELD_NUMBER = 3; + private boolean vabcEnabled_ = false; /** *
-     * A list of partitions that belong to the group.
+     * If this is set to false, update_engine should not use VABC regardless. If
+     * this is set to true, update_engine may choose to use VABC if device
+     * supports it, but not guaranteed.
+     * VABC stands for Virtual AB Compression
      * 
* - * repeated string partition_names = 3; - * @param index The index of the element to return. - * @return The partitionNames at the given index. + * optional bool vabc_enabled = 3; + * @return Whether the vabcEnabled field is set. */ - java.lang.String getPartitionNames(int index); + @java.lang.Override + public boolean hasVabcEnabled() { + return ((bitField0_ & 0x00000002) != 0); + } /** *
-     * A list of partitions that belong to the group.
+     * If this is set to false, update_engine should not use VABC regardless. If
+     * this is set to true, update_engine may choose to use VABC if device
+     * supports it, but not guaranteed.
+     * VABC stands for Virtual AB Compression
      * 
* - * repeated string partition_names = 3; - * @param index The index of the value to return. - * @return The bytes of the partitionNames at the given index. + * optional bool vabc_enabled = 3; + * @return The vabcEnabled. */ - com.google.protobuf.ByteString - getPartitionNamesBytes(int index); - } - /** - * Protobuf type {@code chromeos_update_engine.DynamicPartitionGroup} - */ - public static final class DynamicPartitionGroup extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:chromeos_update_engine.DynamicPartitionGroup) - DynamicPartitionGroupOrBuilder { - private static final long serialVersionUID = 0L; - // Use DynamicPartitionGroup.newBuilder() to construct. - private DynamicPartitionGroup(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private DynamicPartitionGroup() { - name_ = ""; - partitionNames_ = com.google.protobuf.LazyStringArrayList.EMPTY; - } - @java.lang.Override - @SuppressWarnings({"unused"}) - protected java.lang.Object newInstance( - UnusedPrivateParameter unused) { - return new DynamicPartitionGroup(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private DynamicPartitionGroup( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 10: { - com.google.protobuf.ByteString bs = input.readBytes(); - bitField0_ |= 0x00000001; - name_ = bs; - break; - } - case 16: { - bitField0_ |= 0x00000002; - size_ = input.readUInt64(); - break; - } - case 26: { - com.google.protobuf.ByteString bs = input.readBytes(); - if (!((mutable_bitField0_ & 0x00000004) != 0)) { - partitionNames_ = new com.google.protobuf.LazyStringArrayList(); - mutable_bitField0_ |= 0x00000004; - } - partitionNames_.add(bs); - break; - } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000004) != 0)) { - partitionNames_ = partitionNames_.getUnmodifiableView(); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionGroup_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionGroup_fieldAccessorTable - .ensureFieldAccessorsInitialized( - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.class, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder.class); + public boolean getVabcEnabled() { + return vabcEnabled_; } - private int bitField0_; - public static final int NAME_FIELD_NUMBER = 1; - private volatile java.lang.Object name_; + public static final int VABC_COMPRESSION_PARAM_FIELD_NUMBER = 4; + @SuppressWarnings("serial") + private volatile java.lang.Object vabcCompressionParam_ = ""; /** *
-     * Name of the group.
+     * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+     * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+     * as this parameter is ultimated forwarded to libsnapshot's CowWriter
      * 
* - * required string name = 1; - * @return Whether the name field is set. + * optional string vabc_compression_param = 4; + * @return Whether the vabcCompressionParam field is set. */ @java.lang.Override - public boolean hasName() { - return ((bitField0_ & 0x00000001) != 0); + public boolean hasVabcCompressionParam() { + return ((bitField0_ & 0x00000004) != 0); } /** *
-     * Name of the group.
+     * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+     * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+     * as this parameter is ultimated forwarded to libsnapshot's CowWriter
      * 
* - * required string name = 1; - * @return The name. + * optional string vabc_compression_param = 4; + * @return The vabcCompressionParam. */ @java.lang.Override - public java.lang.String getName() { - java.lang.Object ref = name_; + public java.lang.String getVabcCompressionParam() { + java.lang.Object ref = vabcCompressionParam_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { - name_ = s; + vabcCompressionParam_ = s; } return s; } } /** *
-     * Name of the group.
+     * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+     * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+     * as this parameter is ultimated forwarded to libsnapshot's CowWriter
      * 
* - * required string name = 1; - * @return The bytes for name. + * optional string vabc_compression_param = 4; + * @return The bytes for vabcCompressionParam. */ @java.lang.Override public com.google.protobuf.ByteString - getNameBytes() { - java.lang.Object ref = name_; + getVabcCompressionParamBytes() { + java.lang.Object ref = vabcCompressionParam_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); - name_ = b; + vabcCompressionParam_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } - public static final int SIZE_FIELD_NUMBER = 2; - private long size_; + public static final int COW_VERSION_FIELD_NUMBER = 5; + private int cowVersion_ = 0; /** *
-     * Maximum size of the group. The sum of sizes of all partitions in the group
-     * must not exceed the maximum size of the group.
+     * COW version used by VABC. The represents the major version in the COW
+     * header
      * 
* - * optional uint64 size = 2; - * @return Whether the size field is set. + * optional uint32 cow_version = 5; + * @return Whether the cowVersion field is set. */ @java.lang.Override - public boolean hasSize() { - return ((bitField0_ & 0x00000002) != 0); + public boolean hasCowVersion() { + return ((bitField0_ & 0x00000008) != 0); } /** *
-     * Maximum size of the group. The sum of sizes of all partitions in the group
-     * must not exceed the maximum size of the group.
+     * COW version used by VABC. The represents the major version in the COW
+     * header
      * 
* - * optional uint64 size = 2; - * @return The size. + * optional uint32 cow_version = 5; + * @return The cowVersion. */ @java.lang.Override - public long getSize() { - return size_; + public int getCowVersion() { + return cowVersion_; } - public static final int PARTITION_NAMES_FIELD_NUMBER = 3; - private com.google.protobuf.LazyStringList partitionNames_; - /** - *
-     * A list of partitions that belong to the group.
-     * 
- * - * repeated string partition_names = 3; - * @return A list containing the partitionNames. - */ - public com.google.protobuf.ProtocolStringList - getPartitionNamesList() { - return partitionNames_; - } + public static final int VABC_FEATURE_SET_FIELD_NUMBER = 6; + private chromeos_update_engine.UpdateMetadata.VABCFeatureSet vabcFeatureSet_; /** *
-     * A list of partitions that belong to the group.
+     * A collection of knobs to tune Virtual AB Compression
      * 
* - * repeated string partition_names = 3; - * @return The count of partitionNames. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; + * @return Whether the vabcFeatureSet field is set. */ - public int getPartitionNamesCount() { - return partitionNames_.size(); + @java.lang.Override + public boolean hasVabcFeatureSet() { + return ((bitField0_ & 0x00000010) != 0); } /** *
-     * A list of partitions that belong to the group.
+     * A collection of knobs to tune Virtual AB Compression
      * 
* - * repeated string partition_names = 3; - * @param index The index of the element to return. - * @return The partitionNames at the given index. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; + * @return The vabcFeatureSet. */ - public java.lang.String getPartitionNames(int index) { - return partitionNames_.get(index); + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.VABCFeatureSet getVabcFeatureSet() { + return vabcFeatureSet_ == null ? chromeos_update_engine.UpdateMetadata.VABCFeatureSet.getDefaultInstance() : vabcFeatureSet_; } /** *
-     * A list of partitions that belong to the group.
+     * A collection of knobs to tune Virtual AB Compression
      * 
* - * repeated string partition_names = 3; - * @param index The index of the value to return. - * @return The bytes of the partitionNames at the given index. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; */ - public com.google.protobuf.ByteString - getPartitionNamesBytes(int index) { - return partitionNames_.getByteString(index); + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.VABCFeatureSetOrBuilder getVabcFeatureSetOrBuilder() { + return vabcFeatureSet_ == null ? chromeos_update_engine.UpdateMetadata.VABCFeatureSet.getDefaultInstance() : vabcFeatureSet_; } private byte memoizedIsInitialized = -1; @@ -11994,9 +14349,11 @@ public final class UpdateMetadata { if (isInitialized == 1) return true; if (isInitialized == 0) return false; - if (!hasName()) { - memoizedIsInitialized = 0; - return false; + for (int i = 0; i < getGroupsCount(); i++) { + if (!getGroups(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } memoizedIsInitialized = 1; return true; @@ -12005,16 +14362,25 @@ public final class UpdateMetadata { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < groups_.size(); i++) { + output.writeMessage(1, groups_.get(i)); + } if (((bitField0_ & 0x00000001) != 0)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); + output.writeBool(2, snapshotEnabled_); } if (((bitField0_ & 0x00000002) != 0)) { - output.writeUInt64(2, size_); + output.writeBool(3, vabcEnabled_); } - for (int i = 0; i < partitionNames_.size(); i++) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 3, partitionNames_.getRaw(i)); + if (((bitField0_ & 0x00000004) != 0)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, vabcCompressionParam_); + } + if (((bitField0_ & 0x00000008) != 0)) { + output.writeUInt32(5, cowVersion_); + } + if (((bitField0_ & 0x00000010) != 0)) { + output.writeMessage(6, getVabcFeatureSet()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -12023,22 +14389,30 @@ public final class UpdateMetadata { if (size != -1) return size; size = 0; + for (int i = 0; i < groups_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, groups_.get(i)); + } if (((bitField0_ & 0x00000001) != 0)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, snapshotEnabled_); } if (((bitField0_ & 0x00000002) != 0)) { size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(2, size_); + .computeBoolSize(3, vabcEnabled_); } - { - int dataSize = 0; - for (int i = 0; i < partitionNames_.size(); i++) { - dataSize += computeStringSizeNoTag(partitionNames_.getRaw(i)); - } - size += dataSize; - size += 1 * getPartitionNamesList().size(); + if (((bitField0_ & 0x00000004) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, vabcCompressionParam_); + } + if (((bitField0_ & 0x00000008) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(5, cowVersion_); } - size += unknownFields.getSerializedSize(); + if (((bitField0_ & 0x00000010) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, getVabcFeatureSet()); + } + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -12048,24 +14422,39 @@ public final class UpdateMetadata { if (obj == this) { return true; } - if (!(obj instanceof chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup)) { + if (!(obj instanceof chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata)) { return super.equals(obj); } - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup other = (chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup) obj; + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata other = (chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata) obj; - if (hasName() != other.hasName()) return false; - if (hasName()) { - if (!getName() - .equals(other.getName())) return false; + if (!getGroupsList() + .equals(other.getGroupsList())) return false; + if (hasSnapshotEnabled() != other.hasSnapshotEnabled()) return false; + if (hasSnapshotEnabled()) { + if (getSnapshotEnabled() + != other.getSnapshotEnabled()) return false; } - if (hasSize() != other.hasSize()) return false; - if (hasSize()) { - if (getSize() - != other.getSize()) return false; + if (hasVabcEnabled() != other.hasVabcEnabled()) return false; + if (hasVabcEnabled()) { + if (getVabcEnabled() + != other.getVabcEnabled()) return false; } - if (!getPartitionNamesList() - .equals(other.getPartitionNamesList())) return false; - if (!unknownFields.equals(other.unknownFields)) return false; + if (hasVabcCompressionParam() != other.hasVabcCompressionParam()) return false; + if (hasVabcCompressionParam()) { + if (!getVabcCompressionParam() + .equals(other.getVabcCompressionParam())) return false; + } + if (hasCowVersion() != other.hasCowVersion()) return false; + if (hasCowVersion()) { + if (getCowVersion() + != other.getCowVersion()) return false; + } + if (hasVabcFeatureSet() != other.hasVabcFeatureSet()) return false; + if (hasVabcFeatureSet()) { + if (!getVabcFeatureSet() + .equals(other.getVabcFeatureSet())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -12076,87 +14465,100 @@ public final class UpdateMetadata { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (hasName()) { - hash = (37 * hash) + NAME_FIELD_NUMBER; - hash = (53 * hash) + getName().hashCode(); + if (getGroupsCount() > 0) { + hash = (37 * hash) + GROUPS_FIELD_NUMBER; + hash = (53 * hash) + getGroupsList().hashCode(); } - if (hasSize()) { - hash = (37 * hash) + SIZE_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getSize()); + if (hasSnapshotEnabled()) { + hash = (37 * hash) + SNAPSHOT_ENABLED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getSnapshotEnabled()); + } + if (hasVabcEnabled()) { + hash = (37 * hash) + VABC_ENABLED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getVabcEnabled()); + } + if (hasVabcCompressionParam()) { + hash = (37 * hash) + VABC_COMPRESSION_PARAM_FIELD_NUMBER; + hash = (53 * hash) + getVabcCompressionParam().hashCode(); + } + if (hasCowVersion()) { + hash = (37 * hash) + COW_VERSION_FIELD_NUMBER; + hash = (53 * hash) + getCowVersion(); } - if (getPartitionNamesCount() > 0) { - hash = (37 * hash) + PARTITION_NAMES_FIELD_NUMBER; - hash = (53 * hash) + getPartitionNamesList().hashCode(); + if (hasVabcFeatureSet()) { + hash = (37 * hash) + VABC_FEATURE_SET_FIELD_NUMBER; + hash = (53 * hash) + getVabcFeatureSet().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom(byte[] data) + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom(java.io.InputStream input) + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseDelimitedFrom(java.io.InputStream input) + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseDelimitedFrom( + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parseFrom( + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -12169,7 +14571,7 @@ public final class UpdateMetadata { public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup prototype) { + public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -12185,218 +14587,883 @@ public final class UpdateMetadata { return builder; } /** - * Protobuf type {@code chromeos_update_engine.DynamicPartitionGroup} + *
+     * Metadata related to all dynamic partitions.
+     * 
+ * + * Protobuf type {@code chromeos_update_engine.DynamicPartitionMetadata} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:chromeos_update_engine.DynamicPartitionGroup) - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder { + // @@protoc_insertion_point(builder_implements:chromeos_update_engine.DynamicPartitionMetadata) + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionGroup_descriptor; + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.class, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder.class); + } + + // Construct using chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getGroupsFieldBuilder(); + getVabcFeatureSetFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (groupsBuilder_ == null) { + groups_ = java.util.Collections.emptyList(); + } else { + groups_ = null; + groupsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + snapshotEnabled_ = false; + vabcEnabled_ = false; + vabcCompressionParam_ = ""; + cowVersion_ = 0; + vabcFeatureSet_ = null; + if (vabcFeatureSetBuilder_ != null) { + vabcFeatureSetBuilder_.dispose(); + vabcFeatureSetBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionMetadata_descriptor; + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDefaultInstanceForType() { + return chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance(); + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata build() { + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata buildPartial() { + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata result = new chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata result) { + if (groupsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + groups_ = java.util.Collections.unmodifiableList(groups_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.groups_ = groups_; + } else { + result.groups_ = groupsBuilder_.build(); + } + } + + private void buildPartial0(chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.snapshotEnabled_ = snapshotEnabled_; + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.vabcEnabled_ = vabcEnabled_; + to_bitField0_ |= 0x00000002; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.vabcCompressionParam_ = vabcCompressionParam_; + to_bitField0_ |= 0x00000004; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.cowVersion_ = cowVersion_; + to_bitField0_ |= 0x00000008; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.vabcFeatureSet_ = vabcFeatureSetBuilder_ == null + ? vabcFeatureSet_ + : vabcFeatureSetBuilder_.build(); + to_bitField0_ |= 0x00000010; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata) { + return mergeFrom((chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata other) { + if (other == chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance()) return this; + if (groupsBuilder_ == null) { + if (!other.groups_.isEmpty()) { + if (groups_.isEmpty()) { + groups_ = other.groups_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureGroupsIsMutable(); + groups_.addAll(other.groups_); + } + onChanged(); + } + } else { + if (!other.groups_.isEmpty()) { + if (groupsBuilder_.isEmpty()) { + groupsBuilder_.dispose(); + groupsBuilder_ = null; + groups_ = other.groups_; + bitField0_ = (bitField0_ & ~0x00000001); + groupsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getGroupsFieldBuilder() : null; + } else { + groupsBuilder_.addAllMessages(other.groups_); + } + } + } + if (other.hasSnapshotEnabled()) { + setSnapshotEnabled(other.getSnapshotEnabled()); + } + if (other.hasVabcEnabled()) { + setVabcEnabled(other.getVabcEnabled()); + } + if (other.hasVabcCompressionParam()) { + vabcCompressionParam_ = other.vabcCompressionParam_; + bitField0_ |= 0x00000008; + onChanged(); + } + if (other.hasCowVersion()) { + setCowVersion(other.getCowVersion()); + } + if (other.hasVabcFeatureSet()) { + mergeVabcFeatureSet(other.getVabcFeatureSet()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + for (int i = 0; i < getGroupsCount(); i++) { + if (!getGroups(i).isInitialized()) { + return false; + } + } + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup m = + input.readMessage( + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.PARSER, + extensionRegistry); + if (groupsBuilder_ == null) { + ensureGroupsIsMutable(); + groups_.add(m); + } else { + groupsBuilder_.addMessage(m); + } + break; + } // case 10 + case 16: { + snapshotEnabled_ = input.readBool(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 24: { + vabcEnabled_ = input.readBool(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 34: { + vabcCompressionParam_ = input.readBytes(); + bitField0_ |= 0x00000008; + break; + } // case 34 + case 40: { + cowVersion_ = input.readUInt32(); + bitField0_ |= 0x00000010; + break; + } // case 40 + case 50: { + input.readMessage( + getVabcFeatureSetFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000020; + break; + } // case 50 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; } + private int bitField0_; - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionGroup_fieldAccessorTable - .ensureFieldAccessorsInitialized( - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.class, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder.class); + private java.util.List groups_ = + java.util.Collections.emptyList(); + private void ensureGroupsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + groups_ = new java.util.ArrayList(groups_); + bitField0_ |= 0x00000001; + } } - // Construct using chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder> groupsBuilder_; - private Builder( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public java.util.List getGroupsList() { + if (groupsBuilder_ == null) { + return java.util.Collections.unmodifiableList(groups_); + } else { + return groupsBuilder_.getMessageList(); + } } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public int getGroupsCount() { + if (groupsBuilder_ == null) { + return groups_.size(); + } else { + return groupsBuilder_.getCount(); + } + } + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getGroups(int index) { + if (groupsBuilder_ == null) { + return groups_.get(index); + } else { + return groupsBuilder_.getMessage(index); + } + } + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public Builder setGroups( + int index, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup value) { + if (groupsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureGroupsIsMutable(); + groups_.set(index, value); + onChanged(); + } else { + groupsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public Builder setGroups( + int index, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder builderForValue) { + if (groupsBuilder_ == null) { + ensureGroupsIsMutable(); + groups_.set(index, builderForValue.build()); + onChanged(); + } else { + groupsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public Builder addGroups(chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup value) { + if (groupsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureGroupsIsMutable(); + groups_.add(value); + onChanged(); + } else { + groupsBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public Builder addGroups( + int index, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup value) { + if (groupsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureGroupsIsMutable(); + groups_.add(index, value); + onChanged(); + } else { + groupsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public Builder addGroups( + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder builderForValue) { + if (groupsBuilder_ == null) { + ensureGroupsIsMutable(); + groups_.add(builderForValue.build()); + onChanged(); + } else { + groupsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public Builder addGroups( + int index, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder builderForValue) { + if (groupsBuilder_ == null) { + ensureGroupsIsMutable(); + groups_.add(index, builderForValue.build()); + onChanged(); + } else { + groupsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public Builder addAllGroups( + java.lang.Iterable values) { + if (groupsBuilder_ == null) { + ensureGroupsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, groups_); + onChanged(); + } else { + groupsBuilder_.addAllMessages(values); } + return this; } - @java.lang.Override - public Builder clear() { - super.clear(); - name_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - size_ = 0L; - bitField0_ = (bitField0_ & ~0x00000002); - partitionNames_ = com.google.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000004); + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public Builder clearGroups() { + if (groupsBuilder_ == null) { + groups_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + groupsBuilder_.clear(); + } return this; } - - @java.lang.Override - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionGroup_descriptor; + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public Builder removeGroups(int index) { + if (groupsBuilder_ == null) { + ensureGroupsIsMutable(); + groups_.remove(index); + onChanged(); + } else { + groupsBuilder_.remove(index); + } + return this; } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getDefaultInstanceForType() { - return chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.getDefaultInstance(); + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder getGroupsBuilder( + int index) { + return getGroupsFieldBuilder().getBuilder(index); } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup build() { - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder getGroupsOrBuilder( + int index) { + if (groupsBuilder_ == null) { + return groups_.get(index); } else { + return groupsBuilder_.getMessageOrBuilder(index); } - return result; } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup buildPartial() { - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup result = new chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) != 0)) { - to_bitField0_ |= 0x00000001; - } - result.name_ = name_; - if (((from_bitField0_ & 0x00000002) != 0)) { - result.size_ = size_; - to_bitField0_ |= 0x00000002; + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public java.util.List + getGroupsOrBuilderList() { + if (groupsBuilder_ != null) { + return groupsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(groups_); } - if (((bitField0_ & 0x00000004) != 0)) { - partitionNames_ = partitionNames_.getUnmodifiableView(); - bitField0_ = (bitField0_ & ~0x00000004); + } + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder addGroupsBuilder() { + return getGroupsFieldBuilder().addBuilder( + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.getDefaultInstance()); + } + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder addGroupsBuilder( + int index) { + return getGroupsFieldBuilder().addBuilder( + index, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.getDefaultInstance()); + } + /** + *
+       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
+       * - If an updatable group is on the device but not in the manifest, it is
+       *   not updated. Hence, the group will not be resized, and partitions cannot
+       *   be added to or removed from the group.
+       * - If an updatable group is in the manifest but not on the device, the group
+       *   is added to the device.
+       * 
+ * + * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + */ + public java.util.List + getGroupsBuilderList() { + return getGroupsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder> + getGroupsFieldBuilder() { + if (groupsBuilder_ == null) { + groupsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder>( + groups_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + groups_ = null; } - result.partitionNames_ = partitionNames_; - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; + return groupsBuilder_; } + private boolean snapshotEnabled_ ; + /** + *
+       * Whether dynamic partitions have snapshots during the update. If this is
+       * set to true, the update_engine daemon creates snapshots for all dynamic
+       * partitions if possible. If this is unset, the update_engine daemon MUST
+       * NOT create snapshots for dynamic partitions.
+       * 
+ * + * optional bool snapshot_enabled = 2; + * @return Whether the snapshotEnabled field is set. + */ @java.lang.Override - public Builder clone() { - return super.clone(); - } - @java.lang.Override - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.setField(field, value); + public boolean hasSnapshotEnabled() { + return ((bitField0_ & 0x00000002) != 0); } + /** + *
+       * Whether dynamic partitions have snapshots during the update. If this is
+       * set to true, the update_engine daemon creates snapshots for all dynamic
+       * partitions if possible. If this is unset, the update_engine daemon MUST
+       * NOT create snapshots for dynamic partitions.
+       * 
+ * + * optional bool snapshot_enabled = 2; + * @return The snapshotEnabled. + */ @java.lang.Override - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); + public boolean getSnapshotEnabled() { + return snapshotEnabled_; } - @java.lang.Override - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); + /** + *
+       * Whether dynamic partitions have snapshots during the update. If this is
+       * set to true, the update_engine daemon creates snapshots for all dynamic
+       * partitions if possible. If this is unset, the update_engine daemon MUST
+       * NOT create snapshots for dynamic partitions.
+       * 
+ * + * optional bool snapshot_enabled = 2; + * @param value The snapshotEnabled to set. + * @return This builder for chaining. + */ + public Builder setSnapshotEnabled(boolean value) { + + snapshotEnabled_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; } - @java.lang.Override - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); + /** + *
+       * Whether dynamic partitions have snapshots during the update. If this is
+       * set to true, the update_engine daemon creates snapshots for all dynamic
+       * partitions if possible. If this is unset, the update_engine daemon MUST
+       * NOT create snapshots for dynamic partitions.
+       * 
+ * + * optional bool snapshot_enabled = 2; + * @return This builder for chaining. + */ + public Builder clearSnapshotEnabled() { + bitField0_ = (bitField0_ & ~0x00000002); + snapshotEnabled_ = false; + onChanged(); + return this; } + + private boolean vabcEnabled_ ; + /** + *
+       * If this is set to false, update_engine should not use VABC regardless. If
+       * this is set to true, update_engine may choose to use VABC if device
+       * supports it, but not guaranteed.
+       * VABC stands for Virtual AB Compression
+       * 
+ * + * optional bool vabc_enabled = 3; + * @return Whether the vabcEnabled field is set. + */ @java.lang.Override - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.addRepeatedField(field, value); + public boolean hasVabcEnabled() { + return ((bitField0_ & 0x00000004) != 0); } + /** + *
+       * If this is set to false, update_engine should not use VABC regardless. If
+       * this is set to true, update_engine may choose to use VABC if device
+       * supports it, but not guaranteed.
+       * VABC stands for Virtual AB Compression
+       * 
+ * + * optional bool vabc_enabled = 3; + * @return The vabcEnabled. + */ @java.lang.Override - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup) { - return mergeFrom((chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup)other); - } else { - super.mergeFrom(other); - return this; - } + public boolean getVabcEnabled() { + return vabcEnabled_; } - - public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup other) { - if (other == chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.getDefaultInstance()) return this; - if (other.hasName()) { - bitField0_ |= 0x00000001; - name_ = other.name_; - onChanged(); - } - if (other.hasSize()) { - setSize(other.getSize()); - } - if (!other.partitionNames_.isEmpty()) { - if (partitionNames_.isEmpty()) { - partitionNames_ = other.partitionNames_; - bitField0_ = (bitField0_ & ~0x00000004); - } else { - ensurePartitionNamesIsMutable(); - partitionNames_.addAll(other.partitionNames_); - } - onChanged(); - } - this.mergeUnknownFields(other.unknownFields); + /** + *
+       * If this is set to false, update_engine should not use VABC regardless. If
+       * this is set to true, update_engine may choose to use VABC if device
+       * supports it, but not guaranteed.
+       * VABC stands for Virtual AB Compression
+       * 
+ * + * optional bool vabc_enabled = 3; + * @param value The vabcEnabled to set. + * @return This builder for chaining. + */ + public Builder setVabcEnabled(boolean value) { + + vabcEnabled_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } - - @java.lang.Override - public final boolean isInitialized() { - if (!hasName()) { - return false; - } - return true; - } - - @java.lang.Override - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } + /** + *
+       * If this is set to false, update_engine should not use VABC regardless. If
+       * this is set to true, update_engine may choose to use VABC if device
+       * supports it, but not guaranteed.
+       * VABC stands for Virtual AB Compression
+       * 
+ * + * optional bool vabc_enabled = 3; + * @return This builder for chaining. + */ + public Builder clearVabcEnabled() { + bitField0_ = (bitField0_ & ~0x00000004); + vabcEnabled_ = false; + onChanged(); return this; } - private int bitField0_; - private java.lang.Object name_ = ""; + private java.lang.Object vabcCompressionParam_ = ""; /** *
-       * Name of the group.
+       * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+       * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+       * as this parameter is ultimated forwarded to libsnapshot's CowWriter
        * 
* - * required string name = 1; - * @return Whether the name field is set. + * optional string vabc_compression_param = 4; + * @return Whether the vabcCompressionParam field is set. */ - public boolean hasName() { - return ((bitField0_ & 0x00000001) != 0); + public boolean hasVabcCompressionParam() { + return ((bitField0_ & 0x00000008) != 0); } /** *
-       * Name of the group.
+       * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+       * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+       * as this parameter is ultimated forwarded to libsnapshot's CowWriter
        * 
* - * required string name = 1; - * @return The name. + * optional string vabc_compression_param = 4; + * @return The vabcCompressionParam. */ - public java.lang.String getName() { - java.lang.Object ref = name_; + public java.lang.String getVabcCompressionParam() { + java.lang.Object ref = vabcCompressionParam_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { - name_ = s; + vabcCompressionParam_ = s; } return s; } else { @@ -12405,20 +15472,22 @@ public final class UpdateMetadata { } /** *
-       * Name of the group.
+       * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+       * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+       * as this parameter is ultimated forwarded to libsnapshot's CowWriter
        * 
* - * required string name = 1; - * @return The bytes for name. + * optional string vabc_compression_param = 4; + * @return The bytes for vabcCompressionParam. */ public com.google.protobuf.ByteString - getNameBytes() { - java.lang.Object ref = name_; + getVabcCompressionParamBytes() { + java.lang.Object ref = vabcCompressionParam_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); - name_ = b; + vabcCompressionParam_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; @@ -12426,259 +15495,272 @@ public final class UpdateMetadata { } /** *
-       * Name of the group.
+       * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+       * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+       * as this parameter is ultimated forwarded to libsnapshot's CowWriter
        * 
* - * required string name = 1; - * @param value The name to set. + * optional string vabc_compression_param = 4; + * @param value The vabcCompressionParam to set. * @return This builder for chaining. */ - public Builder setName( + public Builder setVabcCompressionParam( java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - name_ = value; + if (value == null) { throw new NullPointerException(); } + vabcCompressionParam_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } /** *
-       * Name of the group.
+       * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+       * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+       * as this parameter is ultimated forwarded to libsnapshot's CowWriter
        * 
* - * required string name = 1; + * optional string vabc_compression_param = 4; * @return This builder for chaining. */ - public Builder clearName() { - bitField0_ = (bitField0_ & ~0x00000001); - name_ = getDefaultInstance().getName(); + public Builder clearVabcCompressionParam() { + vabcCompressionParam_ = getDefaultInstance().getVabcCompressionParam(); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); return this; } /** *
-       * Name of the group.
+       * The compression algorithm used by VABC. Available ones are "gz", "brotli".
+       * See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
+       * as this parameter is ultimated forwarded to libsnapshot's CowWriter
        * 
* - * required string name = 1; - * @param value The bytes for name to set. + * optional string vabc_compression_param = 4; + * @param value The bytes for vabcCompressionParam to set. * @return This builder for chaining. */ - public Builder setNameBytes( + public Builder setVabcCompressionParamBytes( com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - name_ = value; + if (value == null) { throw new NullPointerException(); } + vabcCompressionParam_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } - private long size_ ; + private int cowVersion_ ; /** *
-       * Maximum size of the group. The sum of sizes of all partitions in the group
-       * must not exceed the maximum size of the group.
+       * COW version used by VABC. The represents the major version in the COW
+       * header
        * 
* - * optional uint64 size = 2; - * @return Whether the size field is set. + * optional uint32 cow_version = 5; + * @return Whether the cowVersion field is set. */ @java.lang.Override - public boolean hasSize() { - return ((bitField0_ & 0x00000002) != 0); + public boolean hasCowVersion() { + return ((bitField0_ & 0x00000010) != 0); } /** *
-       * Maximum size of the group. The sum of sizes of all partitions in the group
-       * must not exceed the maximum size of the group.
+       * COW version used by VABC. The represents the major version in the COW
+       * header
        * 
* - * optional uint64 size = 2; - * @return The size. + * optional uint32 cow_version = 5; + * @return The cowVersion. */ @java.lang.Override - public long getSize() { - return size_; + public int getCowVersion() { + return cowVersion_; } /** *
-       * Maximum size of the group. The sum of sizes of all partitions in the group
-       * must not exceed the maximum size of the group.
+       * COW version used by VABC. The represents the major version in the COW
+       * header
        * 
* - * optional uint64 size = 2; - * @param value The size to set. + * optional uint32 cow_version = 5; + * @param value The cowVersion to set. * @return This builder for chaining. */ - public Builder setSize(long value) { - bitField0_ |= 0x00000002; - size_ = value; + public Builder setCowVersion(int value) { + + cowVersion_ = value; + bitField0_ |= 0x00000010; onChanged(); return this; } /** *
-       * Maximum size of the group. The sum of sizes of all partitions in the group
-       * must not exceed the maximum size of the group.
+       * COW version used by VABC. The represents the major version in the COW
+       * header
        * 
* - * optional uint64 size = 2; + * optional uint32 cow_version = 5; * @return This builder for chaining. */ - public Builder clearSize() { - bitField0_ = (bitField0_ & ~0x00000002); - size_ = 0L; + public Builder clearCowVersion() { + bitField0_ = (bitField0_ & ~0x00000010); + cowVersion_ = 0; onChanged(); return this; } - private com.google.protobuf.LazyStringList partitionNames_ = com.google.protobuf.LazyStringArrayList.EMPTY; - private void ensurePartitionNamesIsMutable() { - if (!((bitField0_ & 0x00000004) != 0)) { - partitionNames_ = new com.google.protobuf.LazyStringArrayList(partitionNames_); - bitField0_ |= 0x00000004; - } - } + private chromeos_update_engine.UpdateMetadata.VABCFeatureSet vabcFeatureSet_; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.VABCFeatureSet, chromeos_update_engine.UpdateMetadata.VABCFeatureSet.Builder, chromeos_update_engine.UpdateMetadata.VABCFeatureSetOrBuilder> vabcFeatureSetBuilder_; /** *
-       * A list of partitions that belong to the group.
+       * A collection of knobs to tune Virtual AB Compression
        * 
* - * repeated string partition_names = 3; - * @return A list containing the partitionNames. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; + * @return Whether the vabcFeatureSet field is set. */ - public com.google.protobuf.ProtocolStringList - getPartitionNamesList() { - return partitionNames_.getUnmodifiableView(); + public boolean hasVabcFeatureSet() { + return ((bitField0_ & 0x00000020) != 0); } /** *
-       * A list of partitions that belong to the group.
+       * A collection of knobs to tune Virtual AB Compression
        * 
* - * repeated string partition_names = 3; - * @return The count of partitionNames. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; + * @return The vabcFeatureSet. */ - public int getPartitionNamesCount() { - return partitionNames_.size(); + public chromeos_update_engine.UpdateMetadata.VABCFeatureSet getVabcFeatureSet() { + if (vabcFeatureSetBuilder_ == null) { + return vabcFeatureSet_ == null ? chromeos_update_engine.UpdateMetadata.VABCFeatureSet.getDefaultInstance() : vabcFeatureSet_; + } else { + return vabcFeatureSetBuilder_.getMessage(); + } } /** *
-       * A list of partitions that belong to the group.
+       * A collection of knobs to tune Virtual AB Compression
        * 
* - * repeated string partition_names = 3; - * @param index The index of the element to return. - * @return The partitionNames at the given index. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; */ - public java.lang.String getPartitionNames(int index) { - return partitionNames_.get(index); + public Builder setVabcFeatureSet(chromeos_update_engine.UpdateMetadata.VABCFeatureSet value) { + if (vabcFeatureSetBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + vabcFeatureSet_ = value; + } else { + vabcFeatureSetBuilder_.setMessage(value); + } + bitField0_ |= 0x00000020; + onChanged(); + return this; } /** *
-       * A list of partitions that belong to the group.
+       * A collection of knobs to tune Virtual AB Compression
        * 
* - * repeated string partition_names = 3; - * @param index The index of the value to return. - * @return The bytes of the partitionNames at the given index. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; */ - public com.google.protobuf.ByteString - getPartitionNamesBytes(int index) { - return partitionNames_.getByteString(index); + public Builder setVabcFeatureSet( + chromeos_update_engine.UpdateMetadata.VABCFeatureSet.Builder builderForValue) { + if (vabcFeatureSetBuilder_ == null) { + vabcFeatureSet_ = builderForValue.build(); + } else { + vabcFeatureSetBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000020; + onChanged(); + return this; } /** *
-       * A list of partitions that belong to the group.
+       * A collection of knobs to tune Virtual AB Compression
        * 
* - * repeated string partition_names = 3; - * @param index The index to set the value at. - * @param value The partitionNames to set. - * @return This builder for chaining. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; */ - public Builder setPartitionNames( - int index, java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - ensurePartitionNamesIsMutable(); - partitionNames_.set(index, value); + public Builder mergeVabcFeatureSet(chromeos_update_engine.UpdateMetadata.VABCFeatureSet value) { + if (vabcFeatureSetBuilder_ == null) { + if (((bitField0_ & 0x00000020) != 0) && + vabcFeatureSet_ != null && + vabcFeatureSet_ != chromeos_update_engine.UpdateMetadata.VABCFeatureSet.getDefaultInstance()) { + getVabcFeatureSetBuilder().mergeFrom(value); + } else { + vabcFeatureSet_ = value; + } + } else { + vabcFeatureSetBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000020; onChanged(); return this; } /** *
-       * A list of partitions that belong to the group.
+       * A collection of knobs to tune Virtual AB Compression
        * 
* - * repeated string partition_names = 3; - * @param value The partitionNames to add. - * @return This builder for chaining. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; */ - public Builder addPartitionNames( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - ensurePartitionNamesIsMutable(); - partitionNames_.add(value); + public Builder clearVabcFeatureSet() { + bitField0_ = (bitField0_ & ~0x00000020); + vabcFeatureSet_ = null; + if (vabcFeatureSetBuilder_ != null) { + vabcFeatureSetBuilder_.dispose(); + vabcFeatureSetBuilder_ = null; + } onChanged(); return this; } /** *
-       * A list of partitions that belong to the group.
+       * A collection of knobs to tune Virtual AB Compression
        * 
* - * repeated string partition_names = 3; - * @param values The partitionNames to add. - * @return This builder for chaining. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; */ - public Builder addAllPartitionNames( - java.lang.Iterable values) { - ensurePartitionNamesIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, partitionNames_); + public chromeos_update_engine.UpdateMetadata.VABCFeatureSet.Builder getVabcFeatureSetBuilder() { + bitField0_ |= 0x00000020; onChanged(); - return this; + return getVabcFeatureSetFieldBuilder().getBuilder(); } /** *
-       * A list of partitions that belong to the group.
+       * A collection of knobs to tune Virtual AB Compression
        * 
* - * repeated string partition_names = 3; - * @return This builder for chaining. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; */ - public Builder clearPartitionNames() { - partitionNames_ = com.google.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000004); - onChanged(); - return this; + public chromeos_update_engine.UpdateMetadata.VABCFeatureSetOrBuilder getVabcFeatureSetOrBuilder() { + if (vabcFeatureSetBuilder_ != null) { + return vabcFeatureSetBuilder_.getMessageOrBuilder(); + } else { + return vabcFeatureSet_ == null ? + chromeos_update_engine.UpdateMetadata.VABCFeatureSet.getDefaultInstance() : vabcFeatureSet_; + } } /** *
-       * A list of partitions that belong to the group.
+       * A collection of knobs to tune Virtual AB Compression
        * 
* - * repeated string partition_names = 3; - * @param value The bytes of the partitionNames to add. - * @return This builder for chaining. + * optional .chromeos_update_engine.VABCFeatureSet vabc_feature_set = 6; */ - public Builder addPartitionNamesBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - ensurePartitionNamesIsMutable(); - partitionNames_.add(value); - onChanged(); - return this; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.VABCFeatureSet, chromeos_update_engine.UpdateMetadata.VABCFeatureSet.Builder, chromeos_update_engine.UpdateMetadata.VABCFeatureSetOrBuilder> + getVabcFeatureSetFieldBuilder() { + if (vabcFeatureSetBuilder_ == null) { + vabcFeatureSetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.VABCFeatureSet, chromeos_update_engine.UpdateMetadata.VABCFeatureSet.Builder, chromeos_update_engine.UpdateMetadata.VABCFeatureSetOrBuilder>( + getVabcFeatureSet(), + getParentForChildren(), + isClean()); + vabcFeatureSet_ = null; + } + return vabcFeatureSetBuilder_; } @java.lang.Override public final Builder setUnknownFields( @@ -12693,169 +15775,137 @@ public final class UpdateMetadata { } - // @@protoc_insertion_point(builder_scope:chromeos_update_engine.DynamicPartitionGroup) + // @@protoc_insertion_point(builder_scope:chromeos_update_engine.DynamicPartitionMetadata) } - // @@protoc_insertion_point(class_scope:chromeos_update_engine.DynamicPartitionGroup) - private static final chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:chromeos_update_engine.DynamicPartitionMetadata) + private static final chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup(); + DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata(); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getDefaultInstance() { + public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDefaultInstance() { return DEFAULT_INSTANCE; } - @java.lang.Deprecated public static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public DynamicPartitionGroup parsePartialFrom( + public DynamicPartitionMetadata parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new DynamicPartitionGroup(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getDefaultInstanceForType() { + public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface DynamicPartitionMetadataOrBuilder extends - // @@protoc_insertion_point(interface_extends:chromeos_update_engine.DynamicPartitionMetadata) + public interface ApexInfoOrBuilder extends + // @@protoc_insertion_point(interface_extends:chromeos_update_engine.ApexInfo) com.google.protobuf.MessageOrBuilder { /** - *
-     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-     * - If an updatable group is on the device but not in the manifest, it is
-     *   not updated. Hence, the group will not be resized, and partitions cannot
-     *   be added to or removed from the group.
-     * - If an updatable group is in the manifest but not on the device, the group
-     *   is added to the device.
-     * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @return Whether the packageName field is set. */ - java.util.List - getGroupsList(); + boolean hasPackageName(); /** - *
-     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-     * - If an updatable group is on the device but not in the manifest, it is
-     *   not updated. Hence, the group will not be resized, and partitions cannot
-     *   be added to or removed from the group.
-     * - If an updatable group is in the manifest but not on the device, the group
-     *   is added to the device.
-     * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @return The packageName. */ - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getGroups(int index); + java.lang.String getPackageName(); /** - *
-     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-     * - If an updatable group is on the device but not in the manifest, it is
-     *   not updated. Hence, the group will not be resized, and partitions cannot
-     *   be added to or removed from the group.
-     * - If an updatable group is in the manifest but not on the device, the group
-     *   is added to the device.
-     * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @return The bytes for packageName. */ - int getGroupsCount(); + com.google.protobuf.ByteString + getPackageNameBytes(); + /** - *
-     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-     * - If an updatable group is on the device but not in the manifest, it is
-     *   not updated. Hence, the group will not be resized, and partitions cannot
-     *   be added to or removed from the group.
-     * - If an updatable group is in the manifest but not on the device, the group
-     *   is added to the device.
-     * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional int64 version = 2; + * @return Whether the version field is set. */ - java.util.List - getGroupsOrBuilderList(); + boolean hasVersion(); /** - *
-     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-     * - If an updatable group is on the device but not in the manifest, it is
-     *   not updated. Hence, the group will not be resized, and partitions cannot
-     *   be added to or removed from the group.
-     * - If an updatable group is in the manifest but not on the device, the group
-     *   is added to the device.
-     * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional int64 version = 2; + * @return The version. */ - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder getGroupsOrBuilder( - int index); + long getVersion(); /** - *
-     * Whether dynamic partitions have snapshots during the update. If this is
-     * set to true, the update_engine daemon creates snapshots for all dynamic
-     * partitions if possible. If this is unset, the update_engine daemon MUST
-     * NOT create snapshots for dynamic partitions.
-     * 
- * - * optional bool snapshot_enabled = 2; - * @return Whether the snapshotEnabled field is set. + * optional bool is_compressed = 3; + * @return Whether the isCompressed field is set. */ - boolean hasSnapshotEnabled(); + boolean hasIsCompressed(); /** - *
-     * Whether dynamic partitions have snapshots during the update. If this is
-     * set to true, the update_engine daemon creates snapshots for all dynamic
-     * partitions if possible. If this is unset, the update_engine daemon MUST
-     * NOT create snapshots for dynamic partitions.
-     * 
- * - * optional bool snapshot_enabled = 2; - * @return The snapshotEnabled. + * optional bool is_compressed = 3; + * @return The isCompressed. */ - boolean getSnapshotEnabled(); + boolean getIsCompressed(); + + /** + * optional int64 decompressed_size = 4; + * @return Whether the decompressedSize field is set. + */ + boolean hasDecompressedSize(); + /** + * optional int64 decompressed_size = 4; + * @return The decompressedSize. + */ + long getDecompressedSize(); } /** *
-   * Metadata related to all dynamic partitions.
+   * Definition has been duplicated from
+   * $ANDROID_BUILD_TOP/build/tools/releasetools/ota_metadata.proto. Keep in sync.
    * 
* - * Protobuf type {@code chromeos_update_engine.DynamicPartitionMetadata} + * Protobuf type {@code chromeos_update_engine.ApexInfo} */ - public static final class DynamicPartitionMetadata extends + public static final class ApexInfo extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:chromeos_update_engine.DynamicPartitionMetadata) - DynamicPartitionMetadataOrBuilder { + // @@protoc_insertion_point(message_implements:chromeos_update_engine.ApexInfo) + ApexInfoOrBuilder { private static final long serialVersionUID = 0L; - // Use DynamicPartitionMetadata.newBuilder() to construct. - private DynamicPartitionMetadata(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use ApexInfo.newBuilder() to construct. + private ApexInfo(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private DynamicPartitionMetadata() { - groups_ = java.util.Collections.emptyList(); + private ApexInfo() { + packageName_ = ""; } @java.lang.Override @SuppressWarnings({"unused"}) protected java.lang.Object newInstance( UnusedPrivateParameter unused) { - return new DynamicPartitionMetadata(); + return new ApexInfo(); } @java.lang.Override @@ -12863,191 +15913,124 @@ public final class UpdateMetadata { getUnknownFields() { return this.unknownFields; } - private DynamicPartitionMetadata( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 10: { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - groups_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - groups_.add( - input.readMessage(chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.PARSER, extensionRegistry)); - break; - } - case 16: { - bitField0_ |= 0x00000001; - snapshotEnabled_ = input.readBool(); - break; - } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - groups_ = java.util.Collections.unmodifiableList(groups_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionMetadata_descriptor; + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ApexInfo_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionMetadata_fieldAccessorTable + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ApexInfo_fieldAccessorTable .ensureFieldAccessorsInitialized( - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.class, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder.class); + chromeos_update_engine.UpdateMetadata.ApexInfo.class, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder.class); } private int bitField0_; - public static final int GROUPS_FIELD_NUMBER = 1; - private java.util.List groups_; + public static final int PACKAGE_NAME_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object packageName_ = ""; /** - *
-     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-     * - If an updatable group is on the device but not in the manifest, it is
-     *   not updated. Hence, the group will not be resized, and partitions cannot
-     *   be added to or removed from the group.
-     * - If an updatable group is in the manifest but not on the device, the group
-     *   is added to the device.
-     * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @return Whether the packageName field is set. */ @java.lang.Override - public java.util.List getGroupsList() { - return groups_; + public boolean hasPackageName() { + return ((bitField0_ & 0x00000001) != 0); } /** - *
-     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-     * - If an updatable group is on the device but not in the manifest, it is
-     *   not updated. Hence, the group will not be resized, and partitions cannot
-     *   be added to or removed from the group.
-     * - If an updatable group is in the manifest but not on the device, the group
-     *   is added to the device.
-     * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @return The packageName. */ @java.lang.Override - public java.util.List - getGroupsOrBuilderList() { - return groups_; + public java.lang.String getPackageName() { + java.lang.Object ref = packageName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + packageName_ = s; + } + return s; + } } /** - *
-     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-     * - If an updatable group is on the device but not in the manifest, it is
-     *   not updated. Hence, the group will not be resized, and partitions cannot
-     *   be added to or removed from the group.
-     * - If an updatable group is in the manifest but not on the device, the group
-     *   is added to the device.
-     * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @return The bytes for packageName. */ @java.lang.Override - public int getGroupsCount() { - return groups_.size(); + public com.google.protobuf.ByteString + getPackageNameBytes() { + java.lang.Object ref = packageName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + packageName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int VERSION_FIELD_NUMBER = 2; + private long version_ = 0L; + /** + * optional int64 version = 2; + * @return Whether the version field is set. + */ + @java.lang.Override + public boolean hasVersion() { + return ((bitField0_ & 0x00000002) != 0); } /** - *
-     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-     * - If an updatable group is on the device but not in the manifest, it is
-     *   not updated. Hence, the group will not be resized, and partitions cannot
-     *   be added to or removed from the group.
-     * - If an updatable group is in the manifest but not on the device, the group
-     *   is added to the device.
-     * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional int64 version = 2; + * @return The version. */ @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getGroups(int index) { - return groups_.get(index); + public long getVersion() { + return version_; } + + public static final int IS_COMPRESSED_FIELD_NUMBER = 3; + private boolean isCompressed_ = false; /** - *
-     * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-     * - If an updatable group is on the device but not in the manifest, it is
-     *   not updated. Hence, the group will not be resized, and partitions cannot
-     *   be added to or removed from the group.
-     * - If an updatable group is in the manifest but not on the device, the group
-     *   is added to the device.
-     * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional bool is_compressed = 3; + * @return Whether the isCompressed field is set. + */ + @java.lang.Override + public boolean hasIsCompressed() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * optional bool is_compressed = 3; + * @return The isCompressed. */ @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder getGroupsOrBuilder( - int index) { - return groups_.get(index); + public boolean getIsCompressed() { + return isCompressed_; } - public static final int SNAPSHOT_ENABLED_FIELD_NUMBER = 2; - private boolean snapshotEnabled_; + public static final int DECOMPRESSED_SIZE_FIELD_NUMBER = 4; + private long decompressedSize_ = 0L; /** - *
-     * Whether dynamic partitions have snapshots during the update. If this is
-     * set to true, the update_engine daemon creates snapshots for all dynamic
-     * partitions if possible. If this is unset, the update_engine daemon MUST
-     * NOT create snapshots for dynamic partitions.
-     * 
- * - * optional bool snapshot_enabled = 2; - * @return Whether the snapshotEnabled field is set. + * optional int64 decompressed_size = 4; + * @return Whether the decompressedSize field is set. */ @java.lang.Override - public boolean hasSnapshotEnabled() { - return ((bitField0_ & 0x00000001) != 0); + public boolean hasDecompressedSize() { + return ((bitField0_ & 0x00000008) != 0); } /** - *
-     * Whether dynamic partitions have snapshots during the update. If this is
-     * set to true, the update_engine daemon creates snapshots for all dynamic
-     * partitions if possible. If this is unset, the update_engine daemon MUST
-     * NOT create snapshots for dynamic partitions.
-     * 
- * - * optional bool snapshot_enabled = 2; - * @return The snapshotEnabled. + * optional int64 decompressed_size = 4; + * @return The decompressedSize. */ @java.lang.Override - public boolean getSnapshotEnabled() { - return snapshotEnabled_; + public long getDecompressedSize() { + return decompressedSize_; } private byte memoizedIsInitialized = -1; @@ -13057,12 +16040,6 @@ public final class UpdateMetadata { if (isInitialized == 1) return true; if (isInitialized == 0) return false; - for (int i = 0; i < getGroupsCount(); i++) { - if (!getGroups(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } memoizedIsInitialized = 1; return true; } @@ -13070,13 +16047,19 @@ public final class UpdateMetadata { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - for (int i = 0; i < groups_.size(); i++) { - output.writeMessage(1, groups_.get(i)); - } if (((bitField0_ & 0x00000001) != 0)) { - output.writeBool(2, snapshotEnabled_); + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, packageName_); + } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeInt64(2, version_); + } + if (((bitField0_ & 0x00000004) != 0)) { + output.writeBool(3, isCompressed_); + } + if (((bitField0_ & 0x00000008) != 0)) { + output.writeInt64(4, decompressedSize_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -13085,15 +16068,22 @@ public final class UpdateMetadata { if (size != -1) return size; size = 0; - for (int i = 0; i < groups_.size(); i++) { + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, packageName_); + } + if (((bitField0_ & 0x00000002) != 0)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, groups_.get(i)); + .computeInt64Size(2, version_); } - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000004) != 0)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(2, snapshotEnabled_); + .computeBoolSize(3, isCompressed_); + } + if (((bitField0_ & 0x00000008) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(4, decompressedSize_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -13103,19 +16093,32 @@ public final class UpdateMetadata { if (obj == this) { return true; } - if (!(obj instanceof chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata)) { + if (!(obj instanceof chromeos_update_engine.UpdateMetadata.ApexInfo)) { return super.equals(obj); } - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata other = (chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata) obj; + chromeos_update_engine.UpdateMetadata.ApexInfo other = (chromeos_update_engine.UpdateMetadata.ApexInfo) obj; - if (!getGroupsList() - .equals(other.getGroupsList())) return false; - if (hasSnapshotEnabled() != other.hasSnapshotEnabled()) return false; - if (hasSnapshotEnabled()) { - if (getSnapshotEnabled() - != other.getSnapshotEnabled()) return false; + if (hasPackageName() != other.hasPackageName()) return false; + if (hasPackageName()) { + if (!getPackageName() + .equals(other.getPackageName())) return false; + } + if (hasVersion() != other.hasVersion()) return false; + if (hasVersion()) { + if (getVersion() + != other.getVersion()) return false; + } + if (hasIsCompressed() != other.hasIsCompressed()) return false; + if (hasIsCompressed()) { + if (getIsCompressed() + != other.getIsCompressed()) return false; } - if (!unknownFields.equals(other.unknownFields)) return false; + if (hasDecompressedSize() != other.hasDecompressedSize()) return false; + if (hasDecompressedSize()) { + if (getDecompressedSize() + != other.getDecompressedSize()) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -13126,1601 +16129,1399 @@ public final class UpdateMetadata { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (getGroupsCount() > 0) { - hash = (37 * hash) + GROUPS_FIELD_NUMBER; - hash = (53 * hash) + getGroupsList().hashCode(); + if (hasPackageName()) { + hash = (37 * hash) + PACKAGE_NAME_FIELD_NUMBER; + hash = (53 * hash) + getPackageName().hashCode(); } - if (hasSnapshotEnabled()) { - hash = (37 * hash) + SNAPSHOT_ENABLED_FIELD_NUMBER; + if (hasVersion()) { + hash = (37 * hash) + VERSION_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getVersion()); + } + if (hasIsCompressed()) { + hash = (37 * hash) + IS_COMPRESSED_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getSnapshotEnabled()); + getIsCompressed()); + } + if (hasDecompressedSize()) { + hash = (37 * hash) + DECOMPRESSED_SIZE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getDecompressedSize()); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom(byte[] data) + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom(java.io.InputStream input) + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseDelimitedFrom(java.io.InputStream input) + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseDelimitedFrom( + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parseFrom( + public static chromeos_update_engine.UpdateMetadata.ApexInfo parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - @java.lang.Override - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - @java.lang.Override - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - *
-     * Metadata related to all dynamic partitions.
-     * 
- * - * Protobuf type {@code chromeos_update_engine.DynamicPartitionMetadata} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:chromeos_update_engine.DynamicPartitionMetadata) - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionMetadata_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionMetadata_fieldAccessorTable - .ensureFieldAccessorsInitialized( - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.class, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder.class); - } - - // Construct using chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - getGroupsFieldBuilder(); - } - } - @java.lang.Override - public Builder clear() { - super.clear(); - if (groupsBuilder_ == null) { - groups_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); - } else { - groupsBuilder_.clear(); - } - snapshotEnabled_ = false; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - @java.lang.Override - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DynamicPartitionMetadata_descriptor; - } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDefaultInstanceForType() { - return chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance(); - } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata build() { - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata buildPartial() { - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata result = new chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (groupsBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { - groups_ = java.util.Collections.unmodifiableList(groups_); - bitField0_ = (bitField0_ & ~0x00000001); - } - result.groups_ = groups_; - } else { - result.groups_ = groupsBuilder_.build(); - } - if (((from_bitField0_ & 0x00000002) != 0)) { - result.snapshotEnabled_ = snapshotEnabled_; - to_bitField0_ |= 0x00000001; - } - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - @java.lang.Override - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.setField(field, value); - } - @java.lang.Override - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - @java.lang.Override - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - @java.lang.Override - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - @java.lang.Override - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.addRepeatedField(field, value); - } - @java.lang.Override - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata) { - return mergeFrom((chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata)other); - } else { - super.mergeFrom(other); - return this; - } - } + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } - public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata other) { - if (other == chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance()) return this; - if (groupsBuilder_ == null) { - if (!other.groups_.isEmpty()) { - if (groups_.isEmpty()) { - groups_ = other.groups_; - bitField0_ = (bitField0_ & ~0x00000001); - } else { - ensureGroupsIsMutable(); - groups_.addAll(other.groups_); - } - onChanged(); - } - } else { - if (!other.groups_.isEmpty()) { - if (groupsBuilder_.isEmpty()) { - groupsBuilder_.dispose(); - groupsBuilder_ = null; - groups_ = other.groups_; - bitField0_ = (bitField0_ & ~0x00000001); - groupsBuilder_ = - com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getGroupsFieldBuilder() : null; - } else { - groupsBuilder_.addAllMessages(other.groups_); - } - } - } - if (other.hasSnapshotEnabled()) { - setSnapshotEnabled(other.getSnapshotEnabled()); - } - this.mergeUnknownFields(other.unknownFields); - onChanged(); - return this; - } + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.ApexInfo prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } - @java.lang.Override - public final boolean isInitialized() { - for (int i = 0; i < getGroupsCount(); i++) { - if (!getGroups(i).isInitialized()) { - return false; - } - } - return true; + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Definition has been duplicated from
+     * $ANDROID_BUILD_TOP/build/tools/releasetools/ota_metadata.proto. Keep in sync.
+     * 
+ * + * Protobuf type {@code chromeos_update_engine.ApexInfo} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:chromeos_update_engine.ApexInfo) + chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ApexInfo_descriptor; } @java.lang.Override - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; - - private java.util.List groups_ = - java.util.Collections.emptyList(); - private void ensureGroupsIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { - groups_ = new java.util.ArrayList(groups_); - bitField0_ |= 0x00000001; - } + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ApexInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.ApexInfo.class, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder.class); } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder> groupsBuilder_; + // Construct using chromeos_update_engine.UpdateMetadata.ApexInfo.newBuilder() + private Builder() { - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public java.util.List getGroupsList() { - if (groupsBuilder_ == null) { - return java.util.Collections.unmodifiableList(groups_); - } else { - return groupsBuilder_.getMessageList(); - } - } - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public int getGroupsCount() { - if (groupsBuilder_ == null) { - return groups_.size(); - } else { - return groupsBuilder_.getCount(); - } - } - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup getGroups(int index) { - if (groupsBuilder_ == null) { - return groups_.get(index); - } else { - return groupsBuilder_.getMessage(index); - } - } - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public Builder setGroups( - int index, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup value) { - if (groupsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureGroupsIsMutable(); - groups_.set(index, value); - onChanged(); - } else { - groupsBuilder_.setMessage(index, value); - } - return this; - } - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public Builder setGroups( - int index, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder builderForValue) { - if (groupsBuilder_ == null) { - ensureGroupsIsMutable(); - groups_.set(index, builderForValue.build()); - onChanged(); - } else { - groupsBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public Builder addGroups(chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup value) { - if (groupsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureGroupsIsMutable(); - groups_.add(value); - onChanged(); - } else { - groupsBuilder_.addMessage(value); - } - return this; } - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public Builder addGroups( - int index, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup value) { - if (groupsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureGroupsIsMutable(); - groups_.add(index, value); - onChanged(); - } else { - groupsBuilder_.addMessage(index, value); - } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + packageName_ = ""; + version_ = 0L; + isCompressed_ = false; + decompressedSize_ = 0L; return this; } - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public Builder addGroups( - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder builderForValue) { - if (groupsBuilder_ == null) { - ensureGroupsIsMutable(); - groups_.add(builderForValue.build()); - onChanged(); - } else { - groupsBuilder_.addMessage(builderForValue.build()); + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ApexInfo_descriptor; + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ApexInfo getDefaultInstanceForType() { + return chromeos_update_engine.UpdateMetadata.ApexInfo.getDefaultInstance(); + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ApexInfo build() { + chromeos_update_engine.UpdateMetadata.ApexInfo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); } - return this; + return result; } - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public Builder addGroups( - int index, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder builderForValue) { - if (groupsBuilder_ == null) { - ensureGroupsIsMutable(); - groups_.add(index, builderForValue.build()); - onChanged(); - } else { - groupsBuilder_.addMessage(index, builderForValue.build()); + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ApexInfo buildPartial() { + chromeos_update_engine.UpdateMetadata.ApexInfo result = new chromeos_update_engine.UpdateMetadata.ApexInfo(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(chromeos_update_engine.UpdateMetadata.ApexInfo result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.packageName_ = packageName_; + to_bitField0_ |= 0x00000001; } - return this; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.version_ = version_; + to_bitField0_ |= 0x00000002; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.isCompressed_ = isCompressed_; + to_bitField0_ |= 0x00000004; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.decompressedSize_ = decompressedSize_; + to_bitField0_ |= 0x00000008; + } + result.bitField0_ |= to_bitField0_; } - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public Builder addAllGroups( - java.lang.Iterable values) { - if (groupsBuilder_ == null) { - ensureGroupsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, groups_); - onChanged(); + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof chromeos_update_engine.UpdateMetadata.ApexInfo) { + return mergeFrom((chromeos_update_engine.UpdateMetadata.ApexInfo)other); } else { - groupsBuilder_.addAllMessages(values); + super.mergeFrom(other); + return this; } - return this; } - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public Builder clearGroups() { - if (groupsBuilder_ == null) { - groups_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + + public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.ApexInfo other) { + if (other == chromeos_update_engine.UpdateMetadata.ApexInfo.getDefaultInstance()) return this; + if (other.hasPackageName()) { + packageName_ = other.packageName_; + bitField0_ |= 0x00000001; onChanged(); - } else { - groupsBuilder_.clear(); } + if (other.hasVersion()) { + setVersion(other.getVersion()); + } + if (other.hasIsCompressed()) { + setIsCompressed(other.getIsCompressed()); + } + if (other.hasDecompressedSize()) { + setDecompressedSize(other.getDecompressedSize()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); return this; } - /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; - */ - public Builder removeGroups(int index) { - if (groupsBuilder_ == null) { - ensureGroupsIsMutable(); - groups_.remove(index); - onChanged(); - } else { - groupsBuilder_.remove(index); + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + packageName_ = input.readBytes(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 16: { + version_ = input.readInt64(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 24: { + isCompressed_ = input.readBool(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 32: { + decompressedSize_ = input.readInt64(); + bitField0_ |= 0x00000008; + break; + } // case 32 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally return this; } + private int bitField0_; + + private java.lang.Object packageName_ = ""; /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @return Whether the packageName field is set. */ - public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder getGroupsBuilder( - int index) { - return getGroupsFieldBuilder().getBuilder(index); + public boolean hasPackageName() { + return ((bitField0_ & 0x00000001) != 0); } /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @return The packageName. */ - public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder getGroupsOrBuilder( - int index) { - if (groupsBuilder_ == null) { - return groups_.get(index); } else { - return groupsBuilder_.getMessageOrBuilder(index); + public java.lang.String getPackageName() { + java.lang.Object ref = packageName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + packageName_ = s; + } + return s; + } else { + return (java.lang.String) ref; } } /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @return The bytes for packageName. */ - public java.util.List - getGroupsOrBuilderList() { - if (groupsBuilder_ != null) { - return groupsBuilder_.getMessageOrBuilderList(); + public com.google.protobuf.ByteString + getPackageNameBytes() { + java.lang.Object ref = packageName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + packageName_ = b; + return b; } else { - return java.util.Collections.unmodifiableList(groups_); + return (com.google.protobuf.ByteString) ref; } } /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @param value The packageName to set. + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder addGroupsBuilder() { - return getGroupsFieldBuilder().addBuilder( - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.getDefaultInstance()); + public Builder setPackageName( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + packageName_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; } /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder addGroupsBuilder( - int index) { - return getGroupsFieldBuilder().addBuilder( - index, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.getDefaultInstance()); + public Builder clearPackageName() { + packageName_ = getDefaultInstance().getPackageName(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; } /** - *
-       * All updatable groups present in |partitions| of this DeltaArchiveManifest.
-       * - If an updatable group is on the device but not in the manifest, it is
-       *   not updated. Hence, the group will not be resized, and partitions cannot
-       *   be added to or removed from the group.
-       * - If an updatable group is in the manifest but not on the device, the group
-       *   is added to the device.
-       * 
- * - * repeated .chromeos_update_engine.DynamicPartitionGroup groups = 1; + * optional string package_name = 1; + * @param value The bytes for packageName to set. + * @return This builder for chaining. */ - public java.util.List - getGroupsBuilderList() { - return getGroupsFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder> - getGroupsFieldBuilder() { - if (groupsBuilder_ == null) { - groupsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroup.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionGroupOrBuilder>( - groups_, - ((bitField0_ & 0x00000001) != 0), - getParentForChildren(), - isClean()); - groups_ = null; - } - return groupsBuilder_; + public Builder setPackageNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + packageName_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; } - private boolean snapshotEnabled_ ; + private long version_ ; /** - *
-       * Whether dynamic partitions have snapshots during the update. If this is
-       * set to true, the update_engine daemon creates snapshots for all dynamic
-       * partitions if possible. If this is unset, the update_engine daemon MUST
-       * NOT create snapshots for dynamic partitions.
-       * 
- * - * optional bool snapshot_enabled = 2; - * @return Whether the snapshotEnabled field is set. + * optional int64 version = 2; + * @return Whether the version field is set. */ @java.lang.Override - public boolean hasSnapshotEnabled() { + public boolean hasVersion() { return ((bitField0_ & 0x00000002) != 0); } /** - *
-       * Whether dynamic partitions have snapshots during the update. If this is
-       * set to true, the update_engine daemon creates snapshots for all dynamic
-       * partitions if possible. If this is unset, the update_engine daemon MUST
-       * NOT create snapshots for dynamic partitions.
-       * 
- * - * optional bool snapshot_enabled = 2; - * @return The snapshotEnabled. + * optional int64 version = 2; + * @return The version. */ @java.lang.Override - public boolean getSnapshotEnabled() { - return snapshotEnabled_; + public long getVersion() { + return version_; } /** - *
-       * Whether dynamic partitions have snapshots during the update. If this is
-       * set to true, the update_engine daemon creates snapshots for all dynamic
-       * partitions if possible. If this is unset, the update_engine daemon MUST
-       * NOT create snapshots for dynamic partitions.
-       * 
- * - * optional bool snapshot_enabled = 2; - * @param value The snapshotEnabled to set. + * optional int64 version = 2; + * @param value The version to set. * @return This builder for chaining. */ - public Builder setSnapshotEnabled(boolean value) { + public Builder setVersion(long value) { + + version_ = value; bitField0_ |= 0x00000002; - snapshotEnabled_ = value; onChanged(); return this; } /** - *
-       * Whether dynamic partitions have snapshots during the update. If this is
-       * set to true, the update_engine daemon creates snapshots for all dynamic
-       * partitions if possible. If this is unset, the update_engine daemon MUST
-       * NOT create snapshots for dynamic partitions.
-       * 
- * - * optional bool snapshot_enabled = 2; + * optional int64 version = 2; * @return This builder for chaining. */ - public Builder clearSnapshotEnabled() { + public Builder clearVersion() { bitField0_ = (bitField0_ & ~0x00000002); - snapshotEnabled_ = false; + version_ = 0L; onChanged(); return this; } + + private boolean isCompressed_ ; + /** + * optional bool is_compressed = 3; + * @return Whether the isCompressed field is set. + */ @java.lang.Override - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFields(unknownFields); + public boolean hasIsCompressed() { + return ((bitField0_ & 0x00000004) != 0); } - + /** + * optional bool is_compressed = 3; + * @return The isCompressed. + */ @java.lang.Override - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.mergeUnknownFields(unknownFields); + public boolean getIsCompressed() { + return isCompressed_; + } + /** + * optional bool is_compressed = 3; + * @param value The isCompressed to set. + * @return This builder for chaining. + */ + public Builder setIsCompressed(boolean value) { + + isCompressed_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * optional bool is_compressed = 3; + * @return This builder for chaining. + */ + public Builder clearIsCompressed() { + bitField0_ = (bitField0_ & ~0x00000004); + isCompressed_ = false; + onChanged(); + return this; } - - // @@protoc_insertion_point(builder_scope:chromeos_update_engine.DynamicPartitionMetadata) - } - - // @@protoc_insertion_point(class_scope:chromeos_update_engine.DynamicPartitionMetadata) - private static final chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata(); - } - - public static chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - @java.lang.Deprecated public static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { + private long decompressedSize_ ; + /** + * optional int64 decompressed_size = 4; + * @return Whether the decompressedSize field is set. + */ @java.lang.Override - public DynamicPartitionMetadata parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new DynamicPartitionMetadata(input, extensionRegistry); + public boolean hasDecompressedSize() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + * optional int64 decompressed_size = 4; + * @return The decompressedSize. + */ + @java.lang.Override + public long getDecompressedSize() { + return decompressedSize_; + } + /** + * optional int64 decompressed_size = 4; + * @param value The decompressedSize to set. + * @return This builder for chaining. + */ + public Builder setDecompressedSize(long value) { + + decompressedSize_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * optional int64 decompressed_size = 4; + * @return This builder for chaining. + */ + public Builder clearDecompressedSize() { + bitField0_ = (bitField0_ & ~0x00000008); + decompressedSize_ = 0L; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @java.lang.Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface DeltaArchiveManifestOrBuilder extends - // @@protoc_insertion_point(interface_extends:chromeos_update_engine.DeltaArchiveManifest) - com.google.protobuf.MessageOrBuilder { - - /** - *
-     * Only present in major version = 1. List of install operations for the
-     * kernel and rootfs partitions. For major version = 2 see the |partitions|
-     * field.
-     * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - java.util.List - getInstallOperationsList(); - /** - *
-     * Only present in major version = 1. List of install operations for the
-     * kernel and rootfs partitions. For major version = 2 see the |partitions|
-     * field.
-     * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - chromeos_update_engine.UpdateMetadata.InstallOperation getInstallOperations(int index); - /** - *
-     * Only present in major version = 1. List of install operations for the
-     * kernel and rootfs partitions. For major version = 2 see the |partitions|
-     * field.
-     * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - int getInstallOperationsCount(); - /** - *
-     * Only present in major version = 1. List of install operations for the
-     * kernel and rootfs partitions. For major version = 2 see the |partitions|
-     * field.
-     * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - java.util.List - getInstallOperationsOrBuilderList(); - /** - *
-     * Only present in major version = 1. List of install operations for the
-     * kernel and rootfs partitions. For major version = 2 see the |partitions|
-     * field.
-     * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder getInstallOperationsOrBuilder( - int index); - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - java.util.List - getKernelInstallOperationsList(); - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - chromeos_update_engine.UpdateMetadata.InstallOperation getKernelInstallOperations(int index); - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - int getKernelInstallOperationsCount(); - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - java.util.List - getKernelInstallOperationsOrBuilderList(); - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder getKernelInstallOperationsOrBuilder( - int index); + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } - /** - *
-     * (At time of writing) usually 4096
-     * 
- * - * optional uint32 block_size = 3 [default = 4096]; - * @return Whether the blockSize field is set. - */ - boolean hasBlockSize(); - /** - *
-     * (At time of writing) usually 4096
-     * 
- * - * optional uint32 block_size = 3 [default = 4096]; - * @return The blockSize. - */ - int getBlockSize(); - /** - *
-     * If signatures are present, the offset into the blobs, generally
-     * tacked onto the end of the file, and the length. We use an offset
-     * rather than a bool to allow for more flexibility in future file formats.
-     * If either is absent, it means signatures aren't supported in this
-     * file.
-     * 
- * - * optional uint64 signatures_offset = 4; - * @return Whether the signaturesOffset field is set. - */ - boolean hasSignaturesOffset(); - /** - *
-     * If signatures are present, the offset into the blobs, generally
-     * tacked onto the end of the file, and the length. We use an offset
-     * rather than a bool to allow for more flexibility in future file formats.
-     * If either is absent, it means signatures aren't supported in this
-     * file.
-     * 
- * - * optional uint64 signatures_offset = 4; - * @return The signaturesOffset. - */ - long getSignaturesOffset(); + // @@protoc_insertion_point(builder_scope:chromeos_update_engine.ApexInfo) + } - /** - * optional uint64 signatures_size = 5; - * @return Whether the signaturesSize field is set. - */ - boolean hasSignaturesSize(); - /** - * optional uint64 signatures_size = 5; - * @return The signaturesSize. - */ - long getSignaturesSize(); + // @@protoc_insertion_point(class_scope:chromeos_update_engine.ApexInfo) + private static final chromeos_update_engine.UpdateMetadata.ApexInfo DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.ApexInfo(); + } - /** - *
-     * Only present in major version = 1. Partition metadata used to validate the
-     * update. For major version = 2 see the |partitions| field.
-     * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - * @return Whether the oldKernelInfo field is set. - */ - boolean hasOldKernelInfo(); - /** - *
-     * Only present in major version = 1. Partition metadata used to validate the
-     * update. For major version = 2 see the |partitions| field.
-     * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - * @return The oldKernelInfo. - */ - chromeos_update_engine.UpdateMetadata.PartitionInfo getOldKernelInfo(); - /** - *
-     * Only present in major version = 1. Partition metadata used to validate the
-     * update. For major version = 2 see the |partitions| field.
-     * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - */ - chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getOldKernelInfoOrBuilder(); + public static chromeos_update_engine.UpdateMetadata.ApexInfo getDefaultInstance() { + return DEFAULT_INSTANCE; + } - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - * @return Whether the newKernelInfo field is set. - */ - boolean hasNewKernelInfo(); - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - * @return The newKernelInfo. - */ - chromeos_update_engine.UpdateMetadata.PartitionInfo getNewKernelInfo(); - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - */ - chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getNewKernelInfoOrBuilder(); + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ApexInfo parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - * @return Whether the oldRootfsInfo field is set. - */ - boolean hasOldRootfsInfo(); - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - * @return The oldRootfsInfo. - */ - chromeos_update_engine.UpdateMetadata.PartitionInfo getOldRootfsInfo(); - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - */ - chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getOldRootfsInfoOrBuilder(); + public static com.google.protobuf.Parser parser() { + return PARSER; + } - /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; - * @return Whether the newRootfsInfo field is set. - */ - boolean hasNewRootfsInfo(); - /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; - * @return The newRootfsInfo. - */ - chromeos_update_engine.UpdateMetadata.PartitionInfo getNewRootfsInfo(); - /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; - */ - chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getNewRootfsInfoOrBuilder(); + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } - /** - *
-     * old_image_info will only be present for delta images.
-     * 
- * - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; - * @return Whether the oldImageInfo field is set. - */ - boolean hasOldImageInfo(); - /** - *
-     * old_image_info will only be present for delta images.
-     * 
- * - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; - * @return The oldImageInfo. - */ - chromeos_update_engine.UpdateMetadata.ImageInfo getOldImageInfo(); - /** - *
-     * old_image_info will only be present for delta images.
-     * 
- * - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; - */ - chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder getOldImageInfoOrBuilder(); + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ApexInfo getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } - /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - * @return Whether the newImageInfo field is set. - */ - boolean hasNewImageInfo(); - /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - * @return The newImageInfo. - */ - chromeos_update_engine.UpdateMetadata.ImageInfo getNewImageInfo(); - /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - */ - chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder getNewImageInfoOrBuilder(); + } - /** - *
-     * The minor version, also referred as "delta version", of the payload.
-     * Minor version 0 is full payload, everything else is delta payload.
-     * 
- * - * optional uint32 minor_version = 12 [default = 0]; - * @return Whether the minorVersion field is set. - */ - boolean hasMinorVersion(); - /** - *
-     * The minor version, also referred as "delta version", of the payload.
-     * Minor version 0 is full payload, everything else is delta payload.
-     * 
- * - * optional uint32 minor_version = 12 [default = 0]; - * @return The minorVersion. - */ - int getMinorVersion(); + public interface ApexMetadataOrBuilder extends + // @@protoc_insertion_point(interface_extends:chromeos_update_engine.ApexMetadata) + com.google.protobuf.MessageOrBuilder { /** - *
-     * Only present in major version >= 2. List of partitions that will be
-     * updated, in the order they will be updated. This field replaces the
-     * |install_operations|, |kernel_install_operations| and the
-     * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-     * array can have more than two partitions if needed, and they are identified
-     * by the partition name.
-     * 
- * - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; */ - java.util.List - getPartitionsList(); + java.util.List + getApexInfoList(); /** - *
-     * Only present in major version >= 2. List of partitions that will be
-     * updated, in the order they will be updated. This field replaces the
-     * |install_operations|, |kernel_install_operations| and the
-     * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-     * array can have more than two partitions if needed, and they are identified
-     * by the partition name.
-     * 
- * - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; */ - chromeos_update_engine.UpdateMetadata.PartitionUpdate getPartitions(int index); + chromeos_update_engine.UpdateMetadata.ApexInfo getApexInfo(int index); /** - *
-     * Only present in major version >= 2. List of partitions that will be
-     * updated, in the order they will be updated. This field replaces the
-     * |install_operations|, |kernel_install_operations| and the
-     * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-     * array can have more than two partitions if needed, and they are identified
-     * by the partition name.
-     * 
- * - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; */ - int getPartitionsCount(); + int getApexInfoCount(); /** - *
-     * Only present in major version >= 2. List of partitions that will be
-     * updated, in the order they will be updated. This field replaces the
-     * |install_operations|, |kernel_install_operations| and the
-     * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-     * array can have more than two partitions if needed, and they are identified
-     * by the partition name.
-     * 
- * - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; */ - java.util.List - getPartitionsOrBuilderList(); + java.util.List + getApexInfoOrBuilderList(); /** - *
-     * Only present in major version >= 2. List of partitions that will be
-     * updated, in the order they will be updated. This field replaces the
-     * |install_operations|, |kernel_install_operations| and the
-     * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-     * array can have more than two partitions if needed, and they are identified
-     * by the partition name.
-     * 
- * - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; */ - chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder getPartitionsOrBuilder( + chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder getApexInfoOrBuilder( int index); + } + /** + *
+   * Definition has been duplicated from
+   * $ANDROID_BUILD_TOP/build/tools/releasetools/ota_metadata.proto. Keep in sync.
+   * 
+ * + * Protobuf type {@code chromeos_update_engine.ApexMetadata} + */ + public static final class ApexMetadata extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:chromeos_update_engine.ApexMetadata) + ApexMetadataOrBuilder { + private static final long serialVersionUID = 0L; + // Use ApexMetadata.newBuilder() to construct. + private ApexMetadata(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ApexMetadata() { + apexInfo_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ApexMetadata(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ApexMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ApexMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.ApexMetadata.class, chromeos_update_engine.UpdateMetadata.ApexMetadata.Builder.class); + } + public static final int APEX_INFO_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private java.util.List apexInfo_; /** - *
-     * The maximum timestamp of the OS allowed to apply this payload.
-     * Can be used to prevent downgrading the OS.
-     * 
- * - * optional int64 max_timestamp = 14; - * @return Whether the maxTimestamp field is set. + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; */ - boolean hasMaxTimestamp(); + @java.lang.Override + public java.util.List getApexInfoList() { + return apexInfo_; + } /** - *
-     * The maximum timestamp of the OS allowed to apply this payload.
-     * Can be used to prevent downgrading the OS.
-     * 
- * - * optional int64 max_timestamp = 14; - * @return The maxTimestamp. + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; */ - long getMaxTimestamp(); - + @java.lang.Override + public java.util.List + getApexInfoOrBuilderList() { + return apexInfo_; + } /** - *
-     * Metadata related to all dynamic partitions.
-     * 
- * - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; - * @return Whether the dynamicPartitionMetadata field is set. + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; */ - boolean hasDynamicPartitionMetadata(); + @java.lang.Override + public int getApexInfoCount() { + return apexInfo_.size(); + } /** - *
-     * Metadata related to all dynamic partitions.
-     * 
- * - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; - * @return The dynamicPartitionMetadata. + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; */ - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDynamicPartitionMetadata(); + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ApexInfo getApexInfo(int index) { + return apexInfo_.get(index); + } /** - *
-     * Metadata related to all dynamic partitions.
-     * 
- * - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; */ - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder getDynamicPartitionMetadataOrBuilder(); + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder getApexInfoOrBuilder( + int index) { + return apexInfo_.get(index); + } + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + for (int i = 0; i < apexInfo_.size(); i++) { + output.writeMessage(1, apexInfo_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < apexInfo_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, apexInfo_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof chromeos_update_engine.UpdateMetadata.ApexMetadata)) { + return super.equals(obj); + } + chromeos_update_engine.UpdateMetadata.ApexMetadata other = (chromeos_update_engine.UpdateMetadata.ApexMetadata) obj; + + if (!getApexInfoList() + .equals(other.getApexInfoList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getApexInfoCount() > 0) { + hash = (37 * hash) + APEX_INFO_FIELD_NUMBER; + hash = (53 * hash) + getApexInfoList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.ApexMetadata parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.ApexMetadata prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } /** *
-     * If the payload only updates a subset of partitions on the device.
-     * 
- * - * optional bool partial_update = 16; - * @return Whether the partialUpdate field is set. - */ - boolean hasPartialUpdate(); - /** - *
-     * If the payload only updates a subset of partitions on the device.
+     * Definition has been duplicated from
+     * $ANDROID_BUILD_TOP/build/tools/releasetools/ota_metadata.proto. Keep in sync.
      * 
* - * optional bool partial_update = 16; - * @return The partialUpdate. + * Protobuf type {@code chromeos_update_engine.ApexMetadata} */ - boolean getPartialUpdate(); - } - /** - * Protobuf type {@code chromeos_update_engine.DeltaArchiveManifest} - */ - public static final class DeltaArchiveManifest extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:chromeos_update_engine.DeltaArchiveManifest) - DeltaArchiveManifestOrBuilder { - private static final long serialVersionUID = 0L; - // Use DeltaArchiveManifest.newBuilder() to construct. - private DeltaArchiveManifest(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private DeltaArchiveManifest() { - installOperations_ = java.util.Collections.emptyList(); - kernelInstallOperations_ = java.util.Collections.emptyList(); - blockSize_ = 4096; - partitions_ = java.util.Collections.emptyList(); - } + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:chromeos_update_engine.ApexMetadata) + chromeos_update_engine.UpdateMetadata.ApexMetadataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ApexMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ApexMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.ApexMetadata.class, chromeos_update_engine.UpdateMetadata.ApexMetadata.Builder.class); + } + + // Construct using chromeos_update_engine.UpdateMetadata.ApexMetadata.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (apexInfoBuilder_ == null) { + apexInfo_ = java.util.Collections.emptyList(); + } else { + apexInfo_ = null; + apexInfoBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_ApexMetadata_descriptor; + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ApexMetadata getDefaultInstanceForType() { + return chromeos_update_engine.UpdateMetadata.ApexMetadata.getDefaultInstance(); + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ApexMetadata build() { + chromeos_update_engine.UpdateMetadata.ApexMetadata result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ApexMetadata buildPartial() { + chromeos_update_engine.UpdateMetadata.ApexMetadata result = new chromeos_update_engine.UpdateMetadata.ApexMetadata(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } - @java.lang.Override - @SuppressWarnings({"unused"}) - protected java.lang.Object newInstance( - UnusedPrivateParameter unused) { - return new DeltaArchiveManifest(); - } + private void buildPartialRepeatedFields(chromeos_update_engine.UpdateMetadata.ApexMetadata result) { + if (apexInfoBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + apexInfo_ = java.util.Collections.unmodifiableList(apexInfo_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.apexInfo_ = apexInfo_; + } else { + result.apexInfo_ = apexInfoBuilder_.build(); + } + } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private DeltaArchiveManifest( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 10: { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - installOperations_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - installOperations_.add( - input.readMessage(chromeos_update_engine.UpdateMetadata.InstallOperation.PARSER, extensionRegistry)); - break; - } - case 18: { - if (!((mutable_bitField0_ & 0x00000002) != 0)) { - kernelInstallOperations_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; - } - kernelInstallOperations_.add( - input.readMessage(chromeos_update_engine.UpdateMetadata.InstallOperation.PARSER, extensionRegistry)); - break; - } - case 24: { - bitField0_ |= 0x00000001; - blockSize_ = input.readUInt32(); - break; - } - case 32: { - bitField0_ |= 0x00000002; - signaturesOffset_ = input.readUInt64(); - break; - } - case 40: { - bitField0_ |= 0x00000004; - signaturesSize_ = input.readUInt64(); - break; - } - case 50: { - chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder subBuilder = null; - if (((bitField0_ & 0x00000008) != 0)) { - subBuilder = oldKernelInfo_.toBuilder(); - } - oldKernelInfo_ = input.readMessage(chromeos_update_engine.UpdateMetadata.PartitionInfo.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(oldKernelInfo_); - oldKernelInfo_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000008; - break; - } - case 58: { - chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder subBuilder = null; - if (((bitField0_ & 0x00000010) != 0)) { - subBuilder = newKernelInfo_.toBuilder(); - } - newKernelInfo_ = input.readMessage(chromeos_update_engine.UpdateMetadata.PartitionInfo.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(newKernelInfo_); - newKernelInfo_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000010; - break; - } - case 66: { - chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder subBuilder = null; - if (((bitField0_ & 0x00000020) != 0)) { - subBuilder = oldRootfsInfo_.toBuilder(); - } - oldRootfsInfo_ = input.readMessage(chromeos_update_engine.UpdateMetadata.PartitionInfo.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(oldRootfsInfo_); - oldRootfsInfo_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000020; - break; - } - case 74: { - chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder subBuilder = null; - if (((bitField0_ & 0x00000040) != 0)) { - subBuilder = newRootfsInfo_.toBuilder(); - } - newRootfsInfo_ = input.readMessage(chromeos_update_engine.UpdateMetadata.PartitionInfo.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(newRootfsInfo_); - newRootfsInfo_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000040; - break; - } - case 82: { - chromeos_update_engine.UpdateMetadata.ImageInfo.Builder subBuilder = null; - if (((bitField0_ & 0x00000080) != 0)) { - subBuilder = oldImageInfo_.toBuilder(); - } - oldImageInfo_ = input.readMessage(chromeos_update_engine.UpdateMetadata.ImageInfo.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(oldImageInfo_); - oldImageInfo_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000080; - break; - } - case 90: { - chromeos_update_engine.UpdateMetadata.ImageInfo.Builder subBuilder = null; - if (((bitField0_ & 0x00000100) != 0)) { - subBuilder = newImageInfo_.toBuilder(); - } - newImageInfo_ = input.readMessage(chromeos_update_engine.UpdateMetadata.ImageInfo.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(newImageInfo_); - newImageInfo_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000100; - break; - } - case 96: { - bitField0_ |= 0x00000200; - minorVersion_ = input.readUInt32(); - break; - } - case 106: { - if (!((mutable_bitField0_ & 0x00001000) != 0)) { - partitions_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00001000; - } - partitions_.add( - input.readMessage(chromeos_update_engine.UpdateMetadata.PartitionUpdate.PARSER, extensionRegistry)); - break; - } - case 112: { - bitField0_ |= 0x00000400; - maxTimestamp_ = input.readInt64(); - break; - } - case 122: { - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder subBuilder = null; - if (((bitField0_ & 0x00000800) != 0)) { - subBuilder = dynamicPartitionMetadata_.toBuilder(); - } - dynamicPartitionMetadata_ = input.readMessage(chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(dynamicPartitionMetadata_); - dynamicPartitionMetadata_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000800; - break; + private void buildPartial0(chromeos_update_engine.UpdateMetadata.ApexMetadata result) { + int from_bitField0_ = bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof chromeos_update_engine.UpdateMetadata.ApexMetadata) { + return mergeFrom((chromeos_update_engine.UpdateMetadata.ApexMetadata)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.ApexMetadata other) { + if (other == chromeos_update_engine.UpdateMetadata.ApexMetadata.getDefaultInstance()) return this; + if (apexInfoBuilder_ == null) { + if (!other.apexInfo_.isEmpty()) { + if (apexInfo_.isEmpty()) { + apexInfo_ = other.apexInfo_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureApexInfoIsMutable(); + apexInfo_.addAll(other.apexInfo_); } - case 128: { - bitField0_ |= 0x00001000; - partialUpdate_ = input.readBool(); - break; + onChanged(); + } + } else { + if (!other.apexInfo_.isEmpty()) { + if (apexInfoBuilder_.isEmpty()) { + apexInfoBuilder_.dispose(); + apexInfoBuilder_ = null; + apexInfo_ = other.apexInfo_; + bitField0_ = (bitField0_ & ~0x00000001); + apexInfoBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getApexInfoFieldBuilder() : null; + } else { + apexInfoBuilder_.addAllMessages(other.apexInfo_); } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: done = true; - } - break; - } + break; + case 10: { + chromeos_update_engine.UpdateMetadata.ApexInfo m = + input.readMessage( + chromeos_update_engine.UpdateMetadata.ApexInfo.PARSER, + extensionRegistry); + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + apexInfo_.add(m); + } else { + apexInfoBuilder_.addMessage(m); + } + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.util.List apexInfo_ = + java.util.Collections.emptyList(); + private void ensureApexInfoIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + apexInfo_ = new java.util.ArrayList(apexInfo_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.ApexInfo, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder, chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder> apexInfoBuilder_; + + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public java.util.List getApexInfoList() { + if (apexInfoBuilder_ == null) { + return java.util.Collections.unmodifiableList(apexInfo_); + } else { + return apexInfoBuilder_.getMessageList(); + } + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public int getApexInfoCount() { + if (apexInfoBuilder_ == null) { + return apexInfo_.size(); + } else { + return apexInfoBuilder_.getCount(); + } + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public chromeos_update_engine.UpdateMetadata.ApexInfo getApexInfo(int index) { + if (apexInfoBuilder_ == null) { + return apexInfo_.get(index); + } else { + return apexInfoBuilder_.getMessage(index); + } + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public Builder setApexInfo( + int index, chromeos_update_engine.UpdateMetadata.ApexInfo value) { + if (apexInfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureApexInfoIsMutable(); + apexInfo_.set(index, value); + onChanged(); + } else { + apexInfoBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public Builder setApexInfo( + int index, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder builderForValue) { + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + apexInfo_.set(index, builderForValue.build()); + onChanged(); + } else { + apexInfoBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public Builder addApexInfo(chromeos_update_engine.UpdateMetadata.ApexInfo value) { + if (apexInfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureApexInfoIsMutable(); + apexInfo_.add(value); + onChanged(); + } else { + apexInfoBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public Builder addApexInfo( + int index, chromeos_update_engine.UpdateMetadata.ApexInfo value) { + if (apexInfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); } + ensureApexInfoIsMutable(); + apexInfo_.add(index, value); + onChanged(); + } else { + apexInfoBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public Builder addApexInfo( + chromeos_update_engine.UpdateMetadata.ApexInfo.Builder builderForValue) { + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + apexInfo_.add(builderForValue.build()); + onChanged(); + } else { + apexInfoBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public Builder addApexInfo( + int index, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder builderForValue) { + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + apexInfo_.add(index, builderForValue.build()); + onChanged(); + } else { + apexInfoBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public Builder addAllApexInfo( + java.lang.Iterable values) { + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, apexInfo_); + onChanged(); + } else { + apexInfoBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public Builder clearApexInfo() { + if (apexInfoBuilder_ == null) { + apexInfo_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + apexInfoBuilder_.clear(); + } + return this; + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public Builder removeApexInfo(int index) { + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + apexInfo_.remove(index); + onChanged(); + } else { + apexInfoBuilder_.remove(index); } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - installOperations_ = java.util.Collections.unmodifiableList(installOperations_); + return this; + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public chromeos_update_engine.UpdateMetadata.ApexInfo.Builder getApexInfoBuilder( + int index) { + return getApexInfoFieldBuilder().getBuilder(index); + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder getApexInfoOrBuilder( + int index) { + if (apexInfoBuilder_ == null) { + return apexInfo_.get(index); } else { + return apexInfoBuilder_.getMessageOrBuilder(index); } - if (((mutable_bitField0_ & 0x00000002) != 0)) { - kernelInstallOperations_ = java.util.Collections.unmodifiableList(kernelInstallOperations_); + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public java.util.List + getApexInfoOrBuilderList() { + if (apexInfoBuilder_ != null) { + return apexInfoBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(apexInfo_); } - if (((mutable_bitField0_ & 0x00001000) != 0)) { - partitions_ = java.util.Collections.unmodifiableList(partitions_); + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public chromeos_update_engine.UpdateMetadata.ApexInfo.Builder addApexInfoBuilder() { + return getApexInfoFieldBuilder().addBuilder( + chromeos_update_engine.UpdateMetadata.ApexInfo.getDefaultInstance()); + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public chromeos_update_engine.UpdateMetadata.ApexInfo.Builder addApexInfoBuilder( + int index) { + return getApexInfoFieldBuilder().addBuilder( + index, chromeos_update_engine.UpdateMetadata.ApexInfo.getDefaultInstance()); + } + /** + * repeated .chromeos_update_engine.ApexInfo apex_info = 1; + */ + public java.util.List + getApexInfoBuilderList() { + return getApexInfoFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.ApexInfo, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder, chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder> + getApexInfoFieldBuilder() { + if (apexInfoBuilder_ == null) { + apexInfoBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.ApexInfo, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder, chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder>( + apexInfo_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + apexInfo_ = null; } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); + return apexInfoBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DeltaArchiveManifest_descriptor; - } - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DeltaArchiveManifest_fieldAccessorTable - .ensureFieldAccessorsInitialized( - chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.class, chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.Builder.class); - } + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } - private int bitField0_; - public static final int INSTALL_OPERATIONS_FIELD_NUMBER = 1; - private java.util.List installOperations_; - /** - *
-     * Only present in major version = 1. List of install operations for the
-     * kernel and rootfs partitions. For major version = 2 see the |partitions|
-     * field.
-     * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - @java.lang.Override - public java.util.List getInstallOperationsList() { - return installOperations_; - } - /** - *
-     * Only present in major version = 1. List of install operations for the
-     * kernel and rootfs partitions. For major version = 2 see the |partitions|
-     * field.
-     * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - @java.lang.Override - public java.util.List - getInstallOperationsOrBuilderList() { - return installOperations_; - } - /** - *
-     * Only present in major version = 1. List of install operations for the
-     * kernel and rootfs partitions. For major version = 2 see the |partitions|
-     * field.
-     * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - @java.lang.Override - public int getInstallOperationsCount() { - return installOperations_.size(); - } - /** - *
-     * Only present in major version = 1. List of install operations for the
-     * kernel and rootfs partitions. For major version = 2 see the |partitions|
-     * field.
-     * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.InstallOperation getInstallOperations(int index) { - return installOperations_.get(index); - } - /** - *
-     * Only present in major version = 1. List of install operations for the
-     * kernel and rootfs partitions. For major version = 2 see the |partitions|
-     * field.
-     * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder getInstallOperationsOrBuilder( - int index) { - return installOperations_.get(index); + + // @@protoc_insertion_point(builder_scope:chromeos_update_engine.ApexMetadata) } - public static final int KERNEL_INSTALL_OPERATIONS_FIELD_NUMBER = 2; - private java.util.List kernelInstallOperations_; - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - @java.lang.Override - public java.util.List getKernelInstallOperationsList() { - return kernelInstallOperations_; + // @@protoc_insertion_point(class_scope:chromeos_update_engine.ApexMetadata) + private static final chromeos_update_engine.UpdateMetadata.ApexMetadata DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new chromeos_update_engine.UpdateMetadata.ApexMetadata(); } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - @java.lang.Override - public java.util.List - getKernelInstallOperationsOrBuilderList() { - return kernelInstallOperations_; + + public static chromeos_update_engine.UpdateMetadata.ApexMetadata getDefaultInstance() { + return DEFAULT_INSTANCE; } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - @java.lang.Override - public int getKernelInstallOperationsCount() { - return kernelInstallOperations_.size(); + + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ApexMetadata parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ + @java.lang.Override - public chromeos_update_engine.UpdateMetadata.InstallOperation getKernelInstallOperations(int index) { - return kernelInstallOperations_.get(index); + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ + @java.lang.Override - public chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder getKernelInstallOperationsOrBuilder( - int index) { - return kernelInstallOperations_.get(index); + public chromeos_update_engine.UpdateMetadata.ApexMetadata getDefaultInstanceForType() { + return DEFAULT_INSTANCE; } - public static final int BLOCK_SIZE_FIELD_NUMBER = 3; - private int blockSize_; + } + + public interface DeltaArchiveManifestOrBuilder extends + // @@protoc_insertion_point(interface_extends:chromeos_update_engine.DeltaArchiveManifest) + com.google.protobuf.MessageOrBuilder { + /** *
      * (At time of writing) usually 4096
@@ -14729,10 +17530,7 @@ public final class UpdateMetadata {
      * optional uint32 block_size = 3 [default = 4096];
      * @return Whether the blockSize field is set.
      */
-    @java.lang.Override
-    public boolean hasBlockSize() {
-      return ((bitField0_ & 0x00000001) != 0);
-    }
+    boolean hasBlockSize();
     /**
      * 
      * (At time of writing) usually 4096
@@ -14741,13 +17539,8 @@ public final class UpdateMetadata {
      * optional uint32 block_size = 3 [default = 4096];
      * @return The blockSize.
      */
-    @java.lang.Override
-    public int getBlockSize() {
-      return blockSize_;
-    }
+    int getBlockSize();
 
-    public static final int SIGNATURES_OFFSET_FIELD_NUMBER = 4;
-    private long signaturesOffset_;
     /**
      * 
      * If signatures are present, the offset into the blobs, generally
@@ -14760,10 +17553,7 @@ public final class UpdateMetadata {
      * optional uint64 signatures_offset = 4;
      * @return Whether the signaturesOffset field is set.
      */
-    @java.lang.Override
-    public boolean hasSignaturesOffset() {
-      return ((bitField0_ & 0x00000002) != 0);
-    }
+    boolean hasSignaturesOffset();
     /**
      * 
      * If signatures are present, the offset into the blobs, generally
@@ -14776,215 +17566,19 @@ public final class UpdateMetadata {
      * optional uint64 signatures_offset = 4;
      * @return The signaturesOffset.
      */
-    @java.lang.Override
-    public long getSignaturesOffset() {
-      return signaturesOffset_;
-    }
+    long getSignaturesOffset();
 
-    public static final int SIGNATURES_SIZE_FIELD_NUMBER = 5;
-    private long signaturesSize_;
     /**
      * optional uint64 signatures_size = 5;
      * @return Whether the signaturesSize field is set.
      */
-    @java.lang.Override
-    public boolean hasSignaturesSize() {
-      return ((bitField0_ & 0x00000004) != 0);
-    }
+    boolean hasSignaturesSize();
     /**
      * optional uint64 signatures_size = 5;
      * @return The signaturesSize.
      */
-    @java.lang.Override
-    public long getSignaturesSize() {
-      return signaturesSize_;
-    }
-
-    public static final int OLD_KERNEL_INFO_FIELD_NUMBER = 6;
-    private chromeos_update_engine.UpdateMetadata.PartitionInfo oldKernelInfo_;
-    /**
-     * 
-     * Only present in major version = 1. Partition metadata used to validate the
-     * update. For major version = 2 see the |partitions| field.
-     * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - * @return Whether the oldKernelInfo field is set. - */ - @java.lang.Override - public boolean hasOldKernelInfo() { - return ((bitField0_ & 0x00000008) != 0); - } - /** - *
-     * Only present in major version = 1. Partition metadata used to validate the
-     * update. For major version = 2 see the |partitions| field.
-     * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - * @return The oldKernelInfo. - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionInfo getOldKernelInfo() { - return oldKernelInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldKernelInfo_; - } - /** - *
-     * Only present in major version = 1. Partition metadata used to validate the
-     * update. For major version = 2 see the |partitions| field.
-     * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getOldKernelInfoOrBuilder() { - return oldKernelInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldKernelInfo_; - } - - public static final int NEW_KERNEL_INFO_FIELD_NUMBER = 7; - private chromeos_update_engine.UpdateMetadata.PartitionInfo newKernelInfo_; - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - * @return Whether the newKernelInfo field is set. - */ - @java.lang.Override - public boolean hasNewKernelInfo() { - return ((bitField0_ & 0x00000010) != 0); - } - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - * @return The newKernelInfo. - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionInfo getNewKernelInfo() { - return newKernelInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newKernelInfo_; - } - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getNewKernelInfoOrBuilder() { - return newKernelInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newKernelInfo_; - } - - public static final int OLD_ROOTFS_INFO_FIELD_NUMBER = 8; - private chromeos_update_engine.UpdateMetadata.PartitionInfo oldRootfsInfo_; - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - * @return Whether the oldRootfsInfo field is set. - */ - @java.lang.Override - public boolean hasOldRootfsInfo() { - return ((bitField0_ & 0x00000020) != 0); - } - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - * @return The oldRootfsInfo. - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionInfo getOldRootfsInfo() { - return oldRootfsInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldRootfsInfo_; - } - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getOldRootfsInfoOrBuilder() { - return oldRootfsInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldRootfsInfo_; - } - - public static final int NEW_ROOTFS_INFO_FIELD_NUMBER = 9; - private chromeos_update_engine.UpdateMetadata.PartitionInfo newRootfsInfo_; - /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; - * @return Whether the newRootfsInfo field is set. - */ - @java.lang.Override - public boolean hasNewRootfsInfo() { - return ((bitField0_ & 0x00000040) != 0); - } - /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; - * @return The newRootfsInfo. - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionInfo getNewRootfsInfo() { - return newRootfsInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newRootfsInfo_; - } - /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getNewRootfsInfoOrBuilder() { - return newRootfsInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newRootfsInfo_; - } - - public static final int OLD_IMAGE_INFO_FIELD_NUMBER = 10; - private chromeos_update_engine.UpdateMetadata.ImageInfo oldImageInfo_; - /** - *
-     * old_image_info will only be present for delta images.
-     * 
- * - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; - * @return Whether the oldImageInfo field is set. - */ - @java.lang.Override - public boolean hasOldImageInfo() { - return ((bitField0_ & 0x00000080) != 0); - } - /** - *
-     * old_image_info will only be present for delta images.
-     * 
- * - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; - * @return The oldImageInfo. - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ImageInfo getOldImageInfo() { - return oldImageInfo_ == null ? chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance() : oldImageInfo_; - } - /** - *
-     * old_image_info will only be present for delta images.
-     * 
- * - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder getOldImageInfoOrBuilder() { - return oldImageInfo_ == null ? chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance() : oldImageInfo_; - } - - public static final int NEW_IMAGE_INFO_FIELD_NUMBER = 11; - private chromeos_update_engine.UpdateMetadata.ImageInfo newImageInfo_; - /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - * @return Whether the newImageInfo field is set. - */ - @java.lang.Override - public boolean hasNewImageInfo() { - return ((bitField0_ & 0x00000100) != 0); - } - /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - * @return The newImageInfo. - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ImageInfo getNewImageInfo() { - return newImageInfo_ == null ? chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance() : newImageInfo_; - } - /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder getNewImageInfoOrBuilder() { - return newImageInfo_ == null ? chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance() : newImageInfo_; - } + long getSignaturesSize(); - public static final int MINOR_VERSION_FIELD_NUMBER = 12; - private int minorVersion_; /** *
      * The minor version, also referred as "delta version", of the payload.
@@ -14994,26 +17588,18 @@ public final class UpdateMetadata {
      * optional uint32 minor_version = 12 [default = 0];
      * @return Whether the minorVersion field is set.
      */
-    @java.lang.Override
-    public boolean hasMinorVersion() {
-      return ((bitField0_ & 0x00000200) != 0);
-    }
+    boolean hasMinorVersion();
     /**
      * 
      * The minor version, also referred as "delta version", of the payload.
      * Minor version 0 is full payload, everything else is delta payload.
      * 
* - * optional uint32 minor_version = 12 [default = 0]; - * @return The minorVersion. - */ - @java.lang.Override - public int getMinorVersion() { - return minorVersion_; - } + * optional uint32 minor_version = 12 [default = 0]; + * @return The minorVersion. + */ + int getMinorVersion(); - public static final int PARTITIONS_FIELD_NUMBER = 13; - private java.util.List partitions_; /** *
      * Only present in major version >= 2. List of partitions that will be
@@ -15026,10 +17612,8 @@ public final class UpdateMetadata {
      *
      * repeated .chromeos_update_engine.PartitionUpdate partitions = 13;
      */
-    @java.lang.Override
-    public java.util.List getPartitionsList() {
-      return partitions_;
-    }
+    java.util.List 
+        getPartitionsList();
     /**
      * 
      * Only present in major version >= 2. List of partitions that will be
@@ -15042,11 +17626,7 @@ public final class UpdateMetadata {
      *
      * repeated .chromeos_update_engine.PartitionUpdate partitions = 13;
      */
-    @java.lang.Override
-    public java.util.List
-        getPartitionsOrBuilderList() {
-      return partitions_;
-    }
+    chromeos_update_engine.UpdateMetadata.PartitionUpdate getPartitions(int index);
     /**
      * 
      * Only present in major version >= 2. List of partitions that will be
@@ -15059,10 +17639,7 @@ public final class UpdateMetadata {
      *
      * repeated .chromeos_update_engine.PartitionUpdate partitions = 13;
      */
-    @java.lang.Override
-    public int getPartitionsCount() {
-      return partitions_.size();
-    }
+    int getPartitionsCount();
     /**
      * 
      * Only present in major version >= 2. List of partitions that will be
@@ -15075,10 +17652,8 @@ public final class UpdateMetadata {
      *
      * repeated .chromeos_update_engine.PartitionUpdate partitions = 13;
      */
-    @java.lang.Override
-    public chromeos_update_engine.UpdateMetadata.PartitionUpdate getPartitions(int index) {
-      return partitions_.get(index);
-    }
+    java.util.List 
+        getPartitionsOrBuilderList();
     /**
      * 
      * Only present in major version >= 2. List of partitions that will be
@@ -15091,2621 +17666,1736 @@ public final class UpdateMetadata {
      *
      * repeated .chromeos_update_engine.PartitionUpdate partitions = 13;
      */
-    @java.lang.Override
-    public chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder getPartitionsOrBuilder(
-        int index) {
-      return partitions_.get(index);
-    }
+    chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder getPartitionsOrBuilder(
+        int index);
 
-    public static final int MAX_TIMESTAMP_FIELD_NUMBER = 14;
-    private long maxTimestamp_;
-    /**
-     * 
-     * The maximum timestamp of the OS allowed to apply this payload.
-     * Can be used to prevent downgrading the OS.
-     * 
- * - * optional int64 max_timestamp = 14; - * @return Whether the maxTimestamp field is set. - */ - @java.lang.Override - public boolean hasMaxTimestamp() { - return ((bitField0_ & 0x00000400) != 0); - } /** *
      * The maximum timestamp of the OS allowed to apply this payload.
      * Can be used to prevent downgrading the OS.
      * 
* - * optional int64 max_timestamp = 14; - * @return The maxTimestamp. - */ - @java.lang.Override - public long getMaxTimestamp() { - return maxTimestamp_; - } - - public static final int DYNAMIC_PARTITION_METADATA_FIELD_NUMBER = 15; - private chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata dynamicPartitionMetadata_; - /** - *
-     * Metadata related to all dynamic partitions.
-     * 
- * - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; - * @return Whether the dynamicPartitionMetadata field is set. - */ - @java.lang.Override - public boolean hasDynamicPartitionMetadata() { - return ((bitField0_ & 0x00000800) != 0); - } - /** - *
-     * Metadata related to all dynamic partitions.
-     * 
- * - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; - * @return The dynamicPartitionMetadata. - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDynamicPartitionMetadata() { - return dynamicPartitionMetadata_ == null ? chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance() : dynamicPartitionMetadata_; - } - /** - *
-     * Metadata related to all dynamic partitions.
-     * 
- * - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; - */ - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder getDynamicPartitionMetadataOrBuilder() { - return dynamicPartitionMetadata_ == null ? chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance() : dynamicPartitionMetadata_; - } - - public static final int PARTIAL_UPDATE_FIELD_NUMBER = 16; - private boolean partialUpdate_; - /** - *
-     * If the payload only updates a subset of partitions on the device.
-     * 
- * - * optional bool partial_update = 16; - * @return Whether the partialUpdate field is set. - */ - @java.lang.Override - public boolean hasPartialUpdate() { - return ((bitField0_ & 0x00001000) != 0); - } - /** - *
-     * If the payload only updates a subset of partitions on the device.
-     * 
- * - * optional bool partial_update = 16; - * @return The partialUpdate. - */ - @java.lang.Override - public boolean getPartialUpdate() { - return partialUpdate_; - } - - private byte memoizedIsInitialized = -1; - @java.lang.Override - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - for (int i = 0; i < getInstallOperationsCount(); i++) { - if (!getInstallOperations(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - for (int i = 0; i < getKernelInstallOperationsCount(); i++) { - if (!getKernelInstallOperations(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - for (int i = 0; i < getPartitionsCount(); i++) { - if (!getPartitions(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - if (hasDynamicPartitionMetadata()) { - if (!getDynamicPartitionMetadata().isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - memoizedIsInitialized = 1; - return true; - } - - @java.lang.Override - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - for (int i = 0; i < installOperations_.size(); i++) { - output.writeMessage(1, installOperations_.get(i)); - } - for (int i = 0; i < kernelInstallOperations_.size(); i++) { - output.writeMessage(2, kernelInstallOperations_.get(i)); - } - if (((bitField0_ & 0x00000001) != 0)) { - output.writeUInt32(3, blockSize_); - } - if (((bitField0_ & 0x00000002) != 0)) { - output.writeUInt64(4, signaturesOffset_); - } - if (((bitField0_ & 0x00000004) != 0)) { - output.writeUInt64(5, signaturesSize_); - } - if (((bitField0_ & 0x00000008) != 0)) { - output.writeMessage(6, getOldKernelInfo()); - } - if (((bitField0_ & 0x00000010) != 0)) { - output.writeMessage(7, getNewKernelInfo()); - } - if (((bitField0_ & 0x00000020) != 0)) { - output.writeMessage(8, getOldRootfsInfo()); - } - if (((bitField0_ & 0x00000040) != 0)) { - output.writeMessage(9, getNewRootfsInfo()); - } - if (((bitField0_ & 0x00000080) != 0)) { - output.writeMessage(10, getOldImageInfo()); - } - if (((bitField0_ & 0x00000100) != 0)) { - output.writeMessage(11, getNewImageInfo()); - } - if (((bitField0_ & 0x00000200) != 0)) { - output.writeUInt32(12, minorVersion_); - } - for (int i = 0; i < partitions_.size(); i++) { - output.writeMessage(13, partitions_.get(i)); - } - if (((bitField0_ & 0x00000400) != 0)) { - output.writeInt64(14, maxTimestamp_); - } - if (((bitField0_ & 0x00000800) != 0)) { - output.writeMessage(15, getDynamicPartitionMetadata()); - } - if (((bitField0_ & 0x00001000) != 0)) { - output.writeBool(16, partialUpdate_); - } - unknownFields.writeTo(output); - } - - @java.lang.Override - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - for (int i = 0; i < installOperations_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, installOperations_.get(i)); - } - for (int i = 0; i < kernelInstallOperations_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, kernelInstallOperations_.get(i)); - } - if (((bitField0_ & 0x00000001) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(3, blockSize_); - } - if (((bitField0_ & 0x00000002) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(4, signaturesOffset_); - } - if (((bitField0_ & 0x00000004) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(5, signaturesSize_); - } - if (((bitField0_ & 0x00000008) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(6, getOldKernelInfo()); - } - if (((bitField0_ & 0x00000010) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(7, getNewKernelInfo()); - } - if (((bitField0_ & 0x00000020) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(8, getOldRootfsInfo()); - } - if (((bitField0_ & 0x00000040) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(9, getNewRootfsInfo()); - } - if (((bitField0_ & 0x00000080) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(10, getOldImageInfo()); - } - if (((bitField0_ & 0x00000100) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(11, getNewImageInfo()); - } - if (((bitField0_ & 0x00000200) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(12, minorVersion_); - } - for (int i = 0; i < partitions_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(13, partitions_.get(i)); - } - if (((bitField0_ & 0x00000400) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(14, maxTimestamp_); - } - if (((bitField0_ & 0x00000800) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(15, getDynamicPartitionMetadata()); - } - if (((bitField0_ & 0x00001000) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(16, partialUpdate_); - } - size += unknownFields.getSerializedSize(); - memoizedSize = size; - return size; - } + * optional int64 max_timestamp = 14; + * @return Whether the maxTimestamp field is set. + */ + boolean hasMaxTimestamp(); + /** + *
+     * The maximum timestamp of the OS allowed to apply this payload.
+     * Can be used to prevent downgrading the OS.
+     * 
+ * + * optional int64 max_timestamp = 14; + * @return The maxTimestamp. + */ + long getMaxTimestamp(); - @java.lang.Override - public boolean equals(final java.lang.Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest)) { - return super.equals(obj); - } - chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest other = (chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest) obj; + /** + *
+     * Metadata related to all dynamic partitions.
+     * 
+ * + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * @return Whether the dynamicPartitionMetadata field is set. + */ + boolean hasDynamicPartitionMetadata(); + /** + *
+     * Metadata related to all dynamic partitions.
+     * 
+ * + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * @return The dynamicPartitionMetadata. + */ + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDynamicPartitionMetadata(); + /** + *
+     * Metadata related to all dynamic partitions.
+     * 
+ * + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + */ + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder getDynamicPartitionMetadataOrBuilder(); - if (!getInstallOperationsList() - .equals(other.getInstallOperationsList())) return false; - if (!getKernelInstallOperationsList() - .equals(other.getKernelInstallOperationsList())) return false; - if (hasBlockSize() != other.hasBlockSize()) return false; - if (hasBlockSize()) { - if (getBlockSize() - != other.getBlockSize()) return false; - } - if (hasSignaturesOffset() != other.hasSignaturesOffset()) return false; - if (hasSignaturesOffset()) { - if (getSignaturesOffset() - != other.getSignaturesOffset()) return false; - } - if (hasSignaturesSize() != other.hasSignaturesSize()) return false; - if (hasSignaturesSize()) { - if (getSignaturesSize() - != other.getSignaturesSize()) return false; - } - if (hasOldKernelInfo() != other.hasOldKernelInfo()) return false; - if (hasOldKernelInfo()) { - if (!getOldKernelInfo() - .equals(other.getOldKernelInfo())) return false; - } - if (hasNewKernelInfo() != other.hasNewKernelInfo()) return false; - if (hasNewKernelInfo()) { - if (!getNewKernelInfo() - .equals(other.getNewKernelInfo())) return false; - } - if (hasOldRootfsInfo() != other.hasOldRootfsInfo()) return false; - if (hasOldRootfsInfo()) { - if (!getOldRootfsInfo() - .equals(other.getOldRootfsInfo())) return false; - } - if (hasNewRootfsInfo() != other.hasNewRootfsInfo()) return false; - if (hasNewRootfsInfo()) { - if (!getNewRootfsInfo() - .equals(other.getNewRootfsInfo())) return false; - } - if (hasOldImageInfo() != other.hasOldImageInfo()) return false; - if (hasOldImageInfo()) { - if (!getOldImageInfo() - .equals(other.getOldImageInfo())) return false; - } - if (hasNewImageInfo() != other.hasNewImageInfo()) return false; - if (hasNewImageInfo()) { - if (!getNewImageInfo() - .equals(other.getNewImageInfo())) return false; - } - if (hasMinorVersion() != other.hasMinorVersion()) return false; - if (hasMinorVersion()) { - if (getMinorVersion() - != other.getMinorVersion()) return false; - } - if (!getPartitionsList() - .equals(other.getPartitionsList())) return false; - if (hasMaxTimestamp() != other.hasMaxTimestamp()) return false; - if (hasMaxTimestamp()) { - if (getMaxTimestamp() - != other.getMaxTimestamp()) return false; - } - if (hasDynamicPartitionMetadata() != other.hasDynamicPartitionMetadata()) return false; - if (hasDynamicPartitionMetadata()) { - if (!getDynamicPartitionMetadata() - .equals(other.getDynamicPartitionMetadata())) return false; - } - if (hasPartialUpdate() != other.hasPartialUpdate()) return false; - if (hasPartialUpdate()) { - if (getPartialUpdate() - != other.getPartialUpdate()) return false; - } - if (!unknownFields.equals(other.unknownFields)) return false; - return true; - } + /** + *
+     * If the payload only updates a subset of partitions on the device.
+     * 
+ * + * optional bool partial_update = 16; + * @return Whether the partialUpdate field is set. + */ + boolean hasPartialUpdate(); + /** + *
+     * If the payload only updates a subset of partitions on the device.
+     * 
+ * + * optional bool partial_update = 16; + * @return The partialUpdate. + */ + boolean getPartialUpdate(); - @java.lang.Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptor().hashCode(); - if (getInstallOperationsCount() > 0) { - hash = (37 * hash) + INSTALL_OPERATIONS_FIELD_NUMBER; - hash = (53 * hash) + getInstallOperationsList().hashCode(); - } - if (getKernelInstallOperationsCount() > 0) { - hash = (37 * hash) + KERNEL_INSTALL_OPERATIONS_FIELD_NUMBER; - hash = (53 * hash) + getKernelInstallOperationsList().hashCode(); - } - if (hasBlockSize()) { - hash = (37 * hash) + BLOCK_SIZE_FIELD_NUMBER; - hash = (53 * hash) + getBlockSize(); - } - if (hasSignaturesOffset()) { - hash = (37 * hash) + SIGNATURES_OFFSET_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getSignaturesOffset()); - } - if (hasSignaturesSize()) { - hash = (37 * hash) + SIGNATURES_SIZE_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getSignaturesSize()); - } - if (hasOldKernelInfo()) { - hash = (37 * hash) + OLD_KERNEL_INFO_FIELD_NUMBER; - hash = (53 * hash) + getOldKernelInfo().hashCode(); - } - if (hasNewKernelInfo()) { - hash = (37 * hash) + NEW_KERNEL_INFO_FIELD_NUMBER; - hash = (53 * hash) + getNewKernelInfo().hashCode(); - } - if (hasOldRootfsInfo()) { - hash = (37 * hash) + OLD_ROOTFS_INFO_FIELD_NUMBER; - hash = (53 * hash) + getOldRootfsInfo().hashCode(); - } - if (hasNewRootfsInfo()) { - hash = (37 * hash) + NEW_ROOTFS_INFO_FIELD_NUMBER; - hash = (53 * hash) + getNewRootfsInfo().hashCode(); - } - if (hasOldImageInfo()) { - hash = (37 * hash) + OLD_IMAGE_INFO_FIELD_NUMBER; - hash = (53 * hash) + getOldImageInfo().hashCode(); - } - if (hasNewImageInfo()) { - hash = (37 * hash) + NEW_IMAGE_INFO_FIELD_NUMBER; - hash = (53 * hash) + getNewImageInfo().hashCode(); - } - if (hasMinorVersion()) { - hash = (37 * hash) + MINOR_VERSION_FIELD_NUMBER; - hash = (53 * hash) + getMinorVersion(); - } - if (getPartitionsCount() > 0) { - hash = (37 * hash) + PARTITIONS_FIELD_NUMBER; - hash = (53 * hash) + getPartitionsList().hashCode(); - } - if (hasMaxTimestamp()) { - hash = (37 * hash) + MAX_TIMESTAMP_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getMaxTimestamp()); - } - if (hasDynamicPartitionMetadata()) { - hash = (37 * hash) + DYNAMIC_PARTITION_METADATA_FIELD_NUMBER; - hash = (53 * hash) + getDynamicPartitionMetadata().hashCode(); - } - if (hasPartialUpdate()) { - hash = (37 * hash) + PARTIAL_UPDATE_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getPartialUpdate()); - } - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } + /** + *
+     * Information on compressed APEX to figure out how much space is required for
+     * their decompression
+     * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + java.util.List + getApexInfoList(); + /** + *
+     * Information on compressed APEX to figure out how much space is required for
+     * their decompression
+     * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + chromeos_update_engine.UpdateMetadata.ApexInfo getApexInfo(int index); + /** + *
+     * Information on compressed APEX to figure out how much space is required for
+     * their decompression
+     * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + int getApexInfoCount(); + /** + *
+     * Information on compressed APEX to figure out how much space is required for
+     * their decompression
+     * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + java.util.List + getApexInfoOrBuilderList(); + /** + *
+     * Information on compressed APEX to figure out how much space is required for
+     * their decompression
+     * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder getApexInfoOrBuilder( + int index); - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( - java.nio.ByteBuffer data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( - java.nio.ByteBuffer data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); + /** + *
+     * Security patch level of the device, usually in the format of
+     * yyyy-mm-dd
+     * 
+ * + * optional string security_patch_level = 18; + * @return Whether the securityPatchLevel field is set. + */ + boolean hasSecurityPatchLevel(); + /** + *
+     * Security patch level of the device, usually in the format of
+     * yyyy-mm-dd
+     * 
+ * + * optional string security_patch_level = 18; + * @return The securityPatchLevel. + */ + java.lang.String getSecurityPatchLevel(); + /** + *
+     * Security patch level of the device, usually in the format of
+     * yyyy-mm-dd
+     * 
+ * + * optional string security_patch_level = 18; + * @return The bytes for securityPatchLevel. + */ + com.google.protobuf.ByteString + getSecurityPatchLevelBytes(); + } + /** + * Protobuf type {@code chromeos_update_engine.DeltaArchiveManifest} + */ + public static final class DeltaArchiveManifest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:chromeos_update_engine.DeltaArchiveManifest) + DeltaArchiveManifestOrBuilder { + private static final long serialVersionUID = 0L; + // Use DeltaArchiveManifest.newBuilder() to construct. + private DeltaArchiveManifest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); } - public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); + private DeltaArchiveManifest() { + blockSize_ = 4096; + partitions_ = java.util.Collections.emptyList(); + apexInfo_ = java.util.Collections.emptyList(); + securityPatchLevel_ = ""; } @java.lang.Override - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DeltaArchiveManifest(); } + @java.lang.Override - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DeltaArchiveManifest_descriptor; } @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DeltaArchiveManifest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.class, chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.Builder.class); } - /** - * Protobuf type {@code chromeos_update_engine.DeltaArchiveManifest} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:chromeos_update_engine.DeltaArchiveManifest) - chromeos_update_engine.UpdateMetadata.DeltaArchiveManifestOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DeltaArchiveManifest_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DeltaArchiveManifest_fieldAccessorTable - .ensureFieldAccessorsInitialized( - chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.class, chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.Builder.class); - } - - // Construct using chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - getInstallOperationsFieldBuilder(); - getKernelInstallOperationsFieldBuilder(); - getOldKernelInfoFieldBuilder(); - getNewKernelInfoFieldBuilder(); - getOldRootfsInfoFieldBuilder(); - getNewRootfsInfoFieldBuilder(); - getOldImageInfoFieldBuilder(); - getNewImageInfoFieldBuilder(); - getPartitionsFieldBuilder(); - getDynamicPartitionMetadataFieldBuilder(); - } - } - @java.lang.Override - public Builder clear() { - super.clear(); - if (installOperationsBuilder_ == null) { - installOperations_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); - } else { - installOperationsBuilder_.clear(); - } - if (kernelInstallOperationsBuilder_ == null) { - kernelInstallOperations_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); - } else { - kernelInstallOperationsBuilder_.clear(); - } - blockSize_ = 4096; - bitField0_ = (bitField0_ & ~0x00000004); - signaturesOffset_ = 0L; - bitField0_ = (bitField0_ & ~0x00000008); - signaturesSize_ = 0L; - bitField0_ = (bitField0_ & ~0x00000010); - if (oldKernelInfoBuilder_ == null) { - oldKernelInfo_ = null; - } else { - oldKernelInfoBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000020); - if (newKernelInfoBuilder_ == null) { - newKernelInfo_ = null; - } else { - newKernelInfoBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000040); - if (oldRootfsInfoBuilder_ == null) { - oldRootfsInfo_ = null; - } else { - oldRootfsInfoBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000080); - if (newRootfsInfoBuilder_ == null) { - newRootfsInfo_ = null; - } else { - newRootfsInfoBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000100); - if (oldImageInfoBuilder_ == null) { - oldImageInfo_ = null; - } else { - oldImageInfoBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000200); - if (newImageInfoBuilder_ == null) { - newImageInfo_ = null; - } else { - newImageInfoBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000400); - minorVersion_ = 0; - bitField0_ = (bitField0_ & ~0x00000800); - if (partitionsBuilder_ == null) { - partitions_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00001000); - } else { - partitionsBuilder_.clear(); - } - maxTimestamp_ = 0L; - bitField0_ = (bitField0_ & ~0x00002000); - if (dynamicPartitionMetadataBuilder_ == null) { - dynamicPartitionMetadata_ = null; - } else { - dynamicPartitionMetadataBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00004000); - partialUpdate_ = false; - bitField0_ = (bitField0_ & ~0x00008000); - return this; - } - - @java.lang.Override - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DeltaArchiveManifest_descriptor; - } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest getDefaultInstanceForType() { - return chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.getDefaultInstance(); - } - - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest build() { - chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - @java.lang.Override - public chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest buildPartial() { - chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest result = new chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (installOperationsBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { - installOperations_ = java.util.Collections.unmodifiableList(installOperations_); - bitField0_ = (bitField0_ & ~0x00000001); - } - result.installOperations_ = installOperations_; - } else { - result.installOperations_ = installOperationsBuilder_.build(); - } - if (kernelInstallOperationsBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0)) { - kernelInstallOperations_ = java.util.Collections.unmodifiableList(kernelInstallOperations_); - bitField0_ = (bitField0_ & ~0x00000002); - } - result.kernelInstallOperations_ = kernelInstallOperations_; - } else { - result.kernelInstallOperations_ = kernelInstallOperationsBuilder_.build(); - } - if (((from_bitField0_ & 0x00000004) != 0)) { - to_bitField0_ |= 0x00000001; - } - result.blockSize_ = blockSize_; - if (((from_bitField0_ & 0x00000008) != 0)) { - result.signaturesOffset_ = signaturesOffset_; - to_bitField0_ |= 0x00000002; - } - if (((from_bitField0_ & 0x00000010) != 0)) { - result.signaturesSize_ = signaturesSize_; - to_bitField0_ |= 0x00000004; - } - if (((from_bitField0_ & 0x00000020) != 0)) { - if (oldKernelInfoBuilder_ == null) { - result.oldKernelInfo_ = oldKernelInfo_; - } else { - result.oldKernelInfo_ = oldKernelInfoBuilder_.build(); - } - to_bitField0_ |= 0x00000008; - } - if (((from_bitField0_ & 0x00000040) != 0)) { - if (newKernelInfoBuilder_ == null) { - result.newKernelInfo_ = newKernelInfo_; - } else { - result.newKernelInfo_ = newKernelInfoBuilder_.build(); - } - to_bitField0_ |= 0x00000010; - } - if (((from_bitField0_ & 0x00000080) != 0)) { - if (oldRootfsInfoBuilder_ == null) { - result.oldRootfsInfo_ = oldRootfsInfo_; - } else { - result.oldRootfsInfo_ = oldRootfsInfoBuilder_.build(); - } - to_bitField0_ |= 0x00000020; - } - if (((from_bitField0_ & 0x00000100) != 0)) { - if (newRootfsInfoBuilder_ == null) { - result.newRootfsInfo_ = newRootfsInfo_; - } else { - result.newRootfsInfo_ = newRootfsInfoBuilder_.build(); - } - to_bitField0_ |= 0x00000040; - } - if (((from_bitField0_ & 0x00000200) != 0)) { - if (oldImageInfoBuilder_ == null) { - result.oldImageInfo_ = oldImageInfo_; - } else { - result.oldImageInfo_ = oldImageInfoBuilder_.build(); - } - to_bitField0_ |= 0x00000080; - } - if (((from_bitField0_ & 0x00000400) != 0)) { - if (newImageInfoBuilder_ == null) { - result.newImageInfo_ = newImageInfo_; - } else { - result.newImageInfo_ = newImageInfoBuilder_.build(); - } - to_bitField0_ |= 0x00000100; - } - if (((from_bitField0_ & 0x00000800) != 0)) { - result.minorVersion_ = minorVersion_; - to_bitField0_ |= 0x00000200; - } - if (partitionsBuilder_ == null) { - if (((bitField0_ & 0x00001000) != 0)) { - partitions_ = java.util.Collections.unmodifiableList(partitions_); - bitField0_ = (bitField0_ & ~0x00001000); - } - result.partitions_ = partitions_; - } else { - result.partitions_ = partitionsBuilder_.build(); - } - if (((from_bitField0_ & 0x00002000) != 0)) { - result.maxTimestamp_ = maxTimestamp_; - to_bitField0_ |= 0x00000400; - } - if (((from_bitField0_ & 0x00004000) != 0)) { - if (dynamicPartitionMetadataBuilder_ == null) { - result.dynamicPartitionMetadata_ = dynamicPartitionMetadata_; - } else { - result.dynamicPartitionMetadata_ = dynamicPartitionMetadataBuilder_.build(); - } - to_bitField0_ |= 0x00000800; - } - if (((from_bitField0_ & 0x00008000) != 0)) { - result.partialUpdate_ = partialUpdate_; - to_bitField0_ |= 0x00001000; - } - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } + private int bitField0_; + public static final int BLOCK_SIZE_FIELD_NUMBER = 3; + private int blockSize_ = 4096; + /** + *
+     * (At time of writing) usually 4096
+     * 
+ * + * optional uint32 block_size = 3 [default = 4096]; + * @return Whether the blockSize field is set. + */ + @java.lang.Override + public boolean hasBlockSize() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+     * (At time of writing) usually 4096
+     * 
+ * + * optional uint32 block_size = 3 [default = 4096]; + * @return The blockSize. + */ + @java.lang.Override + public int getBlockSize() { + return blockSize_; + } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - @java.lang.Override - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.setField(field, value); - } - @java.lang.Override - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - @java.lang.Override - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - @java.lang.Override - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - @java.lang.Override - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.addRepeatedField(field, value); - } - @java.lang.Override - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest) { - return mergeFrom((chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest)other); - } else { - super.mergeFrom(other); - return this; - } - } + public static final int SIGNATURES_OFFSET_FIELD_NUMBER = 4; + private long signaturesOffset_ = 0L; + /** + *
+     * If signatures are present, the offset into the blobs, generally
+     * tacked onto the end of the file, and the length. We use an offset
+     * rather than a bool to allow for more flexibility in future file formats.
+     * If either is absent, it means signatures aren't supported in this
+     * file.
+     * 
+ * + * optional uint64 signatures_offset = 4; + * @return Whether the signaturesOffset field is set. + */ + @java.lang.Override + public boolean hasSignaturesOffset() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + *
+     * If signatures are present, the offset into the blobs, generally
+     * tacked onto the end of the file, and the length. We use an offset
+     * rather than a bool to allow for more flexibility in future file formats.
+     * If either is absent, it means signatures aren't supported in this
+     * file.
+     * 
+ * + * optional uint64 signatures_offset = 4; + * @return The signaturesOffset. + */ + @java.lang.Override + public long getSignaturesOffset() { + return signaturesOffset_; + } - public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest other) { - if (other == chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.getDefaultInstance()) return this; - if (installOperationsBuilder_ == null) { - if (!other.installOperations_.isEmpty()) { - if (installOperations_.isEmpty()) { - installOperations_ = other.installOperations_; - bitField0_ = (bitField0_ & ~0x00000001); - } else { - ensureInstallOperationsIsMutable(); - installOperations_.addAll(other.installOperations_); - } - onChanged(); - } - } else { - if (!other.installOperations_.isEmpty()) { - if (installOperationsBuilder_.isEmpty()) { - installOperationsBuilder_.dispose(); - installOperationsBuilder_ = null; - installOperations_ = other.installOperations_; - bitField0_ = (bitField0_ & ~0x00000001); - installOperationsBuilder_ = - com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getInstallOperationsFieldBuilder() : null; - } else { - installOperationsBuilder_.addAllMessages(other.installOperations_); - } - } - } - if (kernelInstallOperationsBuilder_ == null) { - if (!other.kernelInstallOperations_.isEmpty()) { - if (kernelInstallOperations_.isEmpty()) { - kernelInstallOperations_ = other.kernelInstallOperations_; - bitField0_ = (bitField0_ & ~0x00000002); - } else { - ensureKernelInstallOperationsIsMutable(); - kernelInstallOperations_.addAll(other.kernelInstallOperations_); - } - onChanged(); - } - } else { - if (!other.kernelInstallOperations_.isEmpty()) { - if (kernelInstallOperationsBuilder_.isEmpty()) { - kernelInstallOperationsBuilder_.dispose(); - kernelInstallOperationsBuilder_ = null; - kernelInstallOperations_ = other.kernelInstallOperations_; - bitField0_ = (bitField0_ & ~0x00000002); - kernelInstallOperationsBuilder_ = - com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getKernelInstallOperationsFieldBuilder() : null; - } else { - kernelInstallOperationsBuilder_.addAllMessages(other.kernelInstallOperations_); - } - } - } - if (other.hasBlockSize()) { - setBlockSize(other.getBlockSize()); - } - if (other.hasSignaturesOffset()) { - setSignaturesOffset(other.getSignaturesOffset()); - } - if (other.hasSignaturesSize()) { - setSignaturesSize(other.getSignaturesSize()); - } - if (other.hasOldKernelInfo()) { - mergeOldKernelInfo(other.getOldKernelInfo()); - } - if (other.hasNewKernelInfo()) { - mergeNewKernelInfo(other.getNewKernelInfo()); - } - if (other.hasOldRootfsInfo()) { - mergeOldRootfsInfo(other.getOldRootfsInfo()); - } - if (other.hasNewRootfsInfo()) { - mergeNewRootfsInfo(other.getNewRootfsInfo()); - } - if (other.hasOldImageInfo()) { - mergeOldImageInfo(other.getOldImageInfo()); - } - if (other.hasNewImageInfo()) { - mergeNewImageInfo(other.getNewImageInfo()); - } - if (other.hasMinorVersion()) { - setMinorVersion(other.getMinorVersion()); - } - if (partitionsBuilder_ == null) { - if (!other.partitions_.isEmpty()) { - if (partitions_.isEmpty()) { - partitions_ = other.partitions_; - bitField0_ = (bitField0_ & ~0x00001000); - } else { - ensurePartitionsIsMutable(); - partitions_.addAll(other.partitions_); - } - onChanged(); - } - } else { - if (!other.partitions_.isEmpty()) { - if (partitionsBuilder_.isEmpty()) { - partitionsBuilder_.dispose(); - partitionsBuilder_ = null; - partitions_ = other.partitions_; - bitField0_ = (bitField0_ & ~0x00001000); - partitionsBuilder_ = - com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getPartitionsFieldBuilder() : null; - } else { - partitionsBuilder_.addAllMessages(other.partitions_); - } - } - } - if (other.hasMaxTimestamp()) { - setMaxTimestamp(other.getMaxTimestamp()); - } - if (other.hasDynamicPartitionMetadata()) { - mergeDynamicPartitionMetadata(other.getDynamicPartitionMetadata()); - } - if (other.hasPartialUpdate()) { - setPartialUpdate(other.getPartialUpdate()); - } - this.mergeUnknownFields(other.unknownFields); - onChanged(); - return this; - } + public static final int SIGNATURES_SIZE_FIELD_NUMBER = 5; + private long signaturesSize_ = 0L; + /** + * optional uint64 signatures_size = 5; + * @return Whether the signaturesSize field is set. + */ + @java.lang.Override + public boolean hasSignaturesSize() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * optional uint64 signatures_size = 5; + * @return The signaturesSize. + */ + @java.lang.Override + public long getSignaturesSize() { + return signaturesSize_; + } - @java.lang.Override - public final boolean isInitialized() { - for (int i = 0; i < getInstallOperationsCount(); i++) { - if (!getInstallOperations(i).isInitialized()) { - return false; - } - } - for (int i = 0; i < getKernelInstallOperationsCount(); i++) { - if (!getKernelInstallOperations(i).isInitialized()) { - return false; - } - } - for (int i = 0; i < getPartitionsCount(); i++) { - if (!getPartitions(i).isInitialized()) { - return false; - } - } - if (hasDynamicPartitionMetadata()) { - if (!getDynamicPartitionMetadata().isInitialized()) { - return false; - } - } - return true; - } + public static final int MINOR_VERSION_FIELD_NUMBER = 12; + private int minorVersion_ = 0; + /** + *
+     * The minor version, also referred as "delta version", of the payload.
+     * Minor version 0 is full payload, everything else is delta payload.
+     * 
+ * + * optional uint32 minor_version = 12 [default = 0]; + * @return Whether the minorVersion field is set. + */ + @java.lang.Override + public boolean hasMinorVersion() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + *
+     * The minor version, also referred as "delta version", of the payload.
+     * Minor version 0 is full payload, everything else is delta payload.
+     * 
+ * + * optional uint32 minor_version = 12 [default = 0]; + * @return The minorVersion. + */ + @java.lang.Override + public int getMinorVersion() { + return minorVersion_; + } + + public static final int PARTITIONS_FIELD_NUMBER = 13; + @SuppressWarnings("serial") + private java.util.List partitions_; + /** + *
+     * Only present in major version >= 2. List of partitions that will be
+     * updated, in the order they will be updated. This field replaces the
+     * |install_operations|, |kernel_install_operations| and the
+     * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+     * array can have more than two partitions if needed, and they are identified
+     * by the partition name.
+     * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + */ + @java.lang.Override + public java.util.List getPartitionsList() { + return partitions_; + } + /** + *
+     * Only present in major version >= 2. List of partitions that will be
+     * updated, in the order they will be updated. This field replaces the
+     * |install_operations|, |kernel_install_operations| and the
+     * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+     * array can have more than two partitions if needed, and they are identified
+     * by the partition name.
+     * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + */ + @java.lang.Override + public java.util.List + getPartitionsOrBuilderList() { + return partitions_; + } + /** + *
+     * Only present in major version >= 2. List of partitions that will be
+     * updated, in the order they will be updated. This field replaces the
+     * |install_operations|, |kernel_install_operations| and the
+     * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+     * array can have more than two partitions if needed, and they are identified
+     * by the partition name.
+     * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + */ + @java.lang.Override + public int getPartitionsCount() { + return partitions_.size(); + } + /** + *
+     * Only present in major version >= 2. List of partitions that will be
+     * updated, in the order they will be updated. This field replaces the
+     * |install_operations|, |kernel_install_operations| and the
+     * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+     * array can have more than two partitions if needed, and they are identified
+     * by the partition name.
+     * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.PartitionUpdate getPartitions(int index) { + return partitions_.get(index); + } + /** + *
+     * Only present in major version >= 2. List of partitions that will be
+     * updated, in the order they will be updated. This field replaces the
+     * |install_operations|, |kernel_install_operations| and the
+     * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+     * array can have more than two partitions if needed, and they are identified
+     * by the partition name.
+     * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder getPartitionsOrBuilder( + int index) { + return partitions_.get(index); + } - @java.lang.Override - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; + public static final int MAX_TIMESTAMP_FIELD_NUMBER = 14; + private long maxTimestamp_ = 0L; + /** + *
+     * The maximum timestamp of the OS allowed to apply this payload.
+     * Can be used to prevent downgrading the OS.
+     * 
+ * + * optional int64 max_timestamp = 14; + * @return Whether the maxTimestamp field is set. + */ + @java.lang.Override + public boolean hasMaxTimestamp() { + return ((bitField0_ & 0x00000010) != 0); + } + /** + *
+     * The maximum timestamp of the OS allowed to apply this payload.
+     * Can be used to prevent downgrading the OS.
+     * 
+ * + * optional int64 max_timestamp = 14; + * @return The maxTimestamp. + */ + @java.lang.Override + public long getMaxTimestamp() { + return maxTimestamp_; + } - private java.util.List installOperations_ = - java.util.Collections.emptyList(); - private void ensureInstallOperationsIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { - installOperations_ = new java.util.ArrayList(installOperations_); - bitField0_ |= 0x00000001; - } - } + public static final int DYNAMIC_PARTITION_METADATA_FIELD_NUMBER = 15; + private chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata dynamicPartitionMetadata_; + /** + *
+     * Metadata related to all dynamic partitions.
+     * 
+ * + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * @return Whether the dynamicPartitionMetadata field is set. + */ + @java.lang.Override + public boolean hasDynamicPartitionMetadata() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + *
+     * Metadata related to all dynamic partitions.
+     * 
+ * + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * @return The dynamicPartitionMetadata. + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDynamicPartitionMetadata() { + return dynamicPartitionMetadata_ == null ? chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance() : dynamicPartitionMetadata_; + } + /** + *
+     * Metadata related to all dynamic partitions.
+     * 
+ * + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder getDynamicPartitionMetadataOrBuilder() { + return dynamicPartitionMetadata_ == null ? chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance() : dynamicPartitionMetadata_; + } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder> installOperationsBuilder_; + public static final int PARTIAL_UPDATE_FIELD_NUMBER = 16; + private boolean partialUpdate_ = false; + /** + *
+     * If the payload only updates a subset of partitions on the device.
+     * 
+ * + * optional bool partial_update = 16; + * @return Whether the partialUpdate field is set. + */ + @java.lang.Override + public boolean hasPartialUpdate() { + return ((bitField0_ & 0x00000040) != 0); + } + /** + *
+     * If the payload only updates a subset of partitions on the device.
+     * 
+ * + * optional bool partial_update = 16; + * @return The partialUpdate. + */ + @java.lang.Override + public boolean getPartialUpdate() { + return partialUpdate_; + } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public java.util.List getInstallOperationsList() { - if (installOperationsBuilder_ == null) { - return java.util.Collections.unmodifiableList(installOperations_); - } else { - return installOperationsBuilder_.getMessageList(); - } - } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public int getInstallOperationsCount() { - if (installOperationsBuilder_ == null) { - return installOperations_.size(); - } else { - return installOperationsBuilder_.getCount(); - } - } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation getInstallOperations(int index) { - if (installOperationsBuilder_ == null) { - return installOperations_.get(index); - } else { - return installOperationsBuilder_.getMessage(index); - } - } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public Builder setInstallOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation value) { - if (installOperationsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureInstallOperationsIsMutable(); - installOperations_.set(index, value); - onChanged(); - } else { - installOperationsBuilder_.setMessage(index, value); - } - return this; - } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public Builder setInstallOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { - if (installOperationsBuilder_ == null) { - ensureInstallOperationsIsMutable(); - installOperations_.set(index, builderForValue.build()); - onChanged(); - } else { - installOperationsBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public Builder addInstallOperations(chromeos_update_engine.UpdateMetadata.InstallOperation value) { - if (installOperationsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureInstallOperationsIsMutable(); - installOperations_.add(value); - onChanged(); - } else { - installOperationsBuilder_.addMessage(value); - } - return this; - } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public Builder addInstallOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation value) { - if (installOperationsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureInstallOperationsIsMutable(); - installOperations_.add(index, value); - onChanged(); - } else { - installOperationsBuilder_.addMessage(index, value); + public static final int APEX_INFO_FIELD_NUMBER = 17; + @SuppressWarnings("serial") + private java.util.List apexInfo_; + /** + *
+     * Information on compressed APEX to figure out how much space is required for
+     * their decompression
+     * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + @java.lang.Override + public java.util.List getApexInfoList() { + return apexInfo_; + } + /** + *
+     * Information on compressed APEX to figure out how much space is required for
+     * their decompression
+     * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + @java.lang.Override + public java.util.List + getApexInfoOrBuilderList() { + return apexInfo_; + } + /** + *
+     * Information on compressed APEX to figure out how much space is required for
+     * their decompression
+     * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + @java.lang.Override + public int getApexInfoCount() { + return apexInfo_.size(); + } + /** + *
+     * Information on compressed APEX to figure out how much space is required for
+     * their decompression
+     * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ApexInfo getApexInfo(int index) { + return apexInfo_.get(index); + } + /** + *
+     * Information on compressed APEX to figure out how much space is required for
+     * their decompression
+     * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder getApexInfoOrBuilder( + int index) { + return apexInfo_.get(index); + } + + public static final int SECURITY_PATCH_LEVEL_FIELD_NUMBER = 18; + @SuppressWarnings("serial") + private volatile java.lang.Object securityPatchLevel_ = ""; + /** + *
+     * Security patch level of the device, usually in the format of
+     * yyyy-mm-dd
+     * 
+ * + * optional string security_patch_level = 18; + * @return Whether the securityPatchLevel field is set. + */ + @java.lang.Override + public boolean hasSecurityPatchLevel() { + return ((bitField0_ & 0x00000080) != 0); + } + /** + *
+     * Security patch level of the device, usually in the format of
+     * yyyy-mm-dd
+     * 
+ * + * optional string security_patch_level = 18; + * @return The securityPatchLevel. + */ + @java.lang.Override + public java.lang.String getSecurityPatchLevel() { + java.lang.Object ref = securityPatchLevel_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + securityPatchLevel_ = s; } - return this; + return s; } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public Builder addInstallOperations( - chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { - if (installOperationsBuilder_ == null) { - ensureInstallOperationsIsMutable(); - installOperations_.add(builderForValue.build()); - onChanged(); - } else { - installOperationsBuilder_.addMessage(builderForValue.build()); - } - return this; + } + /** + *
+     * Security patch level of the device, usually in the format of
+     * yyyy-mm-dd
+     * 
+ * + * optional string security_patch_level = 18; + * @return The bytes for securityPatchLevel. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSecurityPatchLevelBytes() { + java.lang.Object ref = securityPatchLevel_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + securityPatchLevel_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public Builder addInstallOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { - if (installOperationsBuilder_ == null) { - ensureInstallOperationsIsMutable(); - installOperations_.add(index, builderForValue.build()); - onChanged(); - } else { - installOperationsBuilder_.addMessage(index, builderForValue.build()); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + for (int i = 0; i < getPartitionsCount(); i++) { + if (!getPartitions(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; } - return this; } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public Builder addAllInstallOperations( - java.lang.Iterable values) { - if (installOperationsBuilder_ == null) { - ensureInstallOperationsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, installOperations_); - onChanged(); - } else { - installOperationsBuilder_.addAllMessages(values); + if (hasDynamicPartitionMetadata()) { + if (!getDynamicPartitionMetadata().isInitialized()) { + memoizedIsInitialized = 0; + return false; } - return this; } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public Builder clearInstallOperations() { - if (installOperationsBuilder_ == null) { - installOperations_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); - onChanged(); - } else { - installOperationsBuilder_.clear(); - } - return this; + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeUInt32(3, blockSize_); } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public Builder removeInstallOperations(int index) { - if (installOperationsBuilder_ == null) { - ensureInstallOperationsIsMutable(); - installOperations_.remove(index); - onChanged(); - } else { - installOperationsBuilder_.remove(index); - } - return this; + if (((bitField0_ & 0x00000002) != 0)) { + output.writeUInt64(4, signaturesOffset_); } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder getInstallOperationsBuilder( - int index) { - return getInstallOperationsFieldBuilder().getBuilder(index); + if (((bitField0_ & 0x00000004) != 0)) { + output.writeUInt64(5, signaturesSize_); } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder getInstallOperationsOrBuilder( - int index) { - if (installOperationsBuilder_ == null) { - return installOperations_.get(index); } else { - return installOperationsBuilder_.getMessageOrBuilder(index); - } + if (((bitField0_ & 0x00000008) != 0)) { + output.writeUInt32(12, minorVersion_); } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public java.util.List - getInstallOperationsOrBuilderList() { - if (installOperationsBuilder_ != null) { - return installOperationsBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(installOperations_); - } + for (int i = 0; i < partitions_.size(); i++) { + output.writeMessage(13, partitions_.get(i)); } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder addInstallOperationsBuilder() { - return getInstallOperationsFieldBuilder().addBuilder( - chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance()); + if (((bitField0_ & 0x00000010) != 0)) { + output.writeInt64(14, maxTimestamp_); } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder addInstallOperationsBuilder( - int index) { - return getInstallOperationsFieldBuilder().addBuilder( - index, chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance()); + if (((bitField0_ & 0x00000020) != 0)) { + output.writeMessage(15, getDynamicPartitionMetadata()); } - /** - *
-       * Only present in major version = 1. List of install operations for the
-       * kernel and rootfs partitions. For major version = 2 see the |partitions|
-       * field.
-       * 
- * - * repeated .chromeos_update_engine.InstallOperation install_operations = 1; - */ - public java.util.List - getInstallOperationsBuilderList() { - return getInstallOperationsFieldBuilder().getBuilderList(); + if (((bitField0_ & 0x00000040) != 0)) { + output.writeBool(16, partialUpdate_); } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder> - getInstallOperationsFieldBuilder() { - if (installOperationsBuilder_ == null) { - installOperationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder>( - installOperations_, - ((bitField0_ & 0x00000001) != 0), - getParentForChildren(), - isClean()); - installOperations_ = null; - } - return installOperationsBuilder_; + for (int i = 0; i < apexInfo_.size(); i++) { + output.writeMessage(17, apexInfo_.get(i)); } - - private java.util.List kernelInstallOperations_ = - java.util.Collections.emptyList(); - private void ensureKernelInstallOperationsIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { - kernelInstallOperations_ = new java.util.ArrayList(kernelInstallOperations_); - bitField0_ |= 0x00000002; - } + if (((bitField0_ & 0x00000080) != 0)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 18, securityPatchLevel_); } + getUnknownFields().writeTo(output); + } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder> kernelInstallOperationsBuilder_; + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public java.util.List getKernelInstallOperationsList() { - if (kernelInstallOperationsBuilder_ == null) { - return java.util.Collections.unmodifiableList(kernelInstallOperations_); - } else { - return kernelInstallOperationsBuilder_.getMessageList(); - } + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, blockSize_); } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public int getKernelInstallOperationsCount() { - if (kernelInstallOperationsBuilder_ == null) { - return kernelInstallOperations_.size(); - } else { - return kernelInstallOperationsBuilder_.getCount(); - } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(4, signaturesOffset_); } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation getKernelInstallOperations(int index) { - if (kernelInstallOperationsBuilder_ == null) { - return kernelInstallOperations_.get(index); - } else { - return kernelInstallOperationsBuilder_.getMessage(index); - } + if (((bitField0_ & 0x00000004) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(5, signaturesSize_); } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public Builder setKernelInstallOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation value) { - if (kernelInstallOperationsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureKernelInstallOperationsIsMutable(); - kernelInstallOperations_.set(index, value); - onChanged(); - } else { - kernelInstallOperationsBuilder_.setMessage(index, value); - } - return this; + if (((bitField0_ & 0x00000008) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(12, minorVersion_); } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public Builder setKernelInstallOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { - if (kernelInstallOperationsBuilder_ == null) { - ensureKernelInstallOperationsIsMutable(); - kernelInstallOperations_.set(index, builderForValue.build()); - onChanged(); - } else { - kernelInstallOperationsBuilder_.setMessage(index, builderForValue.build()); - } - return this; + for (int i = 0; i < partitions_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(13, partitions_.get(i)); + } + if (((bitField0_ & 0x00000010) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(14, maxTimestamp_); } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public Builder addKernelInstallOperations(chromeos_update_engine.UpdateMetadata.InstallOperation value) { - if (kernelInstallOperationsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureKernelInstallOperationsIsMutable(); - kernelInstallOperations_.add(value); - onChanged(); - } else { - kernelInstallOperationsBuilder_.addMessage(value); - } - return this; + if (((bitField0_ & 0x00000020) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(15, getDynamicPartitionMetadata()); } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public Builder addKernelInstallOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation value) { - if (kernelInstallOperationsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureKernelInstallOperationsIsMutable(); - kernelInstallOperations_.add(index, value); - onChanged(); - } else { - kernelInstallOperationsBuilder_.addMessage(index, value); - } - return this; + if (((bitField0_ & 0x00000040) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(16, partialUpdate_); } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public Builder addKernelInstallOperations( - chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { - if (kernelInstallOperationsBuilder_ == null) { - ensureKernelInstallOperationsIsMutable(); - kernelInstallOperations_.add(builderForValue.build()); - onChanged(); - } else { - kernelInstallOperationsBuilder_.addMessage(builderForValue.build()); - } - return this; + for (int i = 0; i < apexInfo_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(17, apexInfo_.get(i)); } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public Builder addKernelInstallOperations( - int index, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder builderForValue) { - if (kernelInstallOperationsBuilder_ == null) { - ensureKernelInstallOperationsIsMutable(); - kernelInstallOperations_.add(index, builderForValue.build()); - onChanged(); - } else { - kernelInstallOperationsBuilder_.addMessage(index, builderForValue.build()); - } - return this; + if (((bitField0_ & 0x00000080) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(18, securityPatchLevel_); } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public Builder addAllKernelInstallOperations( - java.lang.Iterable values) { - if (kernelInstallOperationsBuilder_ == null) { - ensureKernelInstallOperationsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, kernelInstallOperations_); - onChanged(); - } else { - kernelInstallOperationsBuilder_.addAllMessages(values); - } - return this; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public Builder clearKernelInstallOperations() { - if (kernelInstallOperationsBuilder_ == null) { - kernelInstallOperations_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); - onChanged(); - } else { - kernelInstallOperationsBuilder_.clear(); - } - return this; + if (!(obj instanceof chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest)) { + return super.equals(obj); } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public Builder removeKernelInstallOperations(int index) { - if (kernelInstallOperationsBuilder_ == null) { - ensureKernelInstallOperationsIsMutable(); - kernelInstallOperations_.remove(index); - onChanged(); - } else { - kernelInstallOperationsBuilder_.remove(index); - } - return this; + chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest other = (chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest) obj; + + if (hasBlockSize() != other.hasBlockSize()) return false; + if (hasBlockSize()) { + if (getBlockSize() + != other.getBlockSize()) return false; } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder getKernelInstallOperationsBuilder( - int index) { - return getKernelInstallOperationsFieldBuilder().getBuilder(index); + if (hasSignaturesOffset() != other.hasSignaturesOffset()) return false; + if (hasSignaturesOffset()) { + if (getSignaturesOffset() + != other.getSignaturesOffset()) return false; } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder getKernelInstallOperationsOrBuilder( - int index) { - if (kernelInstallOperationsBuilder_ == null) { - return kernelInstallOperations_.get(index); } else { - return kernelInstallOperationsBuilder_.getMessageOrBuilder(index); - } + if (hasSignaturesSize() != other.hasSignaturesSize()) return false; + if (hasSignaturesSize()) { + if (getSignaturesSize() + != other.getSignaturesSize()) return false; } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public java.util.List - getKernelInstallOperationsOrBuilderList() { - if (kernelInstallOperationsBuilder_ != null) { - return kernelInstallOperationsBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(kernelInstallOperations_); - } + if (hasMinorVersion() != other.hasMinorVersion()) return false; + if (hasMinorVersion()) { + if (getMinorVersion() + != other.getMinorVersion()) return false; } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder addKernelInstallOperationsBuilder() { - return getKernelInstallOperationsFieldBuilder().addBuilder( - chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance()); + if (!getPartitionsList() + .equals(other.getPartitionsList())) return false; + if (hasMaxTimestamp() != other.hasMaxTimestamp()) return false; + if (hasMaxTimestamp()) { + if (getMaxTimestamp() + != other.getMaxTimestamp()) return false; } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public chromeos_update_engine.UpdateMetadata.InstallOperation.Builder addKernelInstallOperationsBuilder( - int index) { - return getKernelInstallOperationsFieldBuilder().addBuilder( - index, chromeos_update_engine.UpdateMetadata.InstallOperation.getDefaultInstance()); + if (hasDynamicPartitionMetadata() != other.hasDynamicPartitionMetadata()) return false; + if (hasDynamicPartitionMetadata()) { + if (!getDynamicPartitionMetadata() + .equals(other.getDynamicPartitionMetadata())) return false; } - /** - * repeated .chromeos_update_engine.InstallOperation kernel_install_operations = 2; - */ - public java.util.List - getKernelInstallOperationsBuilderList() { - return getKernelInstallOperationsFieldBuilder().getBuilderList(); + if (hasPartialUpdate() != other.hasPartialUpdate()) return false; + if (hasPartialUpdate()) { + if (getPartialUpdate() + != other.getPartialUpdate()) return false; } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder> - getKernelInstallOperationsFieldBuilder() { - if (kernelInstallOperationsBuilder_ == null) { - kernelInstallOperationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.InstallOperation, chromeos_update_engine.UpdateMetadata.InstallOperation.Builder, chromeos_update_engine.UpdateMetadata.InstallOperationOrBuilder>( - kernelInstallOperations_, - ((bitField0_ & 0x00000002) != 0), - getParentForChildren(), - isClean()); - kernelInstallOperations_ = null; - } - return kernelInstallOperationsBuilder_; + if (!getApexInfoList() + .equals(other.getApexInfoList())) return false; + if (hasSecurityPatchLevel() != other.hasSecurityPatchLevel()) return false; + if (hasSecurityPatchLevel()) { + if (!getSecurityPatchLevel() + .equals(other.getSecurityPatchLevel())) return false; } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } - private int blockSize_ = 4096; - /** - *
-       * (At time of writing) usually 4096
-       * 
- * - * optional uint32 block_size = 3 [default = 4096]; - * @return Whether the blockSize field is set. - */ - @java.lang.Override - public boolean hasBlockSize() { - return ((bitField0_ & 0x00000004) != 0); - } - /** - *
-       * (At time of writing) usually 4096
-       * 
- * - * optional uint32 block_size = 3 [default = 4096]; - * @return The blockSize. - */ - @java.lang.Override - public int getBlockSize() { - return blockSize_; + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; } - /** - *
-       * (At time of writing) usually 4096
-       * 
- * - * optional uint32 block_size = 3 [default = 4096]; - * @param value The blockSize to set. - * @return This builder for chaining. - */ - public Builder setBlockSize(int value) { - bitField0_ |= 0x00000004; - blockSize_ = value; - onChanged(); - return this; + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasBlockSize()) { + hash = (37 * hash) + BLOCK_SIZE_FIELD_NUMBER; + hash = (53 * hash) + getBlockSize(); } - /** - *
-       * (At time of writing) usually 4096
-       * 
- * - * optional uint32 block_size = 3 [default = 4096]; - * @return This builder for chaining. - */ - public Builder clearBlockSize() { - bitField0_ = (bitField0_ & ~0x00000004); - blockSize_ = 4096; - onChanged(); - return this; + if (hasSignaturesOffset()) { + hash = (37 * hash) + SIGNATURES_OFFSET_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getSignaturesOffset()); } - - private long signaturesOffset_ ; - /** - *
-       * If signatures are present, the offset into the blobs, generally
-       * tacked onto the end of the file, and the length. We use an offset
-       * rather than a bool to allow for more flexibility in future file formats.
-       * If either is absent, it means signatures aren't supported in this
-       * file.
-       * 
- * - * optional uint64 signatures_offset = 4; - * @return Whether the signaturesOffset field is set. - */ - @java.lang.Override - public boolean hasSignaturesOffset() { - return ((bitField0_ & 0x00000008) != 0); + if (hasSignaturesSize()) { + hash = (37 * hash) + SIGNATURES_SIZE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getSignaturesSize()); } - /** - *
-       * If signatures are present, the offset into the blobs, generally
-       * tacked onto the end of the file, and the length. We use an offset
-       * rather than a bool to allow for more flexibility in future file formats.
-       * If either is absent, it means signatures aren't supported in this
-       * file.
-       * 
- * - * optional uint64 signatures_offset = 4; - * @return The signaturesOffset. - */ - @java.lang.Override - public long getSignaturesOffset() { - return signaturesOffset_; + if (hasMinorVersion()) { + hash = (37 * hash) + MINOR_VERSION_FIELD_NUMBER; + hash = (53 * hash) + getMinorVersion(); } - /** - *
-       * If signatures are present, the offset into the blobs, generally
-       * tacked onto the end of the file, and the length. We use an offset
-       * rather than a bool to allow for more flexibility in future file formats.
-       * If either is absent, it means signatures aren't supported in this
-       * file.
-       * 
- * - * optional uint64 signatures_offset = 4; - * @param value The signaturesOffset to set. - * @return This builder for chaining. - */ - public Builder setSignaturesOffset(long value) { - bitField0_ |= 0x00000008; - signaturesOffset_ = value; - onChanged(); - return this; + if (getPartitionsCount() > 0) { + hash = (37 * hash) + PARTITIONS_FIELD_NUMBER; + hash = (53 * hash) + getPartitionsList().hashCode(); } - /** - *
-       * If signatures are present, the offset into the blobs, generally
-       * tacked onto the end of the file, and the length. We use an offset
-       * rather than a bool to allow for more flexibility in future file formats.
-       * If either is absent, it means signatures aren't supported in this
-       * file.
-       * 
- * - * optional uint64 signatures_offset = 4; - * @return This builder for chaining. - */ - public Builder clearSignaturesOffset() { - bitField0_ = (bitField0_ & ~0x00000008); - signaturesOffset_ = 0L; - onChanged(); - return this; + if (hasMaxTimestamp()) { + hash = (37 * hash) + MAX_TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getMaxTimestamp()); } - - private long signaturesSize_ ; - /** - * optional uint64 signatures_size = 5; - * @return Whether the signaturesSize field is set. - */ - @java.lang.Override - public boolean hasSignaturesSize() { - return ((bitField0_ & 0x00000010) != 0); + if (hasDynamicPartitionMetadata()) { + hash = (37 * hash) + DYNAMIC_PARTITION_METADATA_FIELD_NUMBER; + hash = (53 * hash) + getDynamicPartitionMetadata().hashCode(); } - /** - * optional uint64 signatures_size = 5; - * @return The signaturesSize. - */ - @java.lang.Override - public long getSignaturesSize() { - return signaturesSize_; + if (hasPartialUpdate()) { + hash = (37 * hash) + PARTIAL_UPDATE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getPartialUpdate()); } - /** - * optional uint64 signatures_size = 5; - * @param value The signaturesSize to set. - * @return This builder for chaining. - */ - public Builder setSignaturesSize(long value) { - bitField0_ |= 0x00000010; - signaturesSize_ = value; - onChanged(); - return this; + if (getApexInfoCount() > 0) { + hash = (37 * hash) + APEX_INFO_FIELD_NUMBER; + hash = (53 * hash) + getApexInfoList().hashCode(); } - /** - * optional uint64 signatures_size = 5; - * @return This builder for chaining. - */ - public Builder clearSignaturesSize() { - bitField0_ = (bitField0_ & ~0x00000010); - signaturesSize_ = 0L; - onChanged(); - return this; + if (hasSecurityPatchLevel()) { + hash = (37 * hash) + SECURITY_PATCH_LEVEL_FIELD_NUMBER; + hash = (53 * hash) + getSecurityPatchLevel().hashCode(); } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } - private chromeos_update_engine.UpdateMetadata.PartitionInfo oldKernelInfo_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> oldKernelInfoBuilder_; - /** - *
-       * Only present in major version = 1. Partition metadata used to validate the
-       * update. For major version = 2 see the |partitions| field.
-       * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - * @return Whether the oldKernelInfo field is set. - */ - public boolean hasOldKernelInfo() { - return ((bitField0_ & 0x00000020) != 0); + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code chromeos_update_engine.DeltaArchiveManifest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:chromeos_update_engine.DeltaArchiveManifest) + chromeos_update_engine.UpdateMetadata.DeltaArchiveManifestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DeltaArchiveManifest_descriptor; } - /** - *
-       * Only present in major version = 1. Partition metadata used to validate the
-       * update. For major version = 2 see the |partitions| field.
-       * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - * @return The oldKernelInfo. - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo getOldKernelInfo() { - if (oldKernelInfoBuilder_ == null) { - return oldKernelInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldKernelInfo_; - } else { - return oldKernelInfoBuilder_.getMessage(); - } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DeltaArchiveManifest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.class, chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.Builder.class); } - /** - *
-       * Only present in major version = 1. Partition metadata used to validate the
-       * update. For major version = 2 see the |partitions| field.
-       * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - */ - public Builder setOldKernelInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (oldKernelInfoBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - oldKernelInfo_ = value; - onChanged(); - } else { - oldKernelInfoBuilder_.setMessage(value); - } - bitField0_ |= 0x00000020; - return this; + + // Construct using chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); } - /** - *
-       * Only present in major version = 1. Partition metadata used to validate the
-       * update. For major version = 2 see the |partitions| field.
-       * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - */ - public Builder setOldKernelInfo( - chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder builderForValue) { - if (oldKernelInfoBuilder_ == null) { - oldKernelInfo_ = builderForValue.build(); - onChanged(); - } else { - oldKernelInfoBuilder_.setMessage(builderForValue.build()); + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getPartitionsFieldBuilder(); + getDynamicPartitionMetadataFieldBuilder(); + getApexInfoFieldBuilder(); } - bitField0_ |= 0x00000020; - return this; } - /** - *
-       * Only present in major version = 1. Partition metadata used to validate the
-       * update. For major version = 2 see the |partitions| field.
-       * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - */ - public Builder mergeOldKernelInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (oldKernelInfoBuilder_ == null) { - if (((bitField0_ & 0x00000020) != 0) && - oldKernelInfo_ != null && - oldKernelInfo_ != chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance()) { - oldKernelInfo_ = - chromeos_update_engine.UpdateMetadata.PartitionInfo.newBuilder(oldKernelInfo_).mergeFrom(value).buildPartial(); - } else { - oldKernelInfo_ = value; - } - onChanged(); + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + blockSize_ = 4096; + signaturesOffset_ = 0L; + signaturesSize_ = 0L; + minorVersion_ = 0; + if (partitionsBuilder_ == null) { + partitions_ = java.util.Collections.emptyList(); } else { - oldKernelInfoBuilder_.mergeFrom(value); + partitions_ = null; + partitionsBuilder_.clear(); } - bitField0_ |= 0x00000020; - return this; - } - /** - *
-       * Only present in major version = 1. Partition metadata used to validate the
-       * update. For major version = 2 see the |partitions| field.
-       * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - */ - public Builder clearOldKernelInfo() { - if (oldKernelInfoBuilder_ == null) { - oldKernelInfo_ = null; - onChanged(); + bitField0_ = (bitField0_ & ~0x00000010); + maxTimestamp_ = 0L; + dynamicPartitionMetadata_ = null; + if (dynamicPartitionMetadataBuilder_ != null) { + dynamicPartitionMetadataBuilder_.dispose(); + dynamicPartitionMetadataBuilder_ = null; + } + partialUpdate_ = false; + if (apexInfoBuilder_ == null) { + apexInfo_ = java.util.Collections.emptyList(); } else { - oldKernelInfoBuilder_.clear(); + apexInfo_ = null; + apexInfoBuilder_.clear(); } - bitField0_ = (bitField0_ & ~0x00000020); + bitField0_ = (bitField0_ & ~0x00000100); + securityPatchLevel_ = ""; return this; } - /** - *
-       * Only present in major version = 1. Partition metadata used to validate the
-       * update. For major version = 2 see the |partitions| field.
-       * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder getOldKernelInfoBuilder() { - bitField0_ |= 0x00000020; - onChanged(); - return getOldKernelInfoFieldBuilder().getBuilder(); + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return chromeos_update_engine.UpdateMetadata.internal_static_chromeos_update_engine_DeltaArchiveManifest_descriptor; } - /** - *
-       * Only present in major version = 1. Partition metadata used to validate the
-       * update. For major version = 2 see the |partitions| field.
-       * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getOldKernelInfoOrBuilder() { - if (oldKernelInfoBuilder_ != null) { - return oldKernelInfoBuilder_.getMessageOrBuilder(); - } else { - return oldKernelInfo_ == null ? - chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldKernelInfo_; - } + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest getDefaultInstanceForType() { + return chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.getDefaultInstance(); } - /** - *
-       * Only present in major version = 1. Partition metadata used to validate the
-       * update. For major version = 2 see the |partitions| field.
-       * 
- * - * optional .chromeos_update_engine.PartitionInfo old_kernel_info = 6; - */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> - getOldKernelInfoFieldBuilder() { - if (oldKernelInfoBuilder_ == null) { - oldKernelInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder>( - getOldKernelInfo(), - getParentForChildren(), - isClean()); - oldKernelInfo_ = null; + + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest build() { + chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); } - return oldKernelInfoBuilder_; + return result; } - private chromeos_update_engine.UpdateMetadata.PartitionInfo newKernelInfo_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> newKernelInfoBuilder_; - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - * @return Whether the newKernelInfo field is set. - */ - public boolean hasNewKernelInfo() { - return ((bitField0_ & 0x00000040) != 0); + @java.lang.Override + public chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest buildPartial() { + chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest result = new chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; } - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - * @return The newKernelInfo. - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo getNewKernelInfo() { - if (newKernelInfoBuilder_ == null) { - return newKernelInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newKernelInfo_; + + private void buildPartialRepeatedFields(chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest result) { + if (partitionsBuilder_ == null) { + if (((bitField0_ & 0x00000010) != 0)) { + partitions_ = java.util.Collections.unmodifiableList(partitions_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.partitions_ = partitions_; } else { - return newKernelInfoBuilder_.getMessage(); + result.partitions_ = partitionsBuilder_.build(); } - } - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - */ - public Builder setNewKernelInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (newKernelInfoBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); + if (apexInfoBuilder_ == null) { + if (((bitField0_ & 0x00000100) != 0)) { + apexInfo_ = java.util.Collections.unmodifiableList(apexInfo_); + bitField0_ = (bitField0_ & ~0x00000100); } - newKernelInfo_ = value; - onChanged(); + result.apexInfo_ = apexInfo_; } else { - newKernelInfoBuilder_.setMessage(value); + result.apexInfo_ = apexInfoBuilder_.build(); } - bitField0_ |= 0x00000040; - return this; } - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - */ - public Builder setNewKernelInfo( - chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder builderForValue) { - if (newKernelInfoBuilder_ == null) { - newKernelInfo_ = builderForValue.build(); - onChanged(); - } else { - newKernelInfoBuilder_.setMessage(builderForValue.build()); + + private void buildPartial0(chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.blockSize_ = blockSize_; + to_bitField0_ |= 0x00000001; } - bitField0_ |= 0x00000040; - return this; - } - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - */ - public Builder mergeNewKernelInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (newKernelInfoBuilder_ == null) { - if (((bitField0_ & 0x00000040) != 0) && - newKernelInfo_ != null && - newKernelInfo_ != chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance()) { - newKernelInfo_ = - chromeos_update_engine.UpdateMetadata.PartitionInfo.newBuilder(newKernelInfo_).mergeFrom(value).buildPartial(); - } else { - newKernelInfo_ = value; - } - onChanged(); - } else { - newKernelInfoBuilder_.mergeFrom(value); + if (((from_bitField0_ & 0x00000002) != 0)) { + result.signaturesOffset_ = signaturesOffset_; + to_bitField0_ |= 0x00000002; } - bitField0_ |= 0x00000040; - return this; - } - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - */ - public Builder clearNewKernelInfo() { - if (newKernelInfoBuilder_ == null) { - newKernelInfo_ = null; - onChanged(); - } else { - newKernelInfoBuilder_.clear(); + if (((from_bitField0_ & 0x00000004) != 0)) { + result.signaturesSize_ = signaturesSize_; + to_bitField0_ |= 0x00000004; } - bitField0_ = (bitField0_ & ~0x00000040); - return this; - } - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder getNewKernelInfoBuilder() { - bitField0_ |= 0x00000040; - onChanged(); - return getNewKernelInfoFieldBuilder().getBuilder(); - } - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getNewKernelInfoOrBuilder() { - if (newKernelInfoBuilder_ != null) { - return newKernelInfoBuilder_.getMessageOrBuilder(); - } else { - return newKernelInfo_ == null ? - chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newKernelInfo_; + if (((from_bitField0_ & 0x00000008) != 0)) { + result.minorVersion_ = minorVersion_; + to_bitField0_ |= 0x00000008; } - } - /** - * optional .chromeos_update_engine.PartitionInfo new_kernel_info = 7; - */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> - getNewKernelInfoFieldBuilder() { - if (newKernelInfoBuilder_ == null) { - newKernelInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder>( - getNewKernelInfo(), - getParentForChildren(), - isClean()); - newKernelInfo_ = null; + if (((from_bitField0_ & 0x00000020) != 0)) { + result.maxTimestamp_ = maxTimestamp_; + to_bitField0_ |= 0x00000010; } - return newKernelInfoBuilder_; + if (((from_bitField0_ & 0x00000040) != 0)) { + result.dynamicPartitionMetadata_ = dynamicPartitionMetadataBuilder_ == null + ? dynamicPartitionMetadata_ + : dynamicPartitionMetadataBuilder_.build(); + to_bitField0_ |= 0x00000020; + } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.partialUpdate_ = partialUpdate_; + to_bitField0_ |= 0x00000040; + } + if (((from_bitField0_ & 0x00000200) != 0)) { + result.securityPatchLevel_ = securityPatchLevel_; + to_bitField0_ |= 0x00000080; + } + result.bitField0_ |= to_bitField0_; } - private chromeos_update_engine.UpdateMetadata.PartitionInfo oldRootfsInfo_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> oldRootfsInfoBuilder_; - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - * @return Whether the oldRootfsInfo field is set. - */ - public boolean hasOldRootfsInfo() { - return ((bitField0_ & 0x00000080) != 0); + @java.lang.Override + public Builder clone() { + return super.clone(); } - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - * @return The oldRootfsInfo. - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo getOldRootfsInfo() { - if (oldRootfsInfoBuilder_ == null) { - return oldRootfsInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldRootfsInfo_; + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest) { + return mergeFrom((chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest)other); } else { - return oldRootfsInfoBuilder_.getMessage(); + super.mergeFrom(other); + return this; } } - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - */ - public Builder setOldRootfsInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (oldRootfsInfoBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); + + public Builder mergeFrom(chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest other) { + if (other == chromeos_update_engine.UpdateMetadata.DeltaArchiveManifest.getDefaultInstance()) return this; + if (other.hasBlockSize()) { + setBlockSize(other.getBlockSize()); + } + if (other.hasSignaturesOffset()) { + setSignaturesOffset(other.getSignaturesOffset()); + } + if (other.hasSignaturesSize()) { + setSignaturesSize(other.getSignaturesSize()); + } + if (other.hasMinorVersion()) { + setMinorVersion(other.getMinorVersion()); + } + if (partitionsBuilder_ == null) { + if (!other.partitions_.isEmpty()) { + if (partitions_.isEmpty()) { + partitions_ = other.partitions_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensurePartitionsIsMutable(); + partitions_.addAll(other.partitions_); + } + onChanged(); } - oldRootfsInfo_ = value; - onChanged(); } else { - oldRootfsInfoBuilder_.setMessage(value); + if (!other.partitions_.isEmpty()) { + if (partitionsBuilder_.isEmpty()) { + partitionsBuilder_.dispose(); + partitionsBuilder_ = null; + partitions_ = other.partitions_; + bitField0_ = (bitField0_ & ~0x00000010); + partitionsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getPartitionsFieldBuilder() : null; + } else { + partitionsBuilder_.addAllMessages(other.partitions_); + } + } } - bitField0_ |= 0x00000080; - return this; - } - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - */ - public Builder setOldRootfsInfo( - chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder builderForValue) { - if (oldRootfsInfoBuilder_ == null) { - oldRootfsInfo_ = builderForValue.build(); - onChanged(); - } else { - oldRootfsInfoBuilder_.setMessage(builderForValue.build()); + if (other.hasMaxTimestamp()) { + setMaxTimestamp(other.getMaxTimestamp()); } - bitField0_ |= 0x00000080; - return this; - } - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - */ - public Builder mergeOldRootfsInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (oldRootfsInfoBuilder_ == null) { - if (((bitField0_ & 0x00000080) != 0) && - oldRootfsInfo_ != null && - oldRootfsInfo_ != chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance()) { - oldRootfsInfo_ = - chromeos_update_engine.UpdateMetadata.PartitionInfo.newBuilder(oldRootfsInfo_).mergeFrom(value).buildPartial(); - } else { - oldRootfsInfo_ = value; + if (other.hasDynamicPartitionMetadata()) { + mergeDynamicPartitionMetadata(other.getDynamicPartitionMetadata()); + } + if (other.hasPartialUpdate()) { + setPartialUpdate(other.getPartialUpdate()); + } + if (apexInfoBuilder_ == null) { + if (!other.apexInfo_.isEmpty()) { + if (apexInfo_.isEmpty()) { + apexInfo_ = other.apexInfo_; + bitField0_ = (bitField0_ & ~0x00000100); + } else { + ensureApexInfoIsMutable(); + apexInfo_.addAll(other.apexInfo_); + } + onChanged(); } - onChanged(); } else { - oldRootfsInfoBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000080; - return this; - } - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - */ - public Builder clearOldRootfsInfo() { - if (oldRootfsInfoBuilder_ == null) { - oldRootfsInfo_ = null; + if (!other.apexInfo_.isEmpty()) { + if (apexInfoBuilder_.isEmpty()) { + apexInfoBuilder_.dispose(); + apexInfoBuilder_ = null; + apexInfo_ = other.apexInfo_; + bitField0_ = (bitField0_ & ~0x00000100); + apexInfoBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getApexInfoFieldBuilder() : null; + } else { + apexInfoBuilder_.addAllMessages(other.apexInfo_); + } + } + } + if (other.hasSecurityPatchLevel()) { + securityPatchLevel_ = other.securityPatchLevel_; + bitField0_ |= 0x00000200; onChanged(); - } else { - oldRootfsInfoBuilder_.clear(); } - bitField0_ = (bitField0_ & ~0x00000080); - return this; - } - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder getOldRootfsInfoBuilder() { - bitField0_ |= 0x00000080; + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); - return getOldRootfsInfoFieldBuilder().getBuilder(); + return this; } - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - */ - public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getOldRootfsInfoOrBuilder() { - if (oldRootfsInfoBuilder_ != null) { - return oldRootfsInfoBuilder_.getMessageOrBuilder(); - } else { - return oldRootfsInfo_ == null ? - chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : oldRootfsInfo_; + + @java.lang.Override + public final boolean isInitialized() { + for (int i = 0; i < getPartitionsCount(); i++) { + if (!getPartitions(i).isInitialized()) { + return false; + } + } + if (hasDynamicPartitionMetadata()) { + if (!getDynamicPartitionMetadata().isInitialized()) { + return false; + } } + return true; } - /** - * optional .chromeos_update_engine.PartitionInfo old_rootfs_info = 8; - */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> - getOldRootfsInfoFieldBuilder() { - if (oldRootfsInfoBuilder_ == null) { - oldRootfsInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder>( - getOldRootfsInfo(), - getParentForChildren(), - isClean()); - oldRootfsInfo_ = null; + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); } - return oldRootfsInfoBuilder_; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 24: { + blockSize_ = input.readUInt32(); + bitField0_ |= 0x00000001; + break; + } // case 24 + case 32: { + signaturesOffset_ = input.readUInt64(); + bitField0_ |= 0x00000002; + break; + } // case 32 + case 40: { + signaturesSize_ = input.readUInt64(); + bitField0_ |= 0x00000004; + break; + } // case 40 + case 96: { + minorVersion_ = input.readUInt32(); + bitField0_ |= 0x00000008; + break; + } // case 96 + case 106: { + chromeos_update_engine.UpdateMetadata.PartitionUpdate m = + input.readMessage( + chromeos_update_engine.UpdateMetadata.PartitionUpdate.PARSER, + extensionRegistry); + if (partitionsBuilder_ == null) { + ensurePartitionsIsMutable(); + partitions_.add(m); + } else { + partitionsBuilder_.addMessage(m); + } + break; + } // case 106 + case 112: { + maxTimestamp_ = input.readInt64(); + bitField0_ |= 0x00000020; + break; + } // case 112 + case 122: { + input.readMessage( + getDynamicPartitionMetadataFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000040; + break; + } // case 122 + case 128: { + partialUpdate_ = input.readBool(); + bitField0_ |= 0x00000080; + break; + } // case 128 + case 138: { + chromeos_update_engine.UpdateMetadata.ApexInfo m = + input.readMessage( + chromeos_update_engine.UpdateMetadata.ApexInfo.PARSER, + extensionRegistry); + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + apexInfo_.add(m); + } else { + apexInfoBuilder_.addMessage(m); + } + break; + } // case 138 + case 146: { + securityPatchLevel_ = input.readBytes(); + bitField0_ |= 0x00000200; + break; + } // case 146 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; } + private int bitField0_; - private chromeos_update_engine.UpdateMetadata.PartitionInfo newRootfsInfo_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> newRootfsInfoBuilder_; + private int blockSize_ = 4096; /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; - * @return Whether the newRootfsInfo field is set. + *
+       * (At time of writing) usually 4096
+       * 
+ * + * optional uint32 block_size = 3 [default = 4096]; + * @return Whether the blockSize field is set. */ - public boolean hasNewRootfsInfo() { - return ((bitField0_ & 0x00000100) != 0); + @java.lang.Override + public boolean hasBlockSize() { + return ((bitField0_ & 0x00000001) != 0); } /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; - * @return The newRootfsInfo. + *
+       * (At time of writing) usually 4096
+       * 
+ * + * optional uint32 block_size = 3 [default = 4096]; + * @return The blockSize. */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo getNewRootfsInfo() { - if (newRootfsInfoBuilder_ == null) { - return newRootfsInfo_ == null ? chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newRootfsInfo_; - } else { - return newRootfsInfoBuilder_.getMessage(); - } + @java.lang.Override + public int getBlockSize() { + return blockSize_; } /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; + *
+       * (At time of writing) usually 4096
+       * 
+ * + * optional uint32 block_size = 3 [default = 4096]; + * @param value The blockSize to set. + * @return This builder for chaining. */ - public Builder setNewRootfsInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (newRootfsInfoBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - newRootfsInfo_ = value; - onChanged(); - } else { - newRootfsInfoBuilder_.setMessage(value); - } - bitField0_ |= 0x00000100; + public Builder setBlockSize(int value) { + + blockSize_ = value; + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; + *
+       * (At time of writing) usually 4096
+       * 
+ * + * optional uint32 block_size = 3 [default = 4096]; + * @return This builder for chaining. */ - public Builder setNewRootfsInfo( - chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder builderForValue) { - if (newRootfsInfoBuilder_ == null) { - newRootfsInfo_ = builderForValue.build(); - onChanged(); - } else { - newRootfsInfoBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00000100; + public Builder clearBlockSize() { + bitField0_ = (bitField0_ & ~0x00000001); + blockSize_ = 4096; + onChanged(); return this; } + + private long signaturesOffset_ ; /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; + *
+       * If signatures are present, the offset into the blobs, generally
+       * tacked onto the end of the file, and the length. We use an offset
+       * rather than a bool to allow for more flexibility in future file formats.
+       * If either is absent, it means signatures aren't supported in this
+       * file.
+       * 
+ * + * optional uint64 signatures_offset = 4; + * @return Whether the signaturesOffset field is set. */ - public Builder mergeNewRootfsInfo(chromeos_update_engine.UpdateMetadata.PartitionInfo value) { - if (newRootfsInfoBuilder_ == null) { - if (((bitField0_ & 0x00000100) != 0) && - newRootfsInfo_ != null && - newRootfsInfo_ != chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance()) { - newRootfsInfo_ = - chromeos_update_engine.UpdateMetadata.PartitionInfo.newBuilder(newRootfsInfo_).mergeFrom(value).buildPartial(); - } else { - newRootfsInfo_ = value; - } - onChanged(); - } else { - newRootfsInfoBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000100; - return this; + @java.lang.Override + public boolean hasSignaturesOffset() { + return ((bitField0_ & 0x00000002) != 0); } /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; + *
+       * If signatures are present, the offset into the blobs, generally
+       * tacked onto the end of the file, and the length. We use an offset
+       * rather than a bool to allow for more flexibility in future file formats.
+       * If either is absent, it means signatures aren't supported in this
+       * file.
+       * 
+ * + * optional uint64 signatures_offset = 4; + * @return The signaturesOffset. */ - public Builder clearNewRootfsInfo() { - if (newRootfsInfoBuilder_ == null) { - newRootfsInfo_ = null; - onChanged(); - } else { - newRootfsInfoBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000100); - return this; + @java.lang.Override + public long getSignaturesOffset() { + return signaturesOffset_; } /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; + *
+       * If signatures are present, the offset into the blobs, generally
+       * tacked onto the end of the file, and the length. We use an offset
+       * rather than a bool to allow for more flexibility in future file formats.
+       * If either is absent, it means signatures aren't supported in this
+       * file.
+       * 
+ * + * optional uint64 signatures_offset = 4; + * @param value The signaturesOffset to set. + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder getNewRootfsInfoBuilder() { - bitField0_ |= 0x00000100; + public Builder setSignaturesOffset(long value) { + + signaturesOffset_ = value; + bitField0_ |= 0x00000002; onChanged(); - return getNewRootfsInfoFieldBuilder().getBuilder(); + return this; } /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; + *
+       * If signatures are present, the offset into the blobs, generally
+       * tacked onto the end of the file, and the length. We use an offset
+       * rather than a bool to allow for more flexibility in future file formats.
+       * If either is absent, it means signatures aren't supported in this
+       * file.
+       * 
+ * + * optional uint64 signatures_offset = 4; + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder getNewRootfsInfoOrBuilder() { - if (newRootfsInfoBuilder_ != null) { - return newRootfsInfoBuilder_.getMessageOrBuilder(); - } else { - return newRootfsInfo_ == null ? - chromeos_update_engine.UpdateMetadata.PartitionInfo.getDefaultInstance() : newRootfsInfo_; - } + public Builder clearSignaturesOffset() { + bitField0_ = (bitField0_ & ~0x00000002); + signaturesOffset_ = 0L; + onChanged(); + return this; } + + private long signaturesSize_ ; /** - * optional .chromeos_update_engine.PartitionInfo new_rootfs_info = 9; + * optional uint64 signatures_size = 5; + * @return Whether the signaturesSize field is set. */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder> - getNewRootfsInfoFieldBuilder() { - if (newRootfsInfoBuilder_ == null) { - newRootfsInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionInfo, chromeos_update_engine.UpdateMetadata.PartitionInfo.Builder, chromeos_update_engine.UpdateMetadata.PartitionInfoOrBuilder>( - getNewRootfsInfo(), - getParentForChildren(), - isClean()); - newRootfsInfo_ = null; - } - return newRootfsInfoBuilder_; + @java.lang.Override + public boolean hasSignaturesSize() { + return ((bitField0_ & 0x00000004) != 0); } - - private chromeos_update_engine.UpdateMetadata.ImageInfo oldImageInfo_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.ImageInfo, chromeos_update_engine.UpdateMetadata.ImageInfo.Builder, chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder> oldImageInfoBuilder_; /** - *
-       * old_image_info will only be present for delta images.
-       * 
- * - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; - * @return Whether the oldImageInfo field is set. + * optional uint64 signatures_size = 5; + * @return The signaturesSize. */ - public boolean hasOldImageInfo() { - return ((bitField0_ & 0x00000200) != 0); + @java.lang.Override + public long getSignaturesSize() { + return signaturesSize_; } /** - *
-       * old_image_info will only be present for delta images.
-       * 
- * - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; - * @return The oldImageInfo. + * optional uint64 signatures_size = 5; + * @param value The signaturesSize to set. + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.ImageInfo getOldImageInfo() { - if (oldImageInfoBuilder_ == null) { - return oldImageInfo_ == null ? chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance() : oldImageInfo_; - } else { - return oldImageInfoBuilder_.getMessage(); - } + public Builder setSignaturesSize(long value) { + + signaturesSize_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; } /** - *
-       * old_image_info will only be present for delta images.
-       * 
- * - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; + * optional uint64 signatures_size = 5; + * @return This builder for chaining. */ - public Builder setOldImageInfo(chromeos_update_engine.UpdateMetadata.ImageInfo value) { - if (oldImageInfoBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - oldImageInfo_ = value; - onChanged(); - } else { - oldImageInfoBuilder_.setMessage(value); - } - bitField0_ |= 0x00000200; + public Builder clearSignaturesSize() { + bitField0_ = (bitField0_ & ~0x00000004); + signaturesSize_ = 0L; + onChanged(); return this; } + + private int minorVersion_ ; /** *
-       * old_image_info will only be present for delta images.
+       * The minor version, also referred as "delta version", of the payload.
+       * Minor version 0 is full payload, everything else is delta payload.
        * 
* - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; + * optional uint32 minor_version = 12 [default = 0]; + * @return Whether the minorVersion field is set. */ - public Builder setOldImageInfo( - chromeos_update_engine.UpdateMetadata.ImageInfo.Builder builderForValue) { - if (oldImageInfoBuilder_ == null) { - oldImageInfo_ = builderForValue.build(); - onChanged(); - } else { - oldImageInfoBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00000200; - return this; + @java.lang.Override + public boolean hasMinorVersion() { + return ((bitField0_ & 0x00000008) != 0); } /** *
-       * old_image_info will only be present for delta images.
+       * The minor version, also referred as "delta version", of the payload.
+       * Minor version 0 is full payload, everything else is delta payload.
        * 
* - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; + * optional uint32 minor_version = 12 [default = 0]; + * @return The minorVersion. */ - public Builder mergeOldImageInfo(chromeos_update_engine.UpdateMetadata.ImageInfo value) { - if (oldImageInfoBuilder_ == null) { - if (((bitField0_ & 0x00000200) != 0) && - oldImageInfo_ != null && - oldImageInfo_ != chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance()) { - oldImageInfo_ = - chromeos_update_engine.UpdateMetadata.ImageInfo.newBuilder(oldImageInfo_).mergeFrom(value).buildPartial(); - } else { - oldImageInfo_ = value; - } - onChanged(); - } else { - oldImageInfoBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000200; - return this; + @java.lang.Override + public int getMinorVersion() { + return minorVersion_; } /** *
-       * old_image_info will only be present for delta images.
+       * The minor version, also referred as "delta version", of the payload.
+       * Minor version 0 is full payload, everything else is delta payload.
        * 
* - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; + * optional uint32 minor_version = 12 [default = 0]; + * @param value The minorVersion to set. + * @return This builder for chaining. */ - public Builder clearOldImageInfo() { - if (oldImageInfoBuilder_ == null) { - oldImageInfo_ = null; - onChanged(); - } else { - oldImageInfoBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000200); + public Builder setMinorVersion(int value) { + + minorVersion_ = value; + bitField0_ |= 0x00000008; + onChanged(); return this; } /** *
-       * old_image_info will only be present for delta images.
+       * The minor version, also referred as "delta version", of the payload.
+       * Minor version 0 is full payload, everything else is delta payload.
        * 
* - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; + * optional uint32 minor_version = 12 [default = 0]; + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.ImageInfo.Builder getOldImageInfoBuilder() { - bitField0_ |= 0x00000200; + public Builder clearMinorVersion() { + bitField0_ = (bitField0_ & ~0x00000008); + minorVersion_ = 0; onChanged(); - return getOldImageInfoFieldBuilder().getBuilder(); + return this; + } + + private java.util.List partitions_ = + java.util.Collections.emptyList(); + private void ensurePartitionsIsMutable() { + if (!((bitField0_ & 0x00000010) != 0)) { + partitions_ = new java.util.ArrayList(partitions_); + bitField0_ |= 0x00000010; + } } + + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.PartitionUpdate, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder, chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder> partitionsBuilder_; + /** *
-       * old_image_info will only be present for delta images.
+       * Only present in major version >= 2. List of partitions that will be
+       * updated, in the order they will be updated. This field replaces the
+       * |install_operations|, |kernel_install_operations| and the
+       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+       * array can have more than two partitions if needed, and they are identified
+       * by the partition name.
        * 
* - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; */ - public chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder getOldImageInfoOrBuilder() { - if (oldImageInfoBuilder_ != null) { - return oldImageInfoBuilder_.getMessageOrBuilder(); + public java.util.List getPartitionsList() { + if (partitionsBuilder_ == null) { + return java.util.Collections.unmodifiableList(partitions_); } else { - return oldImageInfo_ == null ? - chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance() : oldImageInfo_; + return partitionsBuilder_.getMessageList(); } } /** *
-       * old_image_info will only be present for delta images.
+       * Only present in major version >= 2. List of partitions that will be
+       * updated, in the order they will be updated. This field replaces the
+       * |install_operations|, |kernel_install_operations| and the
+       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+       * array can have more than two partitions if needed, and they are identified
+       * by the partition name.
        * 
* - * optional .chromeos_update_engine.ImageInfo old_image_info = 10; + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.ImageInfo, chromeos_update_engine.UpdateMetadata.ImageInfo.Builder, chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder> - getOldImageInfoFieldBuilder() { - if (oldImageInfoBuilder_ == null) { - oldImageInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.ImageInfo, chromeos_update_engine.UpdateMetadata.ImageInfo.Builder, chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder>( - getOldImageInfo(), - getParentForChildren(), - isClean()); - oldImageInfo_ = null; + public int getPartitionsCount() { + if (partitionsBuilder_ == null) { + return partitions_.size(); + } else { + return partitionsBuilder_.getCount(); } - return oldImageInfoBuilder_; - } - - private chromeos_update_engine.UpdateMetadata.ImageInfo newImageInfo_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.ImageInfo, chromeos_update_engine.UpdateMetadata.ImageInfo.Builder, chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder> newImageInfoBuilder_; - /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - * @return Whether the newImageInfo field is set. - */ - public boolean hasNewImageInfo() { - return ((bitField0_ & 0x00000400) != 0); } /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - * @return The newImageInfo. + *
+       * Only present in major version >= 2. List of partitions that will be
+       * updated, in the order they will be updated. This field replaces the
+       * |install_operations|, |kernel_install_operations| and the
+       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+       * array can have more than two partitions if needed, and they are identified
+       * by the partition name.
+       * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; */ - public chromeos_update_engine.UpdateMetadata.ImageInfo getNewImageInfo() { - if (newImageInfoBuilder_ == null) { - return newImageInfo_ == null ? chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance() : newImageInfo_; + public chromeos_update_engine.UpdateMetadata.PartitionUpdate getPartitions(int index) { + if (partitionsBuilder_ == null) { + return partitions_.get(index); } else { - return newImageInfoBuilder_.getMessage(); + return partitionsBuilder_.getMessage(index); } } /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; + *
+       * Only present in major version >= 2. List of partitions that will be
+       * updated, in the order they will be updated. This field replaces the
+       * |install_operations|, |kernel_install_operations| and the
+       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+       * array can have more than two partitions if needed, and they are identified
+       * by the partition name.
+       * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; */ - public Builder setNewImageInfo(chromeos_update_engine.UpdateMetadata.ImageInfo value) { - if (newImageInfoBuilder_ == null) { + public Builder setPartitions( + int index, chromeos_update_engine.UpdateMetadata.PartitionUpdate value) { + if (partitionsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - newImageInfo_ = value; + ensurePartitionsIsMutable(); + partitions_.set(index, value); onChanged(); } else { - newImageInfoBuilder_.setMessage(value); + partitionsBuilder_.setMessage(index, value); } - bitField0_ |= 0x00000400; return this; } /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; + *
+       * Only present in major version >= 2. List of partitions that will be
+       * updated, in the order they will be updated. This field replaces the
+       * |install_operations|, |kernel_install_operations| and the
+       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+       * array can have more than two partitions if needed, and they are identified
+       * by the partition name.
+       * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; */ - public Builder setNewImageInfo( - chromeos_update_engine.UpdateMetadata.ImageInfo.Builder builderForValue) { - if (newImageInfoBuilder_ == null) { - newImageInfo_ = builderForValue.build(); + public Builder setPartitions( + int index, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder builderForValue) { + if (partitionsBuilder_ == null) { + ensurePartitionsIsMutable(); + partitions_.set(index, builderForValue.build()); onChanged(); } else { - newImageInfoBuilder_.setMessage(builderForValue.build()); + partitionsBuilder_.setMessage(index, builderForValue.build()); } - bitField0_ |= 0x00000400; return this; } /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; + *
+       * Only present in major version >= 2. List of partitions that will be
+       * updated, in the order they will be updated. This field replaces the
+       * |install_operations|, |kernel_install_operations| and the
+       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+       * array can have more than two partitions if needed, and they are identified
+       * by the partition name.
+       * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; */ - public Builder mergeNewImageInfo(chromeos_update_engine.UpdateMetadata.ImageInfo value) { - if (newImageInfoBuilder_ == null) { - if (((bitField0_ & 0x00000400) != 0) && - newImageInfo_ != null && - newImageInfo_ != chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance()) { - newImageInfo_ = - chromeos_update_engine.UpdateMetadata.ImageInfo.newBuilder(newImageInfo_).mergeFrom(value).buildPartial(); - } else { - newImageInfo_ = value; + public Builder addPartitions(chromeos_update_engine.UpdateMetadata.PartitionUpdate value) { + if (partitionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); } + ensurePartitionsIsMutable(); + partitions_.add(value); onChanged(); } else { - newImageInfoBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000400; - return this; - } - /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - */ - public Builder clearNewImageInfo() { - if (newImageInfoBuilder_ == null) { - newImageInfo_ = null; - onChanged(); - } else { - newImageInfoBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000400); - return this; - } - /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - */ - public chromeos_update_engine.UpdateMetadata.ImageInfo.Builder getNewImageInfoBuilder() { - bitField0_ |= 0x00000400; - onChanged(); - return getNewImageInfoFieldBuilder().getBuilder(); - } - /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - */ - public chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder getNewImageInfoOrBuilder() { - if (newImageInfoBuilder_ != null) { - return newImageInfoBuilder_.getMessageOrBuilder(); - } else { - return newImageInfo_ == null ? - chromeos_update_engine.UpdateMetadata.ImageInfo.getDefaultInstance() : newImageInfo_; - } - } - /** - * optional .chromeos_update_engine.ImageInfo new_image_info = 11; - */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.ImageInfo, chromeos_update_engine.UpdateMetadata.ImageInfo.Builder, chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder> - getNewImageInfoFieldBuilder() { - if (newImageInfoBuilder_ == null) { - newImageInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.ImageInfo, chromeos_update_engine.UpdateMetadata.ImageInfo.Builder, chromeos_update_engine.UpdateMetadata.ImageInfoOrBuilder>( - getNewImageInfo(), - getParentForChildren(), - isClean()); - newImageInfo_ = null; + partitionsBuilder_.addMessage(value); } - return newImageInfoBuilder_; - } - - private int minorVersion_ ; - /** - *
-       * The minor version, also referred as "delta version", of the payload.
-       * Minor version 0 is full payload, everything else is delta payload.
-       * 
- * - * optional uint32 minor_version = 12 [default = 0]; - * @return Whether the minorVersion field is set. - */ - @java.lang.Override - public boolean hasMinorVersion() { - return ((bitField0_ & 0x00000800) != 0); - } - /** - *
-       * The minor version, also referred as "delta version", of the payload.
-       * Minor version 0 is full payload, everything else is delta payload.
-       * 
- * - * optional uint32 minor_version = 12 [default = 0]; - * @return The minorVersion. - */ - @java.lang.Override - public int getMinorVersion() { - return minorVersion_; - } - /** - *
-       * The minor version, also referred as "delta version", of the payload.
-       * Minor version 0 is full payload, everything else is delta payload.
-       * 
- * - * optional uint32 minor_version = 12 [default = 0]; - * @param value The minorVersion to set. - * @return This builder for chaining. - */ - public Builder setMinorVersion(int value) { - bitField0_ |= 0x00000800; - minorVersion_ = value; - onChanged(); return this; } /** *
-       * The minor version, also referred as "delta version", of the payload.
-       * Minor version 0 is full payload, everything else is delta payload.
+       * Only present in major version >= 2. List of partitions that will be
+       * updated, in the order they will be updated. This field replaces the
+       * |install_operations|, |kernel_install_operations| and the
+       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+       * array can have more than two partitions if needed, and they are identified
+       * by the partition name.
        * 
* - * optional uint32 minor_version = 12 [default = 0]; - * @return This builder for chaining. + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; */ - public Builder clearMinorVersion() { - bitField0_ = (bitField0_ & ~0x00000800); - minorVersion_ = 0; - onChanged(); + public Builder addPartitions( + int index, chromeos_update_engine.UpdateMetadata.PartitionUpdate value) { + if (partitionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePartitionsIsMutable(); + partitions_.add(index, value); + onChanged(); + } else { + partitionsBuilder_.addMessage(index, value); + } return this; } - - private java.util.List partitions_ = - java.util.Collections.emptyList(); - private void ensurePartitionsIsMutable() { - if (!((bitField0_ & 0x00001000) != 0)) { - partitions_ = new java.util.ArrayList(partitions_); - bitField0_ |= 0x00001000; - } - } - - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionUpdate, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder, chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder> partitionsBuilder_; - /** *
        * Only present in major version >= 2. List of partitions that will be
@@ -17718,12 +19408,16 @@ public final class UpdateMetadata {
        *
        * repeated .chromeos_update_engine.PartitionUpdate partitions = 13;
        */
-      public java.util.List getPartitionsList() {
+      public Builder addPartitions(
+          chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder builderForValue) {
         if (partitionsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(partitions_);
+          ensurePartitionsIsMutable();
+          partitions_.add(builderForValue.build());
+          onChanged();
         } else {
-          return partitionsBuilder_.getMessageList();
+          partitionsBuilder_.addMessage(builderForValue.build());
         }
+        return this;
       }
       /**
        * 
@@ -17737,12 +19431,16 @@ public final class UpdateMetadata {
        *
        * repeated .chromeos_update_engine.PartitionUpdate partitions = 13;
        */
-      public int getPartitionsCount() {
+      public Builder addPartitions(
+          int index, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder builderForValue) {
         if (partitionsBuilder_ == null) {
-          return partitions_.size();
+          ensurePartitionsIsMutable();
+          partitions_.add(index, builderForValue.build());
+          onChanged();
         } else {
-          return partitionsBuilder_.getCount();
+          partitionsBuilder_.addMessage(index, builderForValue.build());
         }
+        return this;
       }
       /**
        * 
@@ -17756,12 +19454,17 @@ public final class UpdateMetadata {
        *
        * repeated .chromeos_update_engine.PartitionUpdate partitions = 13;
        */
-      public chromeos_update_engine.UpdateMetadata.PartitionUpdate getPartitions(int index) {
+      public Builder addAllPartitions(
+          java.lang.Iterable values) {
         if (partitionsBuilder_ == null) {
-          return partitions_.get(index);
+          ensurePartitionsIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, partitions_);
+          onChanged();
         } else {
-          return partitionsBuilder_.getMessage(index);
+          partitionsBuilder_.addAllMessages(values);
         }
+        return this;
       }
       /**
        * 
@@ -17775,17 +19478,13 @@ public final class UpdateMetadata {
        *
        * repeated .chromeos_update_engine.PartitionUpdate partitions = 13;
        */
-      public Builder setPartitions(
-          int index, chromeos_update_engine.UpdateMetadata.PartitionUpdate value) {
+      public Builder clearPartitions() {
         if (partitionsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensurePartitionsIsMutable();
-          partitions_.set(index, value);
+          partitions_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000010);
           onChanged();
         } else {
-          partitionsBuilder_.setMessage(index, value);
+          partitionsBuilder_.clear();
         }
         return this;
       }
@@ -17801,14 +19500,13 @@ public final class UpdateMetadata {
        *
        * repeated .chromeos_update_engine.PartitionUpdate partitions = 13;
        */
-      public Builder setPartitions(
-          int index, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder builderForValue) {
+      public Builder removePartitions(int index) {
         if (partitionsBuilder_ == null) {
           ensurePartitionsIsMutable();
-          partitions_.set(index, builderForValue.build());
+          partitions_.remove(index);
           onChanged();
         } else {
-          partitionsBuilder_.setMessage(index, builderForValue.build());
+          partitionsBuilder_.remove(index);
         }
         return this;
       }
@@ -17824,18 +19522,48 @@ public final class UpdateMetadata {
        *
        * repeated .chromeos_update_engine.PartitionUpdate partitions = 13;
        */
-      public Builder addPartitions(chromeos_update_engine.UpdateMetadata.PartitionUpdate value) {
+      public chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder getPartitionsBuilder(
+          int index) {
+        return getPartitionsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * 
+       * Only present in major version >= 2. List of partitions that will be
+       * updated, in the order they will be updated. This field replaces the
+       * |install_operations|, |kernel_install_operations| and the
+       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+       * array can have more than two partitions if needed, and they are identified
+       * by the partition name.
+       * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + */ + public chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder getPartitionsOrBuilder( + int index) { if (partitionsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensurePartitionsIsMutable(); - partitions_.add(value); - onChanged(); + return partitions_.get(index); } else { + return partitionsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * Only present in major version >= 2. List of partitions that will be
+       * updated, in the order they will be updated. This field replaces the
+       * |install_operations|, |kernel_install_operations| and the
+       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+       * array can have more than two partitions if needed, and they are identified
+       * by the partition name.
+       * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + */ + public java.util.List + getPartitionsOrBuilderList() { + if (partitionsBuilder_ != null) { + return partitionsBuilder_.getMessageOrBuilderList(); } else { - partitionsBuilder_.addMessage(value); + return java.util.Collections.unmodifiableList(partitions_); } - return this; } /** *
@@ -17847,521 +19575,767 @@ public final class UpdateMetadata {
        * by the partition name.
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + */ + public chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder addPartitionsBuilder() { + return getPartitionsFieldBuilder().addBuilder( + chromeos_update_engine.UpdateMetadata.PartitionUpdate.getDefaultInstance()); + } + /** + *
+       * Only present in major version >= 2. List of partitions that will be
+       * updated, in the order they will be updated. This field replaces the
+       * |install_operations|, |kernel_install_operations| and the
+       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+       * array can have more than two partitions if needed, and they are identified
+       * by the partition name.
+       * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + */ + public chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder addPartitionsBuilder( + int index) { + return getPartitionsFieldBuilder().addBuilder( + index, chromeos_update_engine.UpdateMetadata.PartitionUpdate.getDefaultInstance()); + } + /** + *
+       * Only present in major version >= 2. List of partitions that will be
+       * updated, in the order they will be updated. This field replaces the
+       * |install_operations|, |kernel_install_operations| and the
+       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
+       * array can have more than two partitions if needed, and they are identified
+       * by the partition name.
+       * 
+ * + * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + */ + public java.util.List + getPartitionsBuilderList() { + return getPartitionsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.PartitionUpdate, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder, chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder> + getPartitionsFieldBuilder() { + if (partitionsBuilder_ == null) { + partitionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.PartitionUpdate, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder, chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder>( + partitions_, + ((bitField0_ & 0x00000010) != 0), + getParentForChildren(), + isClean()); + partitions_ = null; + } + return partitionsBuilder_; + } + + private long maxTimestamp_ ; + /** + *
+       * The maximum timestamp of the OS allowed to apply this payload.
+       * Can be used to prevent downgrading the OS.
+       * 
+ * + * optional int64 max_timestamp = 14; + * @return Whether the maxTimestamp field is set. + */ + @java.lang.Override + public boolean hasMaxTimestamp() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + *
+       * The maximum timestamp of the OS allowed to apply this payload.
+       * Can be used to prevent downgrading the OS.
+       * 
+ * + * optional int64 max_timestamp = 14; + * @return The maxTimestamp. + */ + @java.lang.Override + public long getMaxTimestamp() { + return maxTimestamp_; + } + /** + *
+       * The maximum timestamp of the OS allowed to apply this payload.
+       * Can be used to prevent downgrading the OS.
+       * 
+ * + * optional int64 max_timestamp = 14; + * @param value The maxTimestamp to set. + * @return This builder for chaining. + */ + public Builder setMaxTimestamp(long value) { + + maxTimestamp_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + *
+       * The maximum timestamp of the OS allowed to apply this payload.
+       * Can be used to prevent downgrading the OS.
+       * 
+ * + * optional int64 max_timestamp = 14; + * @return This builder for chaining. + */ + public Builder clearMaxTimestamp() { + bitField0_ = (bitField0_ & ~0x00000020); + maxTimestamp_ = 0L; + onChanged(); + return this; + } + + private chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata dynamicPartitionMetadata_; + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder> dynamicPartitionMetadataBuilder_; + /** + *
+       * Metadata related to all dynamic partitions.
+       * 
+ * + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * @return Whether the dynamicPartitionMetadata field is set. + */ + public boolean hasDynamicPartitionMetadata() { + return ((bitField0_ & 0x00000040) != 0); + } + /** + *
+       * Metadata related to all dynamic partitions.
+       * 
+ * + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * @return The dynamicPartitionMetadata. + */ + public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDynamicPartitionMetadata() { + if (dynamicPartitionMetadataBuilder_ == null) { + return dynamicPartitionMetadata_ == null ? chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance() : dynamicPartitionMetadata_; + } else { + return dynamicPartitionMetadataBuilder_.getMessage(); + } + } + /** + *
+       * Metadata related to all dynamic partitions.
+       * 
+ * + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; */ - public Builder addPartitions( - int index, chromeos_update_engine.UpdateMetadata.PartitionUpdate value) { - if (partitionsBuilder_ == null) { + public Builder setDynamicPartitionMetadata(chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata value) { + if (dynamicPartitionMetadataBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensurePartitionsIsMutable(); - partitions_.add(index, value); - onChanged(); + dynamicPartitionMetadata_ = value; } else { - partitionsBuilder_.addMessage(index, value); + dynamicPartitionMetadataBuilder_.setMessage(value); } + bitField0_ |= 0x00000040; + onChanged(); return this; } /** *
-       * Only present in major version >= 2. List of partitions that will be
-       * updated, in the order they will be updated. This field replaces the
-       * |install_operations|, |kernel_install_operations| and the
-       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-       * array can have more than two partitions if needed, and they are identified
-       * by the partition name.
+       * Metadata related to all dynamic partitions.
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; */ - public Builder addPartitions( - chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder builderForValue) { - if (partitionsBuilder_ == null) { - ensurePartitionsIsMutable(); - partitions_.add(builderForValue.build()); - onChanged(); + public Builder setDynamicPartitionMetadata( + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder builderForValue) { + if (dynamicPartitionMetadataBuilder_ == null) { + dynamicPartitionMetadata_ = builderForValue.build(); } else { - partitionsBuilder_.addMessage(builderForValue.build()); + dynamicPartitionMetadataBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000040; + onChanged(); return this; } /** *
-       * Only present in major version >= 2. List of partitions that will be
-       * updated, in the order they will be updated. This field replaces the
-       * |install_operations|, |kernel_install_operations| and the
-       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-       * array can have more than two partitions if needed, and they are identified
-       * by the partition name.
+       * Metadata related to all dynamic partitions.
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; */ - public Builder addPartitions( - int index, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder builderForValue) { - if (partitionsBuilder_ == null) { - ensurePartitionsIsMutable(); - partitions_.add(index, builderForValue.build()); - onChanged(); + public Builder mergeDynamicPartitionMetadata(chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata value) { + if (dynamicPartitionMetadataBuilder_ == null) { + if (((bitField0_ & 0x00000040) != 0) && + dynamicPartitionMetadata_ != null && + dynamicPartitionMetadata_ != chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance()) { + getDynamicPartitionMetadataBuilder().mergeFrom(value); + } else { + dynamicPartitionMetadata_ = value; + } } else { - partitionsBuilder_.addMessage(index, builderForValue.build()); + dynamicPartitionMetadataBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000040; + onChanged(); return this; } /** *
-       * Only present in major version >= 2. List of partitions that will be
-       * updated, in the order they will be updated. This field replaces the
-       * |install_operations|, |kernel_install_operations| and the
-       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-       * array can have more than two partitions if needed, and they are identified
-       * by the partition name.
+       * Metadata related to all dynamic partitions.
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; */ - public Builder addAllPartitions( - java.lang.Iterable values) { - if (partitionsBuilder_ == null) { - ensurePartitionsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, partitions_); - onChanged(); - } else { - partitionsBuilder_.addAllMessages(values); + public Builder clearDynamicPartitionMetadata() { + bitField0_ = (bitField0_ & ~0x00000040); + dynamicPartitionMetadata_ = null; + if (dynamicPartitionMetadataBuilder_ != null) { + dynamicPartitionMetadataBuilder_.dispose(); + dynamicPartitionMetadataBuilder_ = null; } + onChanged(); return this; } /** *
-       * Only present in major version >= 2. List of partitions that will be
-       * updated, in the order they will be updated. This field replaces the
-       * |install_operations|, |kernel_install_operations| and the
-       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-       * array can have more than two partitions if needed, and they are identified
-       * by the partition name.
+       * Metadata related to all dynamic partitions.
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; */ - public Builder clearPartitions() { - if (partitionsBuilder_ == null) { - partitions_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00001000); - onChanged(); - } else { - partitionsBuilder_.clear(); - } - return this; + public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder getDynamicPartitionMetadataBuilder() { + bitField0_ |= 0x00000040; + onChanged(); + return getDynamicPartitionMetadataFieldBuilder().getBuilder(); } /** *
-       * Only present in major version >= 2. List of partitions that will be
-       * updated, in the order they will be updated. This field replaces the
-       * |install_operations|, |kernel_install_operations| and the
-       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-       * array can have more than two partitions if needed, and they are identified
-       * by the partition name.
+       * Metadata related to all dynamic partitions.
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; */ - public Builder removePartitions(int index) { - if (partitionsBuilder_ == null) { - ensurePartitionsIsMutable(); - partitions_.remove(index); - onChanged(); + public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder getDynamicPartitionMetadataOrBuilder() { + if (dynamicPartitionMetadataBuilder_ != null) { + return dynamicPartitionMetadataBuilder_.getMessageOrBuilder(); } else { - partitionsBuilder_.remove(index); + return dynamicPartitionMetadata_ == null ? + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance() : dynamicPartitionMetadata_; } - return this; } /** *
-       * Only present in major version >= 2. List of partitions that will be
-       * updated, in the order they will be updated. This field replaces the
-       * |install_operations|, |kernel_install_operations| and the
-       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-       * array can have more than two partitions if needed, and they are identified
-       * by the partition name.
+       * Metadata related to all dynamic partitions.
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; */ - public chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder getPartitionsBuilder( - int index) { - return getPartitionsFieldBuilder().getBuilder(index); + private com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder> + getDynamicPartitionMetadataFieldBuilder() { + if (dynamicPartitionMetadataBuilder_ == null) { + dynamicPartitionMetadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder>( + getDynamicPartitionMetadata(), + getParentForChildren(), + isClean()); + dynamicPartitionMetadata_ = null; + } + return dynamicPartitionMetadataBuilder_; } + + private boolean partialUpdate_ ; /** *
-       * Only present in major version >= 2. List of partitions that will be
-       * updated, in the order they will be updated. This field replaces the
-       * |install_operations|, |kernel_install_operations| and the
-       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-       * array can have more than two partitions if needed, and they are identified
-       * by the partition name.
+       * If the payload only updates a subset of partitions on the device.
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * optional bool partial_update = 16; + * @return Whether the partialUpdate field is set. */ - public chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder getPartitionsOrBuilder( - int index) { - if (partitionsBuilder_ == null) { - return partitions_.get(index); } else { - return partitionsBuilder_.getMessageOrBuilder(index); - } + @java.lang.Override + public boolean hasPartialUpdate() { + return ((bitField0_ & 0x00000080) != 0); } /** *
-       * Only present in major version >= 2. List of partitions that will be
-       * updated, in the order they will be updated. This field replaces the
-       * |install_operations|, |kernel_install_operations| and the
-       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-       * array can have more than two partitions if needed, and they are identified
-       * by the partition name.
+       * If the payload only updates a subset of partitions on the device.
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * optional bool partial_update = 16; + * @return The partialUpdate. */ - public java.util.List - getPartitionsOrBuilderList() { - if (partitionsBuilder_ != null) { - return partitionsBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(partitions_); - } + @java.lang.Override + public boolean getPartialUpdate() { + return partialUpdate_; } /** *
-       * Only present in major version >= 2. List of partitions that will be
-       * updated, in the order they will be updated. This field replaces the
-       * |install_operations|, |kernel_install_operations| and the
-       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-       * array can have more than two partitions if needed, and they are identified
-       * by the partition name.
+       * If the payload only updates a subset of partitions on the device.
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * optional bool partial_update = 16; + * @param value The partialUpdate to set. + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder addPartitionsBuilder() { - return getPartitionsFieldBuilder().addBuilder( - chromeos_update_engine.UpdateMetadata.PartitionUpdate.getDefaultInstance()); + public Builder setPartialUpdate(boolean value) { + + partialUpdate_ = value; + bitField0_ |= 0x00000080; + onChanged(); + return this; } /** *
-       * Only present in major version >= 2. List of partitions that will be
-       * updated, in the order they will be updated. This field replaces the
-       * |install_operations|, |kernel_install_operations| and the
-       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-       * array can have more than two partitions if needed, and they are identified
-       * by the partition name.
+       * If the payload only updates a subset of partitions on the device.
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * optional bool partial_update = 16; + * @return This builder for chaining. */ - public chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder addPartitionsBuilder( - int index) { - return getPartitionsFieldBuilder().addBuilder( - index, chromeos_update_engine.UpdateMetadata.PartitionUpdate.getDefaultInstance()); + public Builder clearPartialUpdate() { + bitField0_ = (bitField0_ & ~0x00000080); + partialUpdate_ = false; + onChanged(); + return this; + } + + private java.util.List apexInfo_ = + java.util.Collections.emptyList(); + private void ensureApexInfoIsMutable() { + if (!((bitField0_ & 0x00000100) != 0)) { + apexInfo_ = new java.util.ArrayList(apexInfo_); + bitField0_ |= 0x00000100; + } } + + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.ApexInfo, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder, chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder> apexInfoBuilder_; + /** *
-       * Only present in major version >= 2. List of partitions that will be
-       * updated, in the order they will be updated. This field replaces the
-       * |install_operations|, |kernel_install_operations| and the
-       * |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
-       * array can have more than two partitions if needed, and they are identified
-       * by the partition name.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * repeated .chromeos_update_engine.PartitionUpdate partitions = 13; + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - public java.util.List - getPartitionsBuilderList() { - return getPartitionsFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionUpdate, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder, chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder> - getPartitionsFieldBuilder() { - if (partitionsBuilder_ == null) { - partitionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.PartitionUpdate, chromeos_update_engine.UpdateMetadata.PartitionUpdate.Builder, chromeos_update_engine.UpdateMetadata.PartitionUpdateOrBuilder>( - partitions_, - ((bitField0_ & 0x00001000) != 0), - getParentForChildren(), - isClean()); - partitions_ = null; + public java.util.List getApexInfoList() { + if (apexInfoBuilder_ == null) { + return java.util.Collections.unmodifiableList(apexInfo_); + } else { + return apexInfoBuilder_.getMessageList(); + } + } + /** + *
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
+       * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + public int getApexInfoCount() { + if (apexInfoBuilder_ == null) { + return apexInfo_.size(); + } else { + return apexInfoBuilder_.getCount(); } - return partitionsBuilder_; } - - private long maxTimestamp_ ; /** *
-       * The maximum timestamp of the OS allowed to apply this payload.
-       * Can be used to prevent downgrading the OS.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional int64 max_timestamp = 14; - * @return Whether the maxTimestamp field is set. + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - @java.lang.Override - public boolean hasMaxTimestamp() { - return ((bitField0_ & 0x00002000) != 0); + public chromeos_update_engine.UpdateMetadata.ApexInfo getApexInfo(int index) { + if (apexInfoBuilder_ == null) { + return apexInfo_.get(index); + } else { + return apexInfoBuilder_.getMessage(index); + } } /** *
-       * The maximum timestamp of the OS allowed to apply this payload.
-       * Can be used to prevent downgrading the OS.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional int64 max_timestamp = 14; - * @return The maxTimestamp. + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - @java.lang.Override - public long getMaxTimestamp() { - return maxTimestamp_; + public Builder setApexInfo( + int index, chromeos_update_engine.UpdateMetadata.ApexInfo value) { + if (apexInfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureApexInfoIsMutable(); + apexInfo_.set(index, value); + onChanged(); + } else { + apexInfoBuilder_.setMessage(index, value); + } + return this; } /** *
-       * The maximum timestamp of the OS allowed to apply this payload.
-       * Can be used to prevent downgrading the OS.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional int64 max_timestamp = 14; - * @param value The maxTimestamp to set. - * @return This builder for chaining. + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - public Builder setMaxTimestamp(long value) { - bitField0_ |= 0x00002000; - maxTimestamp_ = value; - onChanged(); + public Builder setApexInfo( + int index, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder builderForValue) { + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + apexInfo_.set(index, builderForValue.build()); + onChanged(); + } else { + apexInfoBuilder_.setMessage(index, builderForValue.build()); + } return this; } /** *
-       * The maximum timestamp of the OS allowed to apply this payload.
-       * Can be used to prevent downgrading the OS.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional int64 max_timestamp = 14; - * @return This builder for chaining. + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - public Builder clearMaxTimestamp() { - bitField0_ = (bitField0_ & ~0x00002000); - maxTimestamp_ = 0L; - onChanged(); + public Builder addApexInfo(chromeos_update_engine.UpdateMetadata.ApexInfo value) { + if (apexInfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureApexInfoIsMutable(); + apexInfo_.add(value); + onChanged(); + } else { + apexInfoBuilder_.addMessage(value); + } return this; } - - private chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata dynamicPartitionMetadata_; - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder> dynamicPartitionMetadataBuilder_; /** *
-       * Metadata related to all dynamic partitions.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; - * @return Whether the dynamicPartitionMetadata field is set. + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - public boolean hasDynamicPartitionMetadata() { - return ((bitField0_ & 0x00004000) != 0); + public Builder addApexInfo( + int index, chromeos_update_engine.UpdateMetadata.ApexInfo value) { + if (apexInfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureApexInfoIsMutable(); + apexInfo_.add(index, value); + onChanged(); + } else { + apexInfoBuilder_.addMessage(index, value); + } + return this; } /** *
-       * Metadata related to all dynamic partitions.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; - * @return The dynamicPartitionMetadata. + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata getDynamicPartitionMetadata() { - if (dynamicPartitionMetadataBuilder_ == null) { - return dynamicPartitionMetadata_ == null ? chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance() : dynamicPartitionMetadata_; + public Builder addApexInfo( + chromeos_update_engine.UpdateMetadata.ApexInfo.Builder builderForValue) { + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + apexInfo_.add(builderForValue.build()); + onChanged(); } else { - return dynamicPartitionMetadataBuilder_.getMessage(); + apexInfoBuilder_.addMessage(builderForValue.build()); } + return this; } /** *
-       * Metadata related to all dynamic partitions.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - public Builder setDynamicPartitionMetadata(chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata value) { - if (dynamicPartitionMetadataBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - dynamicPartitionMetadata_ = value; + public Builder addApexInfo( + int index, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder builderForValue) { + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + apexInfo_.add(index, builderForValue.build()); onChanged(); } else { - dynamicPartitionMetadataBuilder_.setMessage(value); + apexInfoBuilder_.addMessage(index, builderForValue.build()); } - bitField0_ |= 0x00004000; return this; } /** *
-       * Metadata related to all dynamic partitions.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - public Builder setDynamicPartitionMetadata( - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder builderForValue) { - if (dynamicPartitionMetadataBuilder_ == null) { - dynamicPartitionMetadata_ = builderForValue.build(); + public Builder addAllApexInfo( + java.lang.Iterable values) { + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, apexInfo_); onChanged(); } else { - dynamicPartitionMetadataBuilder_.setMessage(builderForValue.build()); + apexInfoBuilder_.addAllMessages(values); } - bitField0_ |= 0x00004000; return this; } /** *
-       * Metadata related to all dynamic partitions.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - public Builder mergeDynamicPartitionMetadata(chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata value) { - if (dynamicPartitionMetadataBuilder_ == null) { - if (((bitField0_ & 0x00004000) != 0) && - dynamicPartitionMetadata_ != null && - dynamicPartitionMetadata_ != chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance()) { - dynamicPartitionMetadata_ = - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.newBuilder(dynamicPartitionMetadata_).mergeFrom(value).buildPartial(); - } else { - dynamicPartitionMetadata_ = value; - } + public Builder clearApexInfo() { + if (apexInfoBuilder_ == null) { + apexInfo_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000100); onChanged(); } else { - dynamicPartitionMetadataBuilder_.mergeFrom(value); + apexInfoBuilder_.clear(); } - bitField0_ |= 0x00004000; return this; } /** *
-       * Metadata related to all dynamic partitions.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - public Builder clearDynamicPartitionMetadata() { - if (dynamicPartitionMetadataBuilder_ == null) { - dynamicPartitionMetadata_ = null; + public Builder removeApexInfo(int index) { + if (apexInfoBuilder_ == null) { + ensureApexInfoIsMutable(); + apexInfo_.remove(index); onChanged(); } else { - dynamicPartitionMetadataBuilder_.clear(); + apexInfoBuilder_.remove(index); } - bitField0_ = (bitField0_ & ~0x00004000); return this; } /** *
-       * Metadata related to all dynamic partitions.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder getDynamicPartitionMetadataBuilder() { - bitField0_ |= 0x00004000; - onChanged(); - return getDynamicPartitionMetadataFieldBuilder().getBuilder(); + public chromeos_update_engine.UpdateMetadata.ApexInfo.Builder getApexInfoBuilder( + int index) { + return getApexInfoFieldBuilder().getBuilder(index); } /** *
-       * Metadata related to all dynamic partitions.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - public chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder getDynamicPartitionMetadataOrBuilder() { - if (dynamicPartitionMetadataBuilder_ != null) { - return dynamicPartitionMetadataBuilder_.getMessageOrBuilder(); + public chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder getApexInfoOrBuilder( + int index) { + if (apexInfoBuilder_ == null) { + return apexInfo_.get(index); } else { + return apexInfoBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
+       * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + public java.util.List + getApexInfoOrBuilderList() { + if (apexInfoBuilder_ != null) { + return apexInfoBuilder_.getMessageOrBuilderList(); } else { - return dynamicPartitionMetadata_ == null ? - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.getDefaultInstance() : dynamicPartitionMetadata_; + return java.util.Collections.unmodifiableList(apexInfo_); } } /** *
-       * Metadata related to all dynamic partitions.
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
        * 
* - * optional .chromeos_update_engine.DynamicPartitionMetadata dynamic_partition_metadata = 15; + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; */ - private com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder> - getDynamicPartitionMetadataFieldBuilder() { - if (dynamicPartitionMetadataBuilder_ == null) { - dynamicPartitionMetadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadata.Builder, chromeos_update_engine.UpdateMetadata.DynamicPartitionMetadataOrBuilder>( - getDynamicPartitionMetadata(), + public chromeos_update_engine.UpdateMetadata.ApexInfo.Builder addApexInfoBuilder() { + return getApexInfoFieldBuilder().addBuilder( + chromeos_update_engine.UpdateMetadata.ApexInfo.getDefaultInstance()); + } + /** + *
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
+       * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + public chromeos_update_engine.UpdateMetadata.ApexInfo.Builder addApexInfoBuilder( + int index) { + return getApexInfoFieldBuilder().addBuilder( + index, chromeos_update_engine.UpdateMetadata.ApexInfo.getDefaultInstance()); + } + /** + *
+       * Information on compressed APEX to figure out how much space is required for
+       * their decompression
+       * 
+ * + * repeated .chromeos_update_engine.ApexInfo apex_info = 17; + */ + public java.util.List + getApexInfoBuilderList() { + return getApexInfoFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.ApexInfo, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder, chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder> + getApexInfoFieldBuilder() { + if (apexInfoBuilder_ == null) { + apexInfoBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + chromeos_update_engine.UpdateMetadata.ApexInfo, chromeos_update_engine.UpdateMetadata.ApexInfo.Builder, chromeos_update_engine.UpdateMetadata.ApexInfoOrBuilder>( + apexInfo_, + ((bitField0_ & 0x00000100) != 0), getParentForChildren(), isClean()); - dynamicPartitionMetadata_ = null; + apexInfo_ = null; } - return dynamicPartitionMetadataBuilder_; + return apexInfoBuilder_; } - private boolean partialUpdate_ ; + private java.lang.Object securityPatchLevel_ = ""; /** *
-       * If the payload only updates a subset of partitions on the device.
+       * Security patch level of the device, usually in the format of
+       * yyyy-mm-dd
        * 
* - * optional bool partial_update = 16; - * @return Whether the partialUpdate field is set. + * optional string security_patch_level = 18; + * @return Whether the securityPatchLevel field is set. */ - @java.lang.Override - public boolean hasPartialUpdate() { - return ((bitField0_ & 0x00008000) != 0); + public boolean hasSecurityPatchLevel() { + return ((bitField0_ & 0x00000200) != 0); } /** *
-       * If the payload only updates a subset of partitions on the device.
+       * Security patch level of the device, usually in the format of
+       * yyyy-mm-dd
        * 
* - * optional bool partial_update = 16; - * @return The partialUpdate. + * optional string security_patch_level = 18; + * @return The securityPatchLevel. */ - @java.lang.Override - public boolean getPartialUpdate() { - return partialUpdate_; + public java.lang.String getSecurityPatchLevel() { + java.lang.Object ref = securityPatchLevel_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + securityPatchLevel_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } } /** *
-       * If the payload only updates a subset of partitions on the device.
+       * Security patch level of the device, usually in the format of
+       * yyyy-mm-dd
        * 
* - * optional bool partial_update = 16; - * @param value The partialUpdate to set. + * optional string security_patch_level = 18; + * @return The bytes for securityPatchLevel. + */ + public com.google.protobuf.ByteString + getSecurityPatchLevelBytes() { + java.lang.Object ref = securityPatchLevel_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + securityPatchLevel_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Security patch level of the device, usually in the format of
+       * yyyy-mm-dd
+       * 
+ * + * optional string security_patch_level = 18; + * @param value The securityPatchLevel to set. * @return This builder for chaining. */ - public Builder setPartialUpdate(boolean value) { - bitField0_ |= 0x00008000; - partialUpdate_ = value; + public Builder setSecurityPatchLevel( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + securityPatchLevel_ = value; + bitField0_ |= 0x00000200; onChanged(); return this; } /** *
-       * If the payload only updates a subset of partitions on the device.
+       * Security patch level of the device, usually in the format of
+       * yyyy-mm-dd
        * 
* - * optional bool partial_update = 16; + * optional string security_patch_level = 18; * @return This builder for chaining. */ - public Builder clearPartialUpdate() { - bitField0_ = (bitField0_ & ~0x00008000); - partialUpdate_ = false; + public Builder clearSecurityPatchLevel() { + securityPatchLevel_ = getDefaultInstance().getSecurityPatchLevel(); + bitField0_ = (bitField0_ & ~0x00000200); + onChanged(); + return this; + } + /** + *
+       * Security patch level of the device, usually in the format of
+       * yyyy-mm-dd
+       * 
+ * + * optional string security_patch_level = 18; + * @param value The bytes for securityPatchLevel to set. + * @return This builder for chaining. + */ + public Builder setSecurityPatchLevelBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + securityPatchLevel_ = value; + bitField0_ |= 0x00000200; onChanged(); return this; } @@ -18398,7 +20372,18 @@ public final class UpdateMetadata { com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new DeltaArchiveManifest(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -18420,52 +20405,67 @@ public final class UpdateMetadata { private static final com.google.protobuf.Descriptors.Descriptor internal_static_chromeos_update_engine_Extent_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_chromeos_update_engine_Extent_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_chromeos_update_engine_Signatures_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_chromeos_update_engine_Signatures_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_chromeos_update_engine_Signatures_Signature_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_chromeos_update_engine_Signatures_Signature_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_chromeos_update_engine_PartitionInfo_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_chromeos_update_engine_PartitionInfo_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_chromeos_update_engine_ImageInfo_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_chromeos_update_engine_ImageInfo_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_chromeos_update_engine_InstallOperation_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_chromeos_update_engine_InstallOperation_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_chromeos_update_engine_CowMergeOperation_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_chromeos_update_engine_CowMergeOperation_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_chromeos_update_engine_PartitionUpdate_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_chromeos_update_engine_PartitionUpdate_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_chromeos_update_engine_DynamicPartitionGroup_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_chromeos_update_engine_DynamicPartitionGroup_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_chromeos_update_engine_VABCFeatureSet_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_chromeos_update_engine_VABCFeatureSet_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_chromeos_update_engine_DynamicPartitionMetadata_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_chromeos_update_engine_DynamicPartitionMetadata_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_chromeos_update_engine_ApexInfo_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_chromeos_update_engine_ApexInfo_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_chromeos_update_engine_ApexMetadata_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_chromeos_update_engine_ApexMetadata_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_chromeos_update_engine_DeltaArchiveManifest_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_chromeos_update_engine_DeltaArchiveManifest_fieldAccessorTable; @@ -18484,67 +20484,74 @@ public final class UpdateMetadata { "ignatures.Signature\032O\n\tSignature\022\023\n\007vers" + "ion\030\001 \001(\rB\002\030\001\022\014\n\004data\030\002 \001(\014\022\037\n\027unpadded_" + "signature_size\030\003 \001(\007\"+\n\rPartitionInfo\022\014\n" + - "\004size\030\001 \001(\004\022\014\n\004hash\030\002 \001(\014\"w\n\tImageInfo\022\r" + - "\n\005board\030\001 \001(\t\022\013\n\003key\030\002 \001(\t\022\017\n\007channel\030\003 " + - "\001(\t\022\017\n\007version\030\004 \001(\t\022\025\n\rbuild_channel\030\005 " + - "\001(\t\022\025\n\rbuild_version\030\006 \001(\t\"\356\003\n\020InstallOp" + - "eration\022;\n\004type\030\001 \002(\0162-.chromeos_update_" + - "engine.InstallOperation.Type\022\023\n\013data_off" + - "set\030\002 \001(\004\022\023\n\013data_length\030\003 \001(\004\0223\n\013src_ex" + - "tents\030\004 \003(\0132\036.chromeos_update_engine.Ext" + - "ent\022\022\n\nsrc_length\030\005 \001(\004\0223\n\013dst_extents\030\006" + - " \003(\0132\036.chromeos_update_engine.Extent\022\022\n\n" + - "dst_length\030\007 \001(\004\022\030\n\020data_sha256_hash\030\010 \001" + - "(\014\022\027\n\017src_sha256_hash\030\t \001(\014\"\255\001\n\004Type\022\013\n\007" + - "REPLACE\020\000\022\016\n\nREPLACE_BZ\020\001\022\014\n\004MOVE\020\002\032\002\010\001\022" + - "\016\n\006BSDIFF\020\003\032\002\010\001\022\017\n\013SOURCE_COPY\020\004\022\021\n\rSOUR" + - "CE_BSDIFF\020\005\022\016\n\nREPLACE_XZ\020\010\022\010\n\004ZERO\020\006\022\013\n" + - "\007DISCARD\020\007\022\021\n\rBROTLI_BSDIFF\020\n\022\014\n\010PUFFDIF" + - "F\020\t\"\327\005\n\017PartitionUpdate\022\026\n\016partition_nam" + - "e\030\001 \002(\t\022\027\n\017run_postinstall\030\002 \001(\010\022\030\n\020post" + - "install_path\030\003 \001(\t\022\027\n\017filesystem_type\030\004 " + - "\001(\t\022M\n\027new_partition_signature\030\005 \003(\0132,.c" + - "hromeos_update_engine.Signatures.Signatu" + - "re\022A\n\022old_partition_info\030\006 \001(\0132%.chromeo" + - "s_update_engine.PartitionInfo\022A\n\022new_par" + - "tition_info\030\007 \001(\0132%.chromeos_update_engi" + - "ne.PartitionInfo\022<\n\noperations\030\010 \003(\0132(.c" + - "hromeos_update_engine.InstallOperation\022\034" + - "\n\024postinstall_optional\030\t \001(\010\022=\n\025hash_tre" + - "e_data_extent\030\n \001(\0132\036.chromeos_update_en" + - "gine.Extent\0228\n\020hash_tree_extent\030\013 \001(\0132\036." + - "chromeos_update_engine.Extent\022\033\n\023hash_tr" + - "ee_algorithm\030\014 \001(\t\022\026\n\016hash_tree_salt\030\r \001" + - "(\014\0227\n\017fec_data_extent\030\016 \001(\0132\036.chromeos_u" + - "pdate_engine.Extent\0222\n\nfec_extent\030\017 \001(\0132" + - "\036.chromeos_update_engine.Extent\022\024\n\tfec_r" + - "oots\030\020 \001(\r:\0012\"L\n\025DynamicPartitionGroup\022\014" + - "\n\004name\030\001 \002(\t\022\014\n\004size\030\002 \001(\004\022\027\n\017partition_" + - "names\030\003 \003(\t\"s\n\030DynamicPartitionMetadata\022" + - "=\n\006groups\030\001 \003(\0132-.chromeos_update_engine" + - ".DynamicPartitionGroup\022\030\n\020snapshot_enabl" + - "ed\030\002 \001(\010\"\311\006\n\024DeltaArchiveManifest\022D\n\022ins" + - "tall_operations\030\001 \003(\0132(.chromeos_update_" + - "engine.InstallOperation\022K\n\031kernel_instal" + - "l_operations\030\002 \003(\0132(.chromeos_update_eng" + - "ine.InstallOperation\022\030\n\nblock_size\030\003 \001(\r" + - ":\0044096\022\031\n\021signatures_offset\030\004 \001(\004\022\027\n\017sig" + - "natures_size\030\005 \001(\004\022>\n\017old_kernel_info\030\006 " + - "\001(\0132%.chromeos_update_engine.PartitionIn" + - "fo\022>\n\017new_kernel_info\030\007 \001(\0132%.chromeos_u" + - "pdate_engine.PartitionInfo\022>\n\017old_rootfs" + - "_info\030\010 \001(\0132%.chromeos_update_engine.Par" + - "titionInfo\022>\n\017new_rootfs_info\030\t \001(\0132%.ch" + - "romeos_update_engine.PartitionInfo\0229\n\016ol" + - "d_image_info\030\n \001(\0132!.chromeos_update_eng" + - "ine.ImageInfo\0229\n\016new_image_info\030\013 \001(\0132!." + - "chromeos_update_engine.ImageInfo\022\030\n\rmino" + - "r_version\030\014 \001(\r:\0010\022;\n\npartitions\030\r \003(\0132\'" + - ".chromeos_update_engine.PartitionUpdate\022" + - "\025\n\rmax_timestamp\030\016 \001(\003\022T\n\032dynamic_partit" + - "ion_metadata\030\017 \001(\01320.chromeos_update_eng" + - "ine.DynamicPartitionMetadata\022\026\n\016partial_" + - "update\030\020 \001(\010B\002H\003" + "\004size\030\001 \001(\004\022\014\n\004hash\030\002 \001(\014\"\246\004\n\020InstallOpe" + + "ration\022;\n\004type\030\001 \002(\0162-.chromeos_update_e" + + "ngine.InstallOperation.Type\022\023\n\013data_offs" + + "et\030\002 \001(\004\022\023\n\013data_length\030\003 \001(\004\0223\n\013src_ext" + + "ents\030\004 \003(\0132\036.chromeos_update_engine.Exte" + + "nt\022\022\n\nsrc_length\030\005 \001(\004\0223\n\013dst_extents\030\006 " + + "\003(\0132\036.chromeos_update_engine.Extent\022\022\n\nd" + + "st_length\030\007 \001(\004\022\030\n\020data_sha256_hash\030\010 \001(" + + "\014\022\027\n\017src_sha256_hash\030\t \001(\014\"\345\001\n\004Type\022\013\n\007R" + + "EPLACE\020\000\022\016\n\nREPLACE_BZ\020\001\022\014\n\004MOVE\020\002\032\002\010\001\022\016" + + "\n\006BSDIFF\020\003\032\002\010\001\022\017\n\013SOURCE_COPY\020\004\022\021\n\rSOURC" + + "E_BSDIFF\020\005\022\016\n\nREPLACE_XZ\020\010\022\010\n\004ZERO\020\006\022\013\n\007" + + "DISCARD\020\007\022\021\n\rBROTLI_BSDIFF\020\n\022\014\n\010PUFFDIFF" + + "\020\t\022\014\n\010ZUCCHINI\020\013\022\022\n\016LZ4DIFF_BSDIFF\020\014\022\024\n\020" + + "LZ4DIFF_PUFFDIFF\020\r\"\201\002\n\021CowMergeOperation" + + "\022<\n\004type\030\001 \001(\0162..chromeos_update_engine." + + "CowMergeOperation.Type\0222\n\nsrc_extent\030\002 \001" + + "(\0132\036.chromeos_update_engine.Extent\0222\n\nds" + + "t_extent\030\003 \001(\0132\036.chromeos_update_engine." + + "Extent\022\022\n\nsrc_offset\030\004 \001(\r\"2\n\004Type\022\014\n\010CO" + + "W_COPY\020\000\022\013\n\007COW_XOR\020\001\022\017\n\013COW_REPLACE\020\002\"\310" + + "\006\n\017PartitionUpdate\022\026\n\016partition_name\030\001 \002" + + "(\t\022\027\n\017run_postinstall\030\002 \001(\010\022\030\n\020postinsta" + + "ll_path\030\003 \001(\t\022\027\n\017filesystem_type\030\004 \001(\t\022M" + + "\n\027new_partition_signature\030\005 \003(\0132,.chrome" + + "os_update_engine.Signatures.Signature\022A\n" + + "\022old_partition_info\030\006 \001(\0132%.chromeos_upd" + + "ate_engine.PartitionInfo\022A\n\022new_partitio" + + "n_info\030\007 \001(\0132%.chromeos_update_engine.Pa" + + "rtitionInfo\022<\n\noperations\030\010 \003(\0132(.chrome" + + "os_update_engine.InstallOperation\022\034\n\024pos" + + "tinstall_optional\030\t \001(\010\022=\n\025hash_tree_dat" + + "a_extent\030\n \001(\0132\036.chromeos_update_engine." + + "Extent\0228\n\020hash_tree_extent\030\013 \001(\0132\036.chrom" + + "eos_update_engine.Extent\022\033\n\023hash_tree_al" + + "gorithm\030\014 \001(\t\022\026\n\016hash_tree_salt\030\r \001(\014\0227\n" + + "\017fec_data_extent\030\016 \001(\0132\036.chromeos_update" + + "_engine.Extent\0222\n\nfec_extent\030\017 \001(\0132\036.chr" + + "omeos_update_engine.Extent\022\024\n\tfec_roots\030" + + "\020 \001(\r:\0012\022\017\n\007version\030\021 \001(\t\022C\n\020merge_opera" + + "tions\030\022 \003(\0132).chromeos_update_engine.Cow" + + "MergeOperation\022\031\n\021estimate_cow_size\030\023 \001(" + + "\004\"L\n\025DynamicPartitionGroup\022\014\n\004name\030\001 \002(\t" + + "\022\014\n\004size\030\002 \001(\004\022\027\n\017partition_names\030\003 \003(\t\"" + + "8\n\016VABCFeatureSet\022\020\n\010threaded\030\001 \001(\010\022\024\n\014b" + + "atch_writes\030\002 \001(\010\"\200\002\n\030DynamicPartitionMe" + + "tadata\022=\n\006groups\030\001 \003(\0132-.chromeos_update" + + "_engine.DynamicPartitionGroup\022\030\n\020snapsho" + + "t_enabled\030\002 \001(\010\022\024\n\014vabc_enabled\030\003 \001(\010\022\036\n" + + "\026vabc_compression_param\030\004 \001(\t\022\023\n\013cow_ver" + + "sion\030\005 \001(\r\022@\n\020vabc_feature_set\030\006 \001(\0132&.c" + + "hromeos_update_engine.VABCFeatureSet\"c\n\010" + + "ApexInfo\022\024\n\014package_name\030\001 \001(\t\022\017\n\007versio" + + "n\030\002 \001(\003\022\025\n\ris_compressed\030\003 \001(\010\022\031\n\021decomp" + + "ressed_size\030\004 \001(\003\"C\n\014ApexMetadata\0223\n\tape" + + "x_info\030\001 \003(\0132 .chromeos_update_engine.Ap" + + "exInfo\"\303\003\n\024DeltaArchiveManifest\022\030\n\nblock" + + "_size\030\003 \001(\r:\0044096\022\031\n\021signatures_offset\030\004" + + " \001(\004\022\027\n\017signatures_size\030\005 \001(\004\022\030\n\rminor_v" + + "ersion\030\014 \001(\r:\0010\022;\n\npartitions\030\r \003(\0132\'.ch" + + "romeos_update_engine.PartitionUpdate\022\025\n\r" + + "max_timestamp\030\016 \001(\003\022T\n\032dynamic_partition" + + "_metadata\030\017 \001(\01320.chromeos_update_engine" + + ".DynamicPartitionMetadata\022\026\n\016partial_upd" + + "ate\030\020 \001(\010\0223\n\tapex_info\030\021 \003(\0132 .chromeos_" + + "update_engine.ApexInfo\022\034\n\024security_patch" + + "_level\030\022 \001(\tJ\004\010\001\020\002J\004\010\002\020\003J\004\010\006\020\007J\004\010\007\020\010J\004\010\010" + + "\020\tJ\004\010\t\020\nJ\004\010\n\020\013J\004\010\013\020\014" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -18574,42 +20581,60 @@ public final class UpdateMetadata { com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_chromeos_update_engine_PartitionInfo_descriptor, new java.lang.String[] { "Size", "Hash", }); - internal_static_chromeos_update_engine_ImageInfo_descriptor = - getDescriptor().getMessageTypes().get(3); - internal_static_chromeos_update_engine_ImageInfo_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_chromeos_update_engine_ImageInfo_descriptor, - new java.lang.String[] { "Board", "Key", "Channel", "Version", "BuildChannel", "BuildVersion", }); internal_static_chromeos_update_engine_InstallOperation_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(3); internal_static_chromeos_update_engine_InstallOperation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_chromeos_update_engine_InstallOperation_descriptor, new java.lang.String[] { "Type", "DataOffset", "DataLength", "SrcExtents", "SrcLength", "DstExtents", "DstLength", "DataSha256Hash", "SrcSha256Hash", }); + internal_static_chromeos_update_engine_CowMergeOperation_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_chromeos_update_engine_CowMergeOperation_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_chromeos_update_engine_CowMergeOperation_descriptor, + new java.lang.String[] { "Type", "SrcExtent", "DstExtent", "SrcOffset", }); internal_static_chromeos_update_engine_PartitionUpdate_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_chromeos_update_engine_PartitionUpdate_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_chromeos_update_engine_PartitionUpdate_descriptor, - new java.lang.String[] { "PartitionName", "RunPostinstall", "PostinstallPath", "FilesystemType", "NewPartitionSignature", "OldPartitionInfo", "NewPartitionInfo", "Operations", "PostinstallOptional", "HashTreeDataExtent", "HashTreeExtent", "HashTreeAlgorithm", "HashTreeSalt", "FecDataExtent", "FecExtent", "FecRoots", }); + new java.lang.String[] { "PartitionName", "RunPostinstall", "PostinstallPath", "FilesystemType", "NewPartitionSignature", "OldPartitionInfo", "NewPartitionInfo", "Operations", "PostinstallOptional", "HashTreeDataExtent", "HashTreeExtent", "HashTreeAlgorithm", "HashTreeSalt", "FecDataExtent", "FecExtent", "FecRoots", "Version", "MergeOperations", "EstimateCowSize", }); internal_static_chromeos_update_engine_DynamicPartitionGroup_descriptor = getDescriptor().getMessageTypes().get(6); internal_static_chromeos_update_engine_DynamicPartitionGroup_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_chromeos_update_engine_DynamicPartitionGroup_descriptor, new java.lang.String[] { "Name", "Size", "PartitionNames", }); - internal_static_chromeos_update_engine_DynamicPartitionMetadata_descriptor = + internal_static_chromeos_update_engine_VABCFeatureSet_descriptor = getDescriptor().getMessageTypes().get(7); + internal_static_chromeos_update_engine_VABCFeatureSet_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_chromeos_update_engine_VABCFeatureSet_descriptor, + new java.lang.String[] { "Threaded", "BatchWrites", }); + internal_static_chromeos_update_engine_DynamicPartitionMetadata_descriptor = + getDescriptor().getMessageTypes().get(8); internal_static_chromeos_update_engine_DynamicPartitionMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_chromeos_update_engine_DynamicPartitionMetadata_descriptor, - new java.lang.String[] { "Groups", "SnapshotEnabled", }); + new java.lang.String[] { "Groups", "SnapshotEnabled", "VabcEnabled", "VabcCompressionParam", "CowVersion", "VabcFeatureSet", }); + internal_static_chromeos_update_engine_ApexInfo_descriptor = + getDescriptor().getMessageTypes().get(9); + internal_static_chromeos_update_engine_ApexInfo_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_chromeos_update_engine_ApexInfo_descriptor, + new java.lang.String[] { "PackageName", "Version", "IsCompressed", "DecompressedSize", }); + internal_static_chromeos_update_engine_ApexMetadata_descriptor = + getDescriptor().getMessageTypes().get(10); + internal_static_chromeos_update_engine_ApexMetadata_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_chromeos_update_engine_ApexMetadata_descriptor, + new java.lang.String[] { "ApexInfo", }); internal_static_chromeos_update_engine_DeltaArchiveManifest_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(11); internal_static_chromeos_update_engine_DeltaArchiveManifest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_chromeos_update_engine_DeltaArchiveManifest_descriptor, - new java.lang.String[] { "InstallOperations", "KernelInstallOperations", "BlockSize", "SignaturesOffset", "SignaturesSize", "OldKernelInfo", "NewKernelInfo", "OldRootfsInfo", "NewRootfsInfo", "OldImageInfo", "NewImageInfo", "MinorVersion", "Partitions", "MaxTimestamp", "DynamicPartitionMetadata", "PartialUpdate", }); + new java.lang.String[] { "BlockSize", "SignaturesOffset", "SignaturesSize", "MinorVersion", "Partitions", "MaxTimestamp", "DynamicPartitionMetadata", "PartialUpdate", "ApexInfo", "SecurityPatchLevel", }); } // @@protoc_insertion_point(outer_class_scope) diff --git a/bbootimg/src/main/kotlin/ota/Payload.kt b/bbootimg/src/main/kotlin/ota/Payload.kt index 404ae3a..87089e9 100644 --- a/bbootimg/src/main/kotlin/ota/Payload.kt +++ b/bbootimg/src/main/kotlin/ota/Payload.kt @@ -16,8 +16,8 @@ package cc.cfig.droid.ota import cc.cfig.io.Struct import cfig.helper.CryptoHelper.Hasher -import cfig.helper.Helper import cfig.helper.Dumpling +import cfig.helper.Helper import chromeos_update_engine.UpdateMetadata import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.databind.ObjectMapper @@ -181,6 +181,14 @@ class Payload { UpdateMetadata.InstallOperation.Type.REPLACE_XZ -> CommandLine("xzcat") UpdateMetadata.InstallOperation.Type.REPLACE_BZ -> CommandLine("bzcat") UpdateMetadata.InstallOperation.Type.REPLACE -> return inBytes + UpdateMetadata.InstallOperation.Type.ZERO -> { + if (inBytes.any { it.toInt() != 0 }) { + throw IllegalArgumentException("ZERO is not zero") + } + log.warn("op type ZERO: ${inBytes.size} bytes") + return inBytes + } + else -> throw IllegalArgumentException(opType.toString()) } cmd.addArgument("-") @@ -196,7 +204,7 @@ class Payload { sortBy { it.getDstExtents(0).startBlock } } ops.forEach { op -> - log.debug(pu.partitionName + ": " + (op.getDstExtents(0).startBlock * this.manifest.blockSize) + ", size=" + op.dataLength) + log.debug(pu.partitionName + ": " + (op.getDstExtents(0).startBlock * this.manifest.blockSize) + ", size=" + op.dataLength + ", type=" + op.type) val piece = ByteArray(op.dataLength.toInt()).let { ras.seek(this.dataOffset + op.dataOffset) ras.read(it) @@ -210,7 +218,7 @@ class Payload { fun setUp() { File(workDir).let { if (it.exists()) { - log.info("Removing $workDir") + log.info("Removing $workDir") it.deleteRecursively() } log.info("Creating $workDir") @@ -225,9 +233,21 @@ class Payload { val parts = this.manifest.partitionsList.map { it.partitionName } log.info("There are $totalNum partitions $parts") log.info("dumping images to $workDir") - this.manifest.partitionsList.forEach { pu -> - unpackInternal(ras, pu, String.format("%2d/%d", currentNum, totalNum)) - currentNum++ + val partArg = System.getProperty("part", "") + if (partArg.isNotBlank()) { + //Usage: gradle unpack -Dpart=vendor_boot + log.warn("dumping partition [$partArg] only") + this.manifest.partitionsList + .filter { it.partitionName == partArg } + .forEach { pu -> + unpackInternal(ras, pu, String.format("%2d/%d", currentNum, totalNum)) + currentNum++ + } + } else { + this.manifest.partitionsList.forEach { pu -> + unpackInternal(ras, pu, String.format("%2d/%d", currentNum, totalNum)) + currentNum++ + } } } } diff --git a/bbootimg/src/main/kotlin/packable/PayloadBinParser.kt b/bbootimg/src/main/kotlin/packable/PayloadBinParser.kt index e9107c2..9fad30a 100644 --- a/bbootimg/src/main/kotlin/packable/PayloadBinParser.kt +++ b/bbootimg/src/main/kotlin/packable/PayloadBinParser.kt @@ -15,6 +15,7 @@ package cfig.packable import cc.cfig.droid.ota.Payload +import cfig.helper.Helper.Companion.deleteIfExists import org.slf4j.LoggerFactory class PayloadBinParser : IPackable { @@ -45,6 +46,8 @@ class PayloadBinParser : IPackable { } fun clear(fileName: String) { + super.clear() + fileName.deleteIfExists() } override fun flash(fileName: String, deviceName: String) { diff --git a/bbootimg/src/main/resources/known_keys.json b/bbootimg/src/main/resources/known_keys.json index 6b884a9..f0110b6 100644 --- a/bbootimg/src/main/resources/known_keys.json +++ b/bbootimg/src/main/resources/known_keys.json @@ -118,4 +118,11 @@ "algorithm" : "SHA256_RSA4096", "pubk" : "AAAQAB696fOqmcvPXp24WvrWaiOAGtKfhdEcA1qb8i/z1aNA7pMnUaJrP+eWn22VfnViO9+OhvdM6c7+9f6BtThWfyMgtYhGC1iLwBdy9ywNOqY+/AxLKv5IpCCAVL4AyRPf+22ETAjyIqdDykGCRC6LWIGXoWT+fBuZaGGQ635A5lqp1ZhMvaCaCd+fJpZ2NvymO3RRISZyhMaVSMJbGi3p6aLT8NuAzk7VxMIooBV5U5FQ3ExhWSakrjR/zoyFVazzhBtywAv/dXSxivaN/2BpoEXUWlZShk2A1hNkvxT2vIslxXhKUyo38D3f328bDDl9j6hdrZPRwd/iZFH2sWsnzQNZ1Uq/CWIqJxr73sZCx0+EC+h2nYGrhUxPeY1M9ST/bhRroLb67JjGwidKo3LlX5BAysTiUj0jevYmEMRgzCQERxWmknNI/FpySAkAvxO2h9eaJtdcU34MfI62xck3p3rpp+jv88OTV2xUsmaPU2WCVuECkZALzKwGkVpc9uuTRBtviXOpqZcmRjKAcVg1bWFqEsgAONzwyLSUMNkZQbidz+MAObmE5I4NpqDXFU6nz7XWXfKbKQzaG5Mg9TGacBSQY4+dubeUJrO41FxtjHHzImvaLfXD+/EGbaaeqGAjB2Vo02v6dBCXd8bOyOL0rq9kzfTmfQQHjUaEvfGxE1mVJb8oxZ/EwsMVoCj0oz8cgGVVJg65JfvHjHnUKGwWHg9jQIedAZawHvRcYlSulh4BvfiDsHY9zIT5NkZ5gNXP8BFVsXMhX/xWYXa39Tlls2eq6n0s3B/YU+myyYiOL6QFsoNB1QX1fNkZKAgEQpcwRapXHHlvRwdKP8FscyLKmwdBfKg8RZeIZ/9TXL49mq3ocbfrX8se/DdPT61V2nGbApmPErcCrgtbUrxwV1a4LI3C5aMP+52brzOrUYLMeotd8xFgZj1DVgP0nKmuYeq2kzgeTOBWud53KQ+qBcegk942LGGNr1BSuBynkBywTm7iZHidjONcJUgiaB+NnCYewbLDwF21bRphkXthvak/Di2KcVugDUOGblb6X4XNR++ZTnZiBw6IbY85eL2YddPJg4ZH1zNIWa9rRuv9q6VWX1XD5+J92bd34EPuMLrmGvXgYpbfzfuqqLGpPBvbqoRfdgHe7CSe0xa3lDePOTll8sDsKKnr8jOW9CvsbS1s6+x8Nie2UFPwsb/LvfmhhsRTmlZaESRltCOjdZ+XbnSaCw7of/4oQfjk3gLiFNlH6uHDOTdi/QuFsGselWCi8I3NsMf57+1FXiQZsXbR59D+uooDC+J75IDlp2/fkBOVsyTEXe3C4gznsbvoN9GjzkAEo7uti2hjTwhaXHTQ2o3T6XpEBQzj", "sha1" : "b42c87bedcf600d7bebe3dbade2444e9724c3159" -} ] \ No newline at end of file +}, { + "device" : "OnePlus 9", + "manufacturer" : "OnePlus", + "algorithm" : "SHA256_RSA4096", + "pubk" : "AAAQAJ9bJvuspEBdWZsVzvQNS/UIWMBHJaW/gqgIk49TvV6GuPM5lHkWmmSeYBKYcVeGW4QTLfF9sonh1IZFlvRkdhcKsyqz4t33bGqtw+ZEbtHCLC5W3QfnTAtOMlKV/8hVImvJjul0RuBnyTZTVGltmpAeb/lq2gTuzjfxebIyNMkKhzmyIIKPtYWUXzVpz+ZBCqpfVqiRZNMNv24jhD1eDKWR5UgTihhjI/CbZGDPhLOy/C3H02sZRN/pJshZTyL/vv+OVu4ZW4arlN6P9DiXskav9puv4L7PlhWJzlm15ReCUxnmekHK9EAJWIdVcKmcraofUIewki4BPCSRVH7TF/3/Mvmhfjvz8OpCVvGR1qg7OAjA7Do+I9vkSviiXCKL8WT2TVmhmgXpV5hXtrTWBgKdhBo4u5LmiQAyih6CIbM66lubtc00xVwgIsPwIFnpW8KsjT2XCrgXMVcbbyrK52/RJbCC905gaJjd0bzlT630IvGSk04vZb7IhrtVn854iyc7ASwyzM1UyRWDqKf82jVpro6GDz+mhgNs2lQ4+hmrGQ4+YNb1uR5zNxOoW3YVqBRottMtWlNCKrV8UW1VaAOUaIOmL9vudENQ4rSAWGHu3EGfEOvpVUWWcp1VkCpX/2qFgPBT5wxUUhFT674pqVE/d3Epc/M0yoU8oANsj5l7L+8LzSLJE2rE3biMrz4INsgfa+0zwmqFJ5ajPIRbq7Hiu8mt4Vx3bflThOrBZqYjWszZRN5Pdln4DeC9SF+RFf6dJ1q/oyWGRVYaVgKU27fV1VCpclwfDpupbSEohGoTiP5+mTI5v7sa3BPUQbwBSKNRjOgnVQh189mezW/u9b9+y0lqqcUGnEVXczG/RmlwQ8wPBnX8NWIytjCvZT3Zy7siG1t0yKuH+CNM51Ewz++91yAzdPBqV4GfpChZIBCN0qeLBvRcUk99NAC8XmY7A0PpQVy9P/2gg2U2H9b+UnyY1Jcmfs4BNlDbUPYxQK+9CRJm/AV7Lg5ewmkTKqhycPuh62veRLnhrgULo7SHbN2Bfeg32S2gVLepairXgPsGBdDJc7sj01UMrbcQW3m+TQ+vfOJMpn8yHZS52lz1btRFQn9BtEQg2LR6FL0ev2NDaT3g6Z20v6ICyCKdGYAlN9CWQWbd2tfgsmqvZAjopE4DVHFbN6R5FBTo6/AMkAtXVNBH613CLKab5qdjgoGhSQ3dFXoAMsPZqDEUv/8AIASPME+hNHU9QEL2ngBEp8SVZTc4yHXB9Z9/hYmjzaw/KvBHHg6+Cree89GmznDfwx4nlCK777QvMGguvXYbHJL4odvnBxz3YVgfnSBbxO2+y0JoZCrNwjx2wSfCq2SfVgAb6xPv", + "sha1" : "dcd6a21568bb4d10c8c267ff0a122c6597b4a045" +} +] diff --git a/build.gradle.kts b/build.gradle.kts index 747a83e..6a73af6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -37,6 +37,7 @@ tasks { classpath = files("bbootimg/build/libs/bbootimg.jar") this.maxHeapSize = "128m" enableAssertions = true + systemProperties(mapOf("part" to System.getProperty("part", ""))) args("unpack") } unpackTask.dependsOn("bbootimg:jar") diff --git a/helper/build.gradle.kts b/helper/build.gradle.kts index 3248ccc..ea24914 100644 --- a/helper/build.gradle.kts +++ b/helper/build.gradle.kts @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") version "1.9.0" + kotlin("jvm") version "1.9.20" `java-library` application } diff --git a/helper/src/test/kotlin/cfig/helper/OpenSslHelperTest.kt b/helper/src/test/kotlin/cfig/helper/OpenSslHelperTest.kt index 64cabcc..0e38860 100644 --- a/helper/src/test/kotlin/cfig/helper/OpenSslHelperTest.kt +++ b/helper/src/test/kotlin/cfig/helper/OpenSslHelperTest.kt @@ -14,9 +14,6 @@ package cfig.helper -import org.bouncycastle.asn1.est.CsrAttrs -import org.bouncycastle.cert.X509CertificateHolder -import org.bouncycastle.cert.crmf.CertificateRequestMessageBuilder import org.junit.Test import org.slf4j.LoggerFactory import java.io.File diff --git a/lazybox/build.gradle.kts b/lazybox/build.gradle.kts index 9e950f3..1840588 100644 --- a/lazybox/build.gradle.kts +++ b/lazybox/build.gradle.kts @@ -7,7 +7,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") version "1.9.0" + kotlin("jvm") version "1.9.20" application }