)]}'
{
  "log": [
    {
      "commit": "4ff049167edfe381966619f3123681f2e6c02138",
      "tree": "597b67f91648f125e2ac13ca16f1d83a3bd686db",
      "parents": [
        "17be0f93a8bbc1436df6c52824b9e59c4d32f806"
      ],
      "author": {
        "name": "Daniel Zheng",
        "email": "zhengdaniel@google.com",
        "time": "Mon Jan 08 14:49:51 2024 -0800"
      },
      "committer": {
        "name": "Daniel Zheng",
        "email": "zhengdaniel@google.com",
        "time": "Tue Jan 30 09:24:23 2024 -0800"
      },
      "message": "update_engine: use compression_factor\n\nUse compression factor in update_engine. This change allows\nupdate_enginge to read from dynamic_partitions_info.txt the build prop\nthat customizes the compression factor.\n\nTest: th\nChange-Id: I834917ddc44003b22623605f3c80d448a16b7ef3\n"
    },
    {
      "commit": "09d022d90556fdad80b666ce3c3482d89d51deca",
      "tree": "8b90865b3315be20a4afb6da87d95f5b00a7199e",
      "parents": [
        "d2a298df4129a23a9b47ada5c198131cdfbee7df"
      ],
      "author": {
        "name": "Daniel Zheng",
        "email": "zhengdaniel@google.com",
        "time": "Mon Nov 13 15:30:03 2023 -0800"
      },
      "committer": {
        "name": "Daniel Zheng",
        "email": "zhengdaniel@google.com",
        "time": "Thu Jan 04 19:03:57 2024 +0000"
      },
      "message": "update_engine: use cow_size_info\n\nUpdating update_engine to use a struct called CowSizeInfo which contains\nextra parameters needed in v3 of cow format. These fields should be set\nin delta archive manifest and passed to snapshot.cpp which will then\nuse the fields to correctly configure the cow with a correctly sized\noperation buffer space.\n\nTest: ota on cuttlefish\nChange-Id: I8306bf3e4bbc3fcd8f2e31be116fa0623022c227\n"
    },
    {
      "commit": "87484b05ea543ce93316c0ecfa19820463498cda",
      "tree": "2ba2f7952e627c1ee2e0c5faee80ced45cfe6c2e",
      "parents": [
        "ab15bebf5b9d763f2b0ac69288798539d75004c9"
      ],
      "author": {
        "name": "Devendra Singhi",
        "email": "devendra.singhi@ittiam.com",
        "time": "Tue Nov 22 14:10:14 2022 +0530"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 09 04:19:07 2022 +0000"
      },
      "message": "Added update_metadata-protos-full\n\nAdded update_metadata-protos-full to build a full proto library and updated the Android.bp to resolve all dependencies\n\nTest: m update_metadata-protos-full\nBug: 193202513\n\nChange-Id: I289ea59df944649e5e65819c37fdf73b65de8736\n"
    },
    {
      "commit": "96975b7b6d4bd67024fec29ca8ae465b60ebc97f",
      "tree": "af6dfd98a5bd09528f83c99fc1d67702a219b44c",
      "parents": [
        "301d17205aba03605645cd4eadfb7402ce8608e0"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Mon Nov 28 11:19:57 2022 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 29 01:42:04 2022 +0000"
      },
      "message": "Add feature flags in OTA manifest to tune VAB behavior\n\nWe are adding more and more features/knobs to Virtual AB. In addition to\ntuning these knobs at build time, we should allow partners to tune these\nflags at OTA install time as well.\n\nTest: th\nChange-Id: I6678a77799baa7160424b62badb8f738be4ecf9d\n"
    },
    {
      "commit": "cfc531fda3771ab7b485dad42ecbc8a2bde5cdcd",
      "tree": "b5dc00fa18c4ab612e211d04f573004dd2d8500c",
      "parents": [
        "b7162c1efd8d90b8561b7e017c888c5b3a8568b0"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Aug 24 17:58:53 2022 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 29 23:26:53 2022 +0000"
      },
      "message": "Add security patch level to update manifest\n\nWhen installing a full OTA, the target build might have a newer\ntimestamp but older SPL. In these caess, update_engine will fail to\nrecognize the SPL downgrade and skip data wipe, causing /data decryption\nto fail on next reboot. To fix this issue, add a SPL field to update\nmanifest. update_engine will check this field on OTA install and\nschedule data wipe as needed.\n\nTest: install OTA with newer timestamp but older SPL, make sure data wipe is scheduled\nBug: 242812845\n\n\nChange-Id: I9d1dd73b46323939bbf990e29da5cc0ba79f86e2\n"
    },
    {
      "commit": "9ae7dc60450b83da2f5ad1bc32ee4e393b69ebbe",
      "tree": "0199d301e7c69a4d831d5cb14aeeeeb37d72674b",
      "parents": [
        "2bedf8ce32362fdcfec8a6d676180d5fdbdd79b9"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Apr 05 14:24:06 2022 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 05 22:53:32 2022 +0000"
      },
      "message": "Remove deprecated fields from update_metadata protobuf\n\nMark them as reserved field numbers, this prevents newly added fields\nfrom using these field numbers. Also prevents us from accidentally\nreferencing deprecated fields in code.\n\nTest: th\nChange-Id: I887d8c7a7c6c0237a9249e3338c90ed8e73a72e7\n"
    },
    {
      "commit": "f67dc4974dbce6eecf361d9f3915453edde60916",
      "tree": "b9816ccfa22f6600e43e5628cba54065a0ab6ea8",
      "parents": [
        "7608cd4a55df009e014c51a9b422892b964e3456"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Dec 08 15:35:31 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 10 01:02:25 2021 +0000"
      },
      "message": "Add install op types for lz4diff\n\nAdded two types, but both types will be handled by the same patching\nfunction. Two types were added instead of one because this way ota\nanalyzer can show us a break down between BSDIFF and PUFFDIFF.\n\nTest: th\nBug: 206729162\n\nChange-Id: I8aa28516c0e2ebae73190102d2f4d36e94a35d42\n"
    },
    {
      "commit": "c700169566bcd89cf96c9531fcae911277976d7d",
      "tree": "3e0a24f8a6353c8712ee991af2e8f1e77160f346",
      "parents": [
        "52c4b79fe4108ad9979f6da05e9c8d7605fe13ca"
      ],
      "author": {
        "name": "Tianjie",
        "email": "xunchang@google.com",
        "time": "Thu Aug 26 16:06:05 2021 -0700"
      },
      "committer": {
        "name": "Tianjie",
        "email": "xunchang@google.com",
        "time": "Mon Aug 30 22:44:59 2021 -0700"
      },
      "message": "Add zucchini support in update_engine\n\nSupport zucchini as a diff algorithm in delta generator.\nNote we won\u0027t update the max support version until the\ninstallation support is in place.\n\nBug: 197361113\nTest: TH, generate a diff package\nChange-Id: I92db1e7ab2ac4aef104a715c089b136f138064e9\n"
    },
    {
      "commit": "0de22fc8656c9a028637f591e33b260a2179cacd",
      "tree": "a710ed2a8de51250d64498fb1c72168fedce8837",
      "parents": [
        "cb419e6ffd41992a12be064c37d2df9f4f04cf30"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Mon Jun 14 13:24:39 2021 -0400"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 13 23:30:09 2021 +0000"
      },
      "message": "Add proto field to store xor operation in update manifest\n\nWhen generating OTA, we pre-compute which blocks inside a BSDIFF\ncan be represented by XOR operation, and store these blocks in\nthe merge sequence. When installing OTA, delta_performer\nlooks at the merge sequence, and convert blocks to specified\nCOW op type. If a block does not show up in the merge sequence,\nit is assumed to be COW_REPLACE type.\n\nTest: th\nBug: 177104308\n\nChange-Id: If04ca9cae036f2d3a365dcf92ba2447f7b08005a\n"
    },
    {
      "commit": "3632df977f9d2c457f5524d847669318058b3fa3",
      "tree": "1d330c2d0e3ff865371bd3de6876f67f9e4a7447",
      "parents": [
        "aedfef3c2f2834645654833bae6fd1daf6ca1040"
      ],
      "author": {
        "name": "Akilesh Kailash",
        "email": "akailash@google.com",
        "time": "Tue Apr 13 22:30:15 2021 +0000"
      },
      "committer": {
        "name": "Akilesh Kailash",
        "email": "akailash@google.com",
        "time": "Fri Apr 30 18:08:52 2021 +0000"
      },
      "message": "Add COW version to the update_metadata.proto\n\nCOW versioning will be used to detect if the COW library\nversion matches with the version in the proto file.\nIf not, VABC is disabled.\n\nBug: 183863613\nTest: Apply OTA and verifiy if VABC is disabled if the versioning\ndoesn\u0027t match\nSigned-off-by: Akilesh Kailash \u003cakailash@google.com\u003e\nChange-Id: I2d8690bd30d3436c6eb281d3e8d6545cb4888a75\n"
    },
    {
      "commit": "4ca06c192db57c1c066bd03c783da7db06bcda10",
      "tree": "35a4105d3e1567cb4758fb2370ef8b2331ad9ccd",
      "parents": [
        "51aad993ddbf5acef3d4d95ac76fe938678af24b"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Feb 04 17:16:40 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Mon Feb 22 16:16:18 2021 -0500"
      },
      "message": "Add vabc_compression parameter to update_metadata\n\nTest: treehugger\nChange-Id: Icc65db9a7c4fbdf22376f9900016ae1b7058c611\n"
    },
    {
      "commit": "deb34459c3a14a30b1824c267daadc02812255dc",
      "tree": "6331c202ac5be21091b2ec05bf8d5ebc3279ce85",
      "parents": [
        "bab11c59e6f894022ef87aacbd89baca4556ee8e"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Jan 21 11:54:36 2021 -0500"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 11 05:02:06 2021 +0000"
      },
      "message": "Reland: Pass apex_info.pb file to delta_generator\n\ntarget_files contain META/apex_info.pb, which contains metadata about\ncompressed apexes. Extract this file from target_file.zip, and pass it\nto delta_generator. delta_generator will then copy these data to\nupdate_metadata\n\nTest: generate an OTA, make sure a device running an older build can\ninstall the OTA\nBug: 172911822\n\nChange-Id: If0e185a32262a849d533c3316ffdf205cb6628b6\n"
    },
    {
      "commit": "9dd2d4f8ae130aa54cdbec78c16cada7fba9de69",
      "tree": "68e5f2b9bbfa689e53ee60b2fd674380b3f2162a",
      "parents": [
        "0a52f1b9a9d99424a63105aa7ae09114f24e56ac"
      ],
      "author": {
        "name": "Mohammad Samiul Islam",
        "email": "samiul@google.com",
        "time": "Wed Jan 20 21:33:54 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 04 00:21:31 2021 +0000"
      },
      "message": "Reland: Add ApexInfo field to update_metadata.proto\n\nApexInfo defination has been duplicated from ota_metadata.proto\n\nBug: 172911822\nTest: m\nTest: atest update_engine_unittests:PayloadPropertiesTest\nChange-Id: I25b11fdeff4a9ad927f5bcb866660f4b66e563fe\n"
    },
    {
      "commit": "e34db34d58985bfdf1131037f4585ad0bf600de0",
      "tree": "b5839c5bcff612ab2772a18d333d3e9da57e8f6b",
      "parents": [
        "195d0a9e38a6f53ab2756b91f5cdda2ec466a356"
      ],
      "author": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Jan 30 22:00:56 2021 +0000"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Jan 30 22:01:29 2021 +0000"
      },
      "message": "Revert \"Add ApexInfo field to update_metadata.proto\"\n\nThis reverts commit 8e2dce0ccc2699a0df9d8473fa586811f4b1b69c.\n\nReason for revert:  b/178908708\n\nChange-Id: I76f09bdb467b4f9f13fe7a0ae28c55e08fea197a\n"
    },
    {
      "commit": "195d0a9e38a6f53ab2756b91f5cdda2ec466a356",
      "tree": "1173db93bffda2cf3bdbdeedc759548c003d1163",
      "parents": [
        "2e3cdae869b4bc6ca5070b9dcd11fb737016ceb9"
      ],
      "author": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Jan 30 22:00:45 2021 +0000"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Jan 30 22:01:19 2021 +0000"
      },
      "message": "Revert \"Pass apex_info.pb file to delta_generator\"\n\nThis reverts commit 4e5da3e9d7459e3d983db943ebf3cb4c36af9c60.\n\nReason for revert:  b/178908708\n\nChange-Id: I616da64ffda5b94044f3493861d6d01aebfaad61\n"
    },
    {
      "commit": "4e5da3e9d7459e3d983db943ebf3cb4c36af9c60",
      "tree": "cfea34ac39f02a7b9823a2903a6067e94bcfdd71",
      "parents": [
        "838793dc39746fd0eba99daaa0f62f8a402777e5"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Jan 21 11:54:36 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Jan 28 16:56:59 2021 -0500"
      },
      "message": "Pass apex_info.pb file to delta_generator\n\ntarget_files contain META/apex_info.pb, which contains metadata about\ncompressed apexes. Extract this file from target_file.zip, and pass it\nto delta_generator. delta_generator will then copy these data to\nupdate_metadata\n\nTest: generate an OTA\nBug: 172911822\nChange-Id: Ia4babb9e711a92f2b78ef8e1dd6ad35d0a2bb5a8\n"
    },
    {
      "commit": "8e2dce0ccc2699a0df9d8473fa586811f4b1b69c",
      "tree": "9c5375920912b062968fd99d933f9d338efcd37a",
      "parents": [
        "95f89e9add8c6ab12d70935d3327f2576d4aa1df"
      ],
      "author": {
        "name": "Mohammad Samiul Islam",
        "email": "samiul@google.com",
        "time": "Wed Jan 20 21:33:54 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 27 07:11:01 2021 +0000"
      },
      "message": "Add ApexInfo field to update_metadata.proto\n\nApexInfo defination has been duplicated from ota_metadata.proto\n\nBug: 172911822\nTest: m\nTest: atest update_engine_unittests:PayloadPropertiesTest\nChange-Id: Ife95e27977be1e32999d9777b226e0eeb644f3fc\n"
    },
    {
      "commit": "ad8ea1059bf8a68d25fc3883b7c20f8f41207de7",
      "tree": "311aa495b00070720498c2e468f6e4b4c5dbc485",
      "parents": [
        "22b62e4133bd7ea028f04409e9cb0ec09d45e8db"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Jan 14 10:14:44 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Jan 20 09:42:40 2021 -0500"
      },
      "message": "Add a \"vabc_enabled\" flag to update_metadata\n\nWhen doing a downgrade build, the target build might not support vabc.\nSo disable vabc in this case.\n\nTest: treehugger\nChange-Id: Ie5a56adf99b495a40d1caafbda6466181da1bc10\n"
    },
    {
      "commit": "42c2f98c87de3fb9342df74881c1e992ad81bee3",
      "tree": "2f18f05a8d42990ce8d1744f27208de43760f88d",
      "parents": [
        "b05e4e2705ea06a2f7772ec2ab2c5353a696226c",
        "2fe84323164a95ce83c7936ef8f6c14483f38049"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Oct 29 12:10:05 2020 -0700"
      },
      "committer": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Oct 29 12:15:42 2020 -0700"
      },
      "message": "Merge remote-tracking branch \u0027remotes/aosp/upstream-master\u0027 into merge-cros\n\nMerge back the recent update_engine changes back to Android.\n\nCreated by:\n$ git merge remotes/aosp/upstream-master --commit -s recursive\n\nNo special conflict to resolve.\n\nBug: 163153182\nTest: None\nChange-Id: I4c65eb9c57448847857e2339935a5d47c8cb690a\n"
    },
    {
      "commit": "7d64e28e6ddd726cefb050727f94c64185573991",
      "tree": "1cb6b7856cd80caf7dca396c2d057653ab093c5c",
      "parents": [
        "94f51cc3ffe2e20d7ef523531aa147f9a2cda3a3"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Sep 02 15:27:34 2020 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Mon Oct 12 11:49:30 2020 -0400"
      },
      "message": "Add estimate_cow_size field to update metadata\n\nPart of VAB project. When installing update through Virtual AB it is\nnice to have an estimate of COW image size. When generating an OTA\nupdate, delta_generator will fill in this field. Later on libsnapshot\nwill use this as an hint when creating snapshots.\n\nTest: mm -j\nChange-Id: I56aa9dfa5e9d955f971a6464aea433b569cd9307\n"
    },
    {
      "commit": "852f57d536a8541f080e1f1feafa9e5c32dc73a5",
      "tree": "301cc6929cbb888bd2c2d300f28f9ff5b51c03c6",
      "parents": [
        "ce99ee79f77887c5b680b1503490484632201ca7"
      ],
      "author": {
        "name": "Vyshu",
        "email": "vyshu@google.com",
        "time": "Fri Oct 09 17:35:14 2020 +0000"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Sun Oct 11 06:43:01 2020 +0000"
      },
      "message": "update engine: clang formatting\n\nFix clang formatting issues for all .cc, .h, and .proto files\nin update engine.\n\n~/trunk/src/chromium/src/buildtools/linux64/clang-format -i \\\n-style\u003dfile $(find update_engine -name \u0027*.h\u0027 -o -name \u0027*.cc\u0027 \\\n-o -name \u0027*.cpp\u0027 -o -name \u0027*.c\u0027)\n\nBUG\u003db:169679497\nTEST\u003dCQ pass\n\nChange-Id: I4fde01d3e734dbffaa2c7e7b667503d310abccae\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2462840\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Jae Hoon Kim \u003ckimjae@chromium.org\u003e\nTested-by: Vyshu Khota \u003cvyshu@google.com\u003e\nCommit-Queue: Vyshu Khota \u003cvyshu@google.com\u003e\n"
    },
    {
      "commit": "ffa4c66aa7b4d91d55ef90194ca620bf9356556c",
      "tree": "c19c41e13803b6f022cb78325e677cdd27a661ba",
      "parents": [
        "a81598b5c2d7b74ba46c2daac1558cdcb959cc1b",
        "e53b39b8b9c5c0871841bbbb86f23657c0b7f91b"
      ],
      "author": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Sat Sep 26 00:51:26 2020 +0000"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Sat Sep 26 00:51:26 2020 +0000"
      },
      "message": "Merge \"update_engine: Merge remote-tracking branch \u0027cros/upstream\u0027 into cros/master\""
    },
    {
      "commit": "a81598b5c2d7b74ba46c2daac1558cdcb959cc1b",
      "tree": "ca3c1f3af73001e7d217541eded575db1ea32c14",
      "parents": [
        "fbc57355f863b5476ae1739375bb8ce026c8a629"
      ],
      "author": {
        "name": "Vyshu",
        "email": "vyshu@google.com",
        "time": "Thu Sep 17 21:37:21 2020 +0000"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Thu Sep 24 20:37:32 2020 +0000"
      },
      "message": "payload_generator: Remove unused attributes\n\nSome attributes are not used by the client. Removed all instances of\nof \"ignored\" and option ttributes from delta generation. Removed\nall instances of ImageInfo and moved target and source version\nto paygen_payload.\n\nBUG\u003db:163048638\nTEST\u003dFEATURES\u003dtest emerge-hatch update_engine\nTEST\u003dFEATURES\u003dtest emerge update_payload\nTEST\u003d./run_pytest lib/paygen/paygen_payload_lib_unittest.py\n\nChange-Id: I9102d37fcf054f2cbeb79e54113925a684de1cfb\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2388163\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Vyshu Khota \u003cvyshu@google.com\u003e\nCommit-Queue: Vyshu Khota \u003cvyshu@google.com\u003e\n"
    },
    {
      "commit": "e9156ec8de400e24602bd08a06a02b4a47c76c7f",
      "tree": "4709d48c4be35a4dc121525922d0f56032f59756",
      "parents": [
        "1f4964213f67ae682af8cd332cd37b3d9afdbace"
      ],
      "author": {
        "name": "Tianjie",
        "email": "xunchang@google.com",
        "time": "Tue Aug 11 11:13:54 2020 -0700"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Thu Aug 27 20:15:12 2020 +0000"
      },
      "message": "Add CowMergeOperations as a hint for snapshot write\n\nAs proposed in http://go/vabc, we want to reduce the cow size\nfor VAB. One nature apporach is to skip writing the idential\nblocks to snapshot; instead we can read from the souce blocks.\n\nSimiliar to the non-A/B update schema, we need to compute a\nsequence for snapshot merge to avoid the read after write problem.\nIf there is a circular dependency, we will omit some blocks in the\nresult sequence to break the cycles. So libsnapshot will write\nthe raw data of these blocks to cow.\n\nAll extents in the CowMergeOperations are subsets of a particular\nOTA SOURCE_COPY InstallOperation. Also, these src \u0026 ext extents\nwill be contiguous to improve the libsnapshot read performance\nbefore merge completes, as well as to simplify the sequence\ngeneration.\n\nBug: 162274240\nTest: unittest pass, genertes an OTA\nChange-Id: I12c952593d83a8e34a0a6cff5a2066c9103a0d30\n"
    },
    {
      "commit": "d719103441dcd39bcd0fa6fd1795e3783267b7bb",
      "tree": "9966d000d704764d27a672781e30187435a153e4",
      "parents": [
        "76eff4d8d722ecd511bbe6c04d5479263f4a6965"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Aug 11 10:48:16 2020 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Aug 25 14:27:21 2020 +0000"
      },
      "message": "Support per-partition timestamps\n\nupdate_engine is heading toward supporting partial updates, which an OTA\nupdate can update just a subset of all partitions. In this context, a\nsingle max_timestamp in OTA manifest is insufficient for checking\npotential downgrades, as different partitions can have different\ntimestamps. This CL adds per-partition timestamp support on\nupdate_engine side. update_engine will accept a payload with\nper-partition timestamps and reject the update if any partition has an\nolder timestamp.\n\nChanges made:\n  1. Add new version field to PartitionUpdate protobuf message.\n  2. Add new methods to HardwareInterface for fetching/checking\n  timestamp of each partition.\n  3. Update delta_performer to invoke new APIs in 2 properly.\n  4. Add relevant testcases.\n\nTest: unittest\nBug: 162553432\nChange-Id: I767343e003fd35ce0d22197b15040488cf30be30\n"
    },
    {
      "commit": "55abd3cbae6bd150b3534728a63befd1cadd6c5e",
      "tree": "0077b57b1ef96c194380908311ce2a993fb1a89c",
      "parents": [
        "99d570d67bd5dab11de321068c4002ab76ae774a",
        "694eeb0dece40f88e11ece3a776d995d855be79b"
      ],
      "author": {
        "name": "Tianjie",
        "email": "xunchang@google.com",
        "time": "Fri Jun 19 00:22:59 2020 -0700"
      },
      "committer": {
        "name": "Tianjie",
        "email": "xunchang@google.com",
        "time": "Mon Jul 06 11:24:36 2020 -0700"
      },
      "message": "Merge remote-tracking branch \u0027aosp/upstream-master\u0027 into merge\n\nIt\u0027s a merge from chrome OS with some reverts.\n1. the fd watcher change, because the libbrillo version isn\u0027t\ncompatible in aosp.\ncommit 6955bcc4ffe4cc9d62a88186b9a7e75d095a7897\ncommit 493fecb3f48c8478fd3ef244d631d857730dd14d\n2. two libcurl unittest. Because the RunOnce() of the fake message\nloop seems to have different behavior in aosp.\ncommit d3d84218cafbc1a95e7d6bbb775b495d1bebf4d2\n\nPut preprocessor guards to use the old code in aosp. And we can\nswitch to the new code in the other path after adopting the new\nlibbrillo \u0026 libchrome.\n\nTest: unit tests pass, apply an OTA\nChange-Id: Id613599834b0f44f92841dbeae6303601db5490d\n"
    },
    {
      "commit": "d3865d1bc4298739652ee101d1b625fb12361f9b",
      "tree": "fecda7a0207e8901999152719e1244fe9adeeb02",
      "parents": [
        "13e4195d65fb8a5583b7acb9cc0763733e8fca86"
      ],
      "author": {
        "name": "Tianjie",
        "email": "xunchang@google.com",
        "time": "Wed Jun 03 15:25:17 2020 -0700"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Tue Jun 09 22:23:20 2020 +0000"
      },
      "message": "Add PartitionUpdateGenerator\n\nFor a/b partial update, the payload doesn\u0027t contain all partitions\nfor the device to boot up. Therefore, we add a new class to generate\nadditional operations on top of the partial update. The class is used\nin payload consumer when the install plan is created.\n\nIn specific, the new class parses for the a/b partitions not included in\nthe payload. Then, for static partitions, it generates SOURCE_COPY\noperations to copy the bytes from the source slot to target slot. For\ndynamic partitions, it only calculates the partition hash for the filesystem\nverification later.\n\nBug: 157778739\nTest: do a partial OTA\nChange-Id: Ia5c64cff4655aad05311b0e7c8c8327bc2f4fd91\n"
    },
    {
      "commit": "d04ca0c5cc9e4507301be355fd3bd86b871b05c4",
      "tree": "38427341c137b32b99d143a878d14a7e89cb3af5",
      "parents": [
        "e99511f9987c1315a019e1903d81e0d401331229"
      ],
      "author": {
        "name": "Andrew Lassalle",
        "email": "andrewlassalle@chromium.org",
        "time": "Mon Nov 18 11:33:57 2019 -0800"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Tue Nov 19 04:37:33 2019 +0000"
      },
      "message": "update_engine: Fix delta_performer_fuzzer\n\n-Set the flag hash_checks_mandatory to true in the instance of\nInstallPlan in the fuzzer. This allows the delta performer to perfom\naditional checks which prevent incosistencies between the manifest size\nin the payload and the one reported by Omaha.\n-Stop the fuzzer test if the Write function returns false.\n-Fix a few minor typos.\n\nBUG\u003dchromium:1020621\n\nTEST\u003dcros_fuzz reproduce\n     clusterfuzz-testcase-minimized-update_engine_delta_performer_fuzzer\n     -4857426773671936\n\nChange-Id: I43ca72a35d52d3b88453eb516ee05d64feadc764\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1919716\nAuto-Submit: Andrew Lassalle \u003candrewlassalle@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Andrew Lassalle \u003candrewlassalle@chromium.org\u003e\nCommit-Queue: Andrew Lassalle \u003candrewlassalle@chromium.org\u003e\n"
    },
    {
      "commit": "55c75417e22d5026971276997924a345d9973bbc",
      "tree": "b53adac63ebb81c3d113734e745f5fe197dc6a5c",
      "parents": [
        "816193f68604845ad3c66cafb71b68e05e310469"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Mon Oct 07 11:20:39 2019 -0700"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Tue Oct 29 21:28:24 2019 +0000"
      },
      "message": "update_engine: Deprecate major version 1\n\nWe have moved away from major version 1 in Chrome OS and already have a\nstepping stone for it in M53. So this cleanup makes the code much easier\nto understand.\n\nBUG\u003dchromium:1008553\nTEST\u003dFEATURES\u003d\"test\" sudo emerge update_engine update_payload\nTEST\u003dcros_generate_update_payload --image chromiumos_test_image.bin --check --output delta.bin\n\nChange-Id: I01815dfa5fdf395f8214ef162e01ecca2d42f7fc\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1857459\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\nCommit-Queue: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "7bbe015a1bd1cbee5e2cdb0b297aec15b40cc03e",
      "tree": "328230bfd11274b343f136c80aca606a3210744e",
      "parents": [
        "1e2573f97f2b2aafcf44e539afab4466d17e1014"
      ],
      "author": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Wed Oct 09 18:11:15 2019 -0700"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Thu Oct 10 17:38:27 2019 -0700"
      },
      "message": "Add EC key signing support\n\nThe DER encoded signature size of ECDSA with P-256 NIST CURVE is\nnondeterministic for different input of sha256 hash. For example,\nthe signature size can be 70, 71, 72 bytes with the maximum\npossible size of 72 bytes. However, we need the size of the\nserialized signatures protobuf string to be fixed before signing;\nbecause the size is part of the content to be signed.\n\nTo achieve that, we can add padding to the signature; and update the\ndefinition of the signature proto to include the unpadded signature\nsize.\nmessage Signatures {\n  message Signature {\n    optional uint32 version \u003d 1;\n    optional bytes data \u003d 2;\n    optional fixed32 unpadded_signature_size \u003d 3;\n  }\n  repeated Signature signatures \u003d 1;\n}\n\nTherefore the payload verifier will read the unpadded signature\nand use it to verify against the public keys. For RSA signatures, the\nsignature data already has the correct size. So the legacy update_engine\non the old devices will still be able to verify these signatures in new\nproto format.\n\nWe also need to update the version in signature proto, and the minor\nversion of update_engine.\n\nThe EC key in the unittest is generated with the command:\nopenssl ecparam -name prime256v1 -genkey -noout -out prime256v1-key.pem\nopenssl pkey -in prime256v1-key.pem -out unittest_key_EC.pem\n\nBug: 141244025\nTest: unit tests pass, sign a package with EC key and and install on sailfish\nChange-Id: I0a16c9f2f2c7fe9ccc1070c87fbbd6b94bc1f542\n"
    },
    {
      "commit": "0f59a9a41177186cf41b331e279d0b7804512654",
      "tree": "9da92573b1513e36c8e6ce819bfe2354edaeec64",
      "parents": [
        "051627abe8995741f996e3931d899c0b08e503eb"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Fri Sep 27 10:24:31 2019 -0700"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Thu Oct 03 00:48:24 2019 +0000"
      },
      "message": "update_engine: Deprecate minor version 1\n\nMinor version 1 was for the old days where we rewrite the signle\npartition with an update (no A/B partitions). But those days are long\nover and we don\u0027t think there is any device out that has this capability\nanymore. Even if there is, we can always serve full payloads along with\nthe stepping stone we have in M53. So this is safe to go.\n\nBUG\u003dchromium:1008553\nTEST\u003dsudo FEATURES\u003dtest emerge update_engine\nTEST\u003dran cros flash two times.\n\nChange-Id: Ib928ade36af5136cd4013a30dfb39ee7fd5b07b1\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1829160\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\nCommit-Queue: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "05b3b963888adb5b9bbe906fb09cdae7ce47836c",
      "tree": "fdcab276a8628bdd1bc4ee628b975923d15a7ee8",
      "parents": [
        "dac04b73367d63eb186e9deddbe8d9f41d3092a7"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Thu Sep 26 17:19:21 2019 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Wed Oct 02 00:36:21 2019 +0000"
      },
      "message": "Add snapshot_enabled field to DeltaArchiveManifest.\n\nWhen this field is set, OTA client should try to use snapshots\nduring updates. If it is not set, OTA client MUST NOT use snapshots.\n\nThis field is set iff the target build has Virtual A/B feature enabled\n/ retrofitted (except for secondary OTAs, where system_other should\nbe written directly).\n\nIn follow-up CLs, DynamicPartitionControlAndroid only maps partitions\nas snapshots if this flag is set. DeltaPerformer may skip in-place\nSOURCE_COPY operations if snapshots are created.\n\nNote that:\n\n- On retrofit Virtual A/B devices, this field is always set. If\nupdating from a non Virtual A/B build to a Virtual A/B build, the OTA\nclient on the device would simply ignore this field and perform a\nregular A/B OTA.\n\n- When downgrading a retrofit Virtual A/B device back to a regular A/B\nbuild, this field is NOT set, and the OTA client will create the\ntarget slot partitions as usual.\n\n- When sideloading a full OTA in recovery, OTA client cannot create\n  any snapshots. This field is effectively ignored (as if it were set to\n  false).\n\nFixes: 141720569\n\nTest: build OTA\nTest: update_engine_unittests\nTest: apply Virtual A/B OTA\n\nChange-Id: I1939b24f6687f66a682cd6b7ae826f27acf98e2f\n"
    },
    {
      "commit": "cb13124dd78cb2072e20e533dd60baddb48fddf5",
      "tree": "0c91910d73af96cc1c278d08fc1bff57e3c8d0fb",
      "parents": [
        "1c3db7d742309c0178068abbb65e2298f715ebdf"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Tue Jan 22 17:07:58 2019 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Tue Jan 22 17:54:17 2019 -0800"
      },
      "message": "Update comments in update_metadata.proto\n\nCorrected that the manifest is not compressed.\nMarked minor version 1 only operations as deprecated.\nAdded comments for payload signature.\n\nTest: mma\nChange-Id: Ia5582873be7a610ec36f1b7a2ae745e6697ef3e3\n"
    },
    {
      "commit": "9edcd045830a9fc7ac22622759b8378929cb7c66",
      "tree": "9e2411f624bc87be2b3efc7343fd79f00159957b",
      "parents": [
        "23bae40f0d68dccaa51690fb4303f0c57f6bcc55"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Mon Nov 12 16:46:06 2018 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Nov 14 22:02:27 2018 +0000"
      },
      "message": "Support payload larger than 4GiB.\n\nThe data_offset and data_length field in protobuf are updated from\nuint32 to uint64, thanks to the variable length encoding in protobuf,\nthis change is backward compatible, this does not change the format\nof the payload manifest in any way, new client with this change will\nbe able to use 64 bits data_offset, while old client will get the\nfield as if it was casted to uint32_t.\n\nBug: 119222724\nTest: generate and apply a 5GiB payload\nChange-Id: Ie5cc8a9b75ef3a9fa4cb1cda4d403ef9fc174cb3\n"
    },
    {
      "commit": "398cb549ae896e92bafa3f113ebf54150ee5ecc2",
      "tree": "9e065f836c56407d2e74ba2b70863f79a56421af",
      "parents": [
        "549eb36af81d1d542efc80c1b79049a1fcea1380"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Thu Oct 18 11:29:40 2018 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Oct 26 18:23:52 2018 +0000"
      },
      "message": "Add dynamic_partition_metadata to update manifest\n\nAt build time, it will be filled with BOARD_SUPER_PARTITION_GROUPS,\nBOARD_*_SIZE, and BOARD_*_PARTITION_LIST.\n\nOnly the information from the new target_files package is used. The\nMETA/dynamic_partition_info.txt from old target_files is ignored.\n\nTest: builds and manual OTA\nBug: 117182932\nChange-Id: I02ce99caaf7d01cec1470f7262c45490c15dfcb7\n"
    },
    {
      "commit": "57f9180023bddb748e3bd86e3c206636a00e48ee",
      "tree": "07575729e36aa7778ef92760af88b0229403682c",
      "parents": [
        "d944faad2e460af36df59e95c5371ca6b87309d3"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Tue Nov 14 17:42:13 2017 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Sep 14 13:05:05 2018 -0700"
      },
      "message": "Calculate verity hash tree.\n\nCalculate verity hash tree in FilesystemVerifierAction based on configs\nspecified in protobuf, and write it to target partition before reading\nfrom those blocks.\n\nA new error code kVerityCalculationError was added to report error if\nit fails.\n\nBug: 28171891\nTest: update_engine_unittests\n\nChange-Id: I492885a0655bf51043902f578720fffd87e6a3cf\n"
    },
    {
      "commit": "6d7c0a578b330a7d8b5af412c7f3f197bbd557c5",
      "tree": "983dd61a29c3fa8576ec7cc6797d61d95ded98a2",
      "parents": [
        "8905bd8bd617a9194f29eb44ff5d71262fcf4b7d",
        "5e67287bc19e37ab071a2c3aa8edb8cad511041a"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Thu Apr 05 16:25:12 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 05 16:25:12 2018 -0700"
      },
      "message": "Correct some spellings. am: 771f6486a3\nam: 5e67287bc1\n\nChange-Id: I98a5bd68116da28a5bbcc61da6830e188d854be0\n"
    },
    {
      "commit": "771f6486a3b0333d43a2f8c743bfb945dca9db2c",
      "tree": "c72aa56680550f17c2b60621a1ede140f550aec8",
      "parents": [
        "a57d53e3edbda255a938a7dc76a2f38faeb520d4"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Apr 04 17:59:10 2018 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Apr 04 18:07:19 2018 -0700"
      },
      "message": "Correct some spellings.\n\nTest: mma\nChange-Id: Icc49a4ee76f12d302ed18982d334f2f70b7263a8\n"
    },
    {
      "commit": "7bee1b437e04d2a6c1b29179fd99261b39316129",
      "tree": "a3d97e841a55362f667fb0261842ad9b9bf0cc7a",
      "parents": [
        "880e2be7471409e68de790fa9c20bc4348a9c694",
        "f7006be5079ed91c93223273f3ddb69d655ba858"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Mar 09 15:01:33 2018 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Mar 09 15:01:33 2018 -0800"
      },
      "message": "Merge remote-tracking branch \u0027goog/upstream-master\u0027.\n\nBug: 30989362\nTest: update_engine_unittests\nChange-Id: I04417ac21508f4da3ead29b1dea34886f2fc84af\nMerged-In: I04417ac21508f4da3ead29b1dea34886f2fc84af\n"
    },
    {
      "commit": "77d7cbcef1ca1afd36720ec7ec74039b5445101e",
      "tree": "6305cce22e391284bc5b06bce00928ba7fb8d69d",
      "parents": [
        "15de2fd0ff2d19a7ef36a0f28bb5df028163605c"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Wed Feb 07 16:21:33 2018 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Thu Feb 08 23:41:46 2018 -0800"
      },
      "message": "update_engine: Disable puffin in minor version 4\n\nThis patch disables puffin for minor version 4, but keeps BROTLI_BSDIFF in the\nsame minor version.  Also adds puffin for minor version 5, but it does not\nenable it.\n\nBUG\u003db:72815313\nBUG\u003dchromium:810184\nTEST\u003dupdate_engine unittests pass\nTEST\u003dupdate_payload unittests pass\nTEST\u003dtest_paycheck.sh on two images with minor version 4 pass\nTEST\u003dbrill_update_payload generate/verify pass\n\nChange-Id: I814fc126d67207501d419cff9c575cd13d877b48\nReviewed-on: https://chromium-review.googlesource.com/907223\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "44906965d0809992052e47e11809ec730813d8b0",
      "tree": "b2221d82b71ff9cabd739cdeac405dd497cfe8f1",
      "parents": [
        "0473e36cba6f27de1310a9a2f1c21d489b6226f4",
        "840703a4cc77228e2606f45665ae3a4bd75ff7dd"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Mon Jan 08 17:39:04 2018 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Mon Jan 08 18:43:22 2018 -0800"
      },
      "message": "Merge remote-tracking branch \u0027goog/upstream-master\u0027.\n\nThe following commits were reverted:\n840703a Fix update over cellular network on guest account\neaad5d0 Do not merge to AOSP: Fixes the link to brillo-clang-format in CrOS\n740efad Reboot even if a system update is not available.\n\nFixed a few sign compare warnings.\nHad to ifdef out 2 SquashfsFilesystemTest because it depends on unsquashfs -m.\n\nTest: update_engine_unittests\nChange-Id: I6f4ca5003e78c76064ec60d0797505d8c18d00bf\nMerged-In: I6f4ca5003e78c76064ec60d0797505d8c18d00bf\n"
    },
    {
      "commit": "df3a866a3637135ea6b258eea58f654984ebe507",
      "tree": "2c83dfd3f956890e2059b57106e3162fcc57d19a",
      "parents": [
        "d8b67f49d7f8ae291cd4fa901b2d3767137704e7"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Dec 07 12:17:45 2017 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Dec 12 13:51:02 2017 -0800"
      },
      "message": "update_engine: Fix comments in update_metadata.proto\n\nThe comments in update_metadata.proto about the supported operations in\ndifferent minor versions are not accurate. This patch fixes it.\n\nBUG\u003dnone\nTEST\u003dnone\n\nChange-Id: Ied523304730d21c94b054138ac8c055978e72d2c\nReviewed-on: https://chromium-review.googlesource.com/815176\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "efa62d959cf8f225477ab85d8ff42d5150007cf8",
      "tree": "fc0c2b20c5fbf01e6ca2c53d3441f8a90524cd6a",
      "parents": [
        "02855c25944b8d64e569e9e8051be514acf40438"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Nov 09 13:46:56 2017 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Wed Nov 22 17:29:40 2017 -0800"
      },
      "message": "update_engine: Adds BROTLI_BSDIFF operation\n\nBrotli compression creates on average 10%-20% smaller output than bzip2\nin addition to having faster decompressor. With recent changes in bsdiff\nto compress the its patch with brotli, we can use it in the\nupdate_engine as a new operation BROTLI_BSDIFF. This operation will be\nturned on in minor version 4. However, this CL only adds support for it\nin the client. It will not generate BROTLI_BSDIFF operations yet.\n\nBUG\u003dchromium:783437\nTEST\u003dunittests pass for both update_engine and update_payload;\n\u0027brillo_update_payload {generate|verify}\u0027 passes;\n\u0027scripts/paycheck.py payload.delta\u0027 passes;\n\nChange-Id: Ie791ba5431561c95de6fbc031a8196dbfd912288\nReviewed-on: https://chromium-review.googlesource.com/764791\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\n"
    },
    {
      "commit": "cdeb6e60ad4837afff97a370b6ea39dc98146a36",
      "tree": "10bc13a3eeeee5d47e0282033bbf1cc7fe70a1c9",
      "parents": [
        "672c1f54a499a825cc0bb9bc4f240bf1887550d9"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Wed Oct 11 10:15:11 2017 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Oct 31 17:31:03 2017 -0700"
      },
      "message": "update_payload: Add puffdiff support.\n\nThis patch adds support for applier.py to be able to apply PUFFDIFF\noperation using puffin binary. It also fixes minor deficiencies for the\nPUFFDIFF operation.\n\nBUG\u003dchromium:768461\nTEST\u003dunittests pass;\nTEST\u003dscripts/paycheck.py payload-puffin.delta new_kern.dat new_root.dat old_kern.dat old_root.dat\n\nChange-Id: I5612ead8d8b8176e7263cfcb15403e8d36319642\nReviewed-on: https://chromium-review.googlesource.com/713540\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "f5a06d8e9f709824d768d7a15f1384668e7a4858",
      "tree": "720d47e987275bf64c018a714d359865d4858ea9",
      "parents": [
        "e9f9661e99917c9b33e10fb6c4f10979b13f572b"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Oct 19 15:06:38 2017 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Oct 24 15:30:13 2017 -0700"
      },
      "message": "update_engine: Stop adding unneeded parameters for some operations.\n\nCurrently we are adding src_extents, src_length and dst_length for ZERO,\nDISCARD and but they don\u0027t need it.\n\nAlso we are secretly adding dst_length for all REPLACE operations\nwhich they don\u0027t need it either.\n\nBUG\u003dchromium:776576\nTEST\u003dunittests passed; brillo_update_payload {generate|verify} passed;\n\nChange-Id: I9bf04071a40ef4b9a9d437830f9bdcfb507f18a2\nReviewed-on: https://chromium-review.googlesource.com/729061\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "5011df680621eb477cad8b34f03fba5b542cc2f9",
      "tree": "ef1e73e3b7968b5027e0943b0537020ad340784b",
      "parents": [
        "09ad5a825f44d21cabfa1c03deb55028afbccbd6"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Jun 28 17:13:19 2017 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Thu Oct 05 18:47:44 2017 -0700"
      },
      "message": "Add maximum timestamp to the payload.\n\nAdded a new field max_timestamp in the protobuf, from now on\nupdate_engine will reject any payload without this field.\nIf the OS build timestamp is newer than the max_timestamp, the payload\nwill also be rejected to prevent downgrade.\n\nBug: 36232423\nTest: update_engine_unittests\n\nMerged-In: Ib20f5f35aaf41165013bada02bc8720917358237\nChange-Id: Ib20f5f35aaf41165013bada02bc8720917358237\n"
    },
    {
      "commit": "49fdb09d1ff2e078fa44c26540a5b82900df0f9a",
      "tree": "8e5fd2ca126e456ce08cbcd681a0e787f5ddd92a",
      "parents": [
        "e94ece50ccff67a1948c461737dc049d9f1ae4d8"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Fri Aug 04 13:10:59 2017 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Aug 23 01:10:12 2017 +0000"
      },
      "message": "update_engine: Change imgdiff/imgpatch to a dummy puffdiff/puffpatch\n\nCurrently we never create imgdiff operation as it was never\nactivated. In near future we will be adding puffdiff and puffpatch\noperations which replaces the imgdiff. This CL does not actually adds\npuffdiff, but adds a placeholder for it.\n\nBUG\u003dnone\nTEST\u003dcros_workon_make --board\u003damd64-generic --test update_engine\n\nChange-Id: I6453048acb65c052354a1658f0c6fd41ad33e242\nReviewed-on: https://chromium-review.googlesource.com/602733\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "5ef5d4561dbc40c128d1e9bbd8e2da525adcf581",
      "tree": "3156e7bde5f17bba8940b2863424e2669fb1334a",
      "parents": [
        "489875a27f4cdc4be979b1d9fd8dd026ea0cc820"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Fri Aug 04 13:10:59 2017 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Wed Aug 09 14:05:10 2017 -0700"
      },
      "message": "update_engine: Change imgdiff/imgpatch to a dummy puffdiff/puffpatch\n\nCurrently we never create imgdiff operation as it was never\nactivated. In near future we will be adding puffdiff and puffpatch\noperations which replaces the imgdiff. This CL does not actually adds\npuffdiff, but adds a placeholder for it.\n\nBUG\u003dnone\nTEST\u003dcros_workon_make --board\u003damd64-generic --test update_engine\n\nChange-Id: I6453048acb65c052354a1658f0c6fd41ad33e242\nReviewed-on: https://chromium-review.googlesource.com/602733\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "489875a27f4cdc4be979b1d9fd8dd026ea0cc820",
      "tree": "8c2b898be7b1296217fa224c7d0d8b649c3ec422",
      "parents": [
        "47186290f8b02cca27574188d72d49f3841f9f4e"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Fri Aug 04 13:20:52 2017 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Sat Aug 05 22:07:53 2017 -0700"
      },
      "message": "update_engine: Defines proto2 as the syntax of the protobuf\n\nAdds \u0027syntax \u003d \"proto2\"; to update_metadata.proto to shut up the\nprotobuf compiler about the default version of the protobuf.\n\nBUG\u003dnone\nTEST\u003dcros_workon_make --board\u003damd64-generic --test update_engine\n\nChange-Id: If1689825f1296163ae81c59581fa00dad435fdce\nReviewed-on: https://chromium-review.googlesource.com/602692\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\n"
    },
    {
      "commit": "5b91c6b141970c2b0095775a61e3f941417aa1ff",
      "tree": "6b2259fdab4d20671337dd98d656a97e1fba899b",
      "parents": [
        "40a017db5df92ab7f9c3dcd73cd736a645931c93"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Thu Aug 04 20:33:36 2016 -0700"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Wed Aug 10 03:55:24 2016 +0000"
      },
      "message": "New setting to mark postinstall as optional.\n\nThis setting allows to mark a postinstall script as optional. This\nallows the postinstall program to fail when it is not strictly required\nto run for the update to succeed.\n\nBug: 27178350\nTEST\u003dAdded unittest. Sideloaded an update with an optional postinstall.\n\nChange-Id: I41956d3308f3458b6bf94b835c9b5e470c84ca41\n"
    },
    {
      "commit": "3317b88ea8006e9d2fae5dbb3abd7187bacdeefa",
      "tree": "f1ac4040efc0d91d78b8a73be3026ba57ceeefb4",
      "parents": [
        "690810b2a0c45b6e4c0c2257c6e7c189cf3bba25"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Jan 08 17:48:57 2016 +0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 20 07:18:56 2016 +0000"
      },
      "message": "Add IMGDIFF operation to protobuf.\n\nThis operation will use imgdiff in Android to handle diff of gzips.\n\nTest: mma\nBug: 26456666\n\nChange-Id: I4757e2cd8ae1f92ae624bf321240de637dbcd016\n"
    },
    {
      "commit": "eb86e55f829b441497d58f306653cd89cd2d953d",
      "tree": "ed432c3c04d3d2e6747eab4b19edd704e07238b0",
      "parents": [
        "70a6ab091beb261a501012bc09955de452dd4736"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Mon Sep 21 16:00:38 2015 -0700"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Mon Sep 21 16:07:13 2015 -0700"
      },
      "message": "Include post-install path in the payload format.\n\nThe post-install script was hard-coded to be in /postinst in the root\nof the new filesystem. This patch adds support for a configurable path\nin the payload to make it easier for the build system to select a\ndifferent file in a more standard location, like /bin or /usr/bin.\n\nNote that the PartitionUpdate protobuf message was not used yet by any\nversion, so we can still make backwards-incompatible changes to it,\nsuch as the field number reorder.\n\nBug: 24194445\nTest: emerge-link update_engine\n\nChange-Id: I4a8c743d21e7d78171a6b825b8e33fb445615279\n"
    },
    {
      "commit": "c1d7f1264ce92e5c05808010d812cf84b2a30830",
      "tree": "f2c9f3bd4f26224d571a2aed00858e0562b1029f",
      "parents": [
        "758dd53cf503adbcb049909f25f54603d411be09"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Thu Sep 10 15:15:42 2015 -0700"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Fri Sep 11 16:10:44 2015 -0700"
      },
      "message": "Document payload v2 changes in update_metadata.proto.\n\nThis patch updates the documentation about the payload format in the\nupdate_metadata.proto file.\n\nBug: 23179128\nTest: emerge-link update_engine\n\nChange-Id: If9fe291ffb9e8038df2362ca0defcb713325ae72\n"
    },
    {
      "commit": "aea4c1cea20dda7ae7e85fc8924a2d784f70d806",
      "tree": "a8934ac4c258cf942ecc2423fe94f1458acfa64f",
      "parents": [
        "d2956cc4b5c60d3d670eb7bf0f1ba800c8a16d62"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Wed Aug 19 20:24:43 2015 -0700"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Wed Aug 19 20:24:43 2015 -0700"
      },
      "message": "Re-license update_engine to Apache2\n\nThis patch automatically replaced the license on all text files from\nChromium OS (BSD style) to AOSP (Apache2), keeping the original year as\na reference.\n\nThe license header was added to .gyp and .gypi files, the NOTICE was\nreplaced with a copy of the Apache2 license and MODULE_LICENSE_* file\nwas updated.\n\nBUG\u003db/23084294\nTEST\u003dgrep \u0027Chromium OS Authors\u0027 doesn\u0027t find anything.\n\nChange-Id: Ie5083750755f5180a8a785b24fe67dbf9195cd10\n"
    },
    {
      "commit": "ac6246ae239518a27ab4e89ee01ba1b1d76d440f",
      "tree": "7593c43e985af59ea00b625416df0c581ff03483",
      "parents": [
        "a12ee11c78ac6d7c2605921a4006b6a7416e0c35"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Thu Aug 13 14:00:22 2015 -0700"
      },
      "committer": {
        "name": "ChromeOS Commit Bot",
        "email": "chromeos-commit-bot@chromium.org",
        "time": "Sat Aug 15 04:26:42 2015 +0000"
      },
      "message": "update_engine: Extend payload metadata with Brillo fields.\n\nIn order to update more than two partitions, we moved the partition\nupdate description to a new message PartitionUpdate.\n\nThe InstallOperation message is extended with a per-operation source\ndata hash to validate the source data right before we apply the\noperation instead of relying on the slow whole-partition hash.\n\nThis patch also includes two new operation types: ZERO and DISCARD to\nbe included starting with delta minor_version\u003d3 and full payloads in\nBrillo. It doesn\u0027t include the implementation for those yet.\n\nBUG\u003db:23179128\nTEST\u003dUnittest still pass.\n\nChange-Id: I5b5fc8e2af6684ce655bf1fa1b82d1d2285a4e3a\nReviewed-on: https://chromium-review.googlesource.com/293505\nTrybot-Ready: Alex Deymo \u003cdeymo@chromium.org\u003e\nTested-by: Alex Deymo \u003cdeymo@chromium.org\u003e\nReviewed-by: Alex Deymo \u003cdeymo@chromium.org\u003e\nCommit-Queue: Alex Deymo \u003cdeymo@chromium.org\u003e\n"
    },
    {
      "commit": "a12ee11c78ac6d7c2605921a4006b6a7416e0c35",
      "tree": "24ca78164d476399a3c6a1a8f19dcb259c560e3e",
      "parents": [
        "c00c98a1dad941e5cc04ce0b0e766d40b3b384e1"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Wed Aug 12 22:19:32 2015 -0700"
      },
      "committer": {
        "name": "ChromeOS Commit Bot",
        "email": "chromeos-commit-bot@chromium.org",
        "time": "Sat Aug 15 04:26:36 2015 +0000"
      },
      "message": "update_engine: Move InstallOperation to the top level.\n\nThe InstallOperation message in the protobuf is a nested message\ninside the DeltaArchiveManifest message, making all references to\noperation types be very long names like\nDeltaArchiveManifest_InstallOperation_Type_REPLACE_BZ while most other\nmessages are not nested in the DeltaArchiveManifest message.\n\nTo improve readability and to prepare for future update metadata\nchanges, this patch moves the InstallOperation message to the top level\nand replaces all references to operation types with the new shorter\nversion like InstallOperation::REPLACE_BZ.\n\nThis change only impacts the scope of the generated classes and the\nserialized format of the protobuf. This exact same question was\naddressed by protobuf maintainers here:\n\nhttps://groups.google.com/forum/#!topic/protobuf/azWAPa6hP4A\n\nFinally coding style and indentation was automatically updated due to\nthe shorter names.\n\nBUG\u003db:23179128\nTEST\u003dUnittest still pass.\n\nChange-Id: I55add54265934cd1fd3e9cb786c5d3f784902d17\nReviewed-on: https://chromium-review.googlesource.com/293504\nTrybot-Ready: Alex Deymo \u003cdeymo@chromium.org\u003e\nTested-by: Alex Deymo \u003cdeymo@chromium.org\u003e\nReviewed-by: Alex Deymo \u003cdeymo@chromium.org\u003e\nCommit-Queue: Alex Deymo \u003cdeymo@chromium.org\u003e\n"
    },
    {
      "commit": "9f6f0a53509476be5f0ba152ec182d46a8d3c976",
      "tree": "6d8b8bffa30ae8b9dbeee969546fb5d4a6ed028c",
      "parents": [
        "18f48aa4e962997a9ff12fac8933c94aac247fd9"
      ],
      "author": {
        "name": "Allie Wood",
        "email": "alliewood@chromium.org",
        "time": "Mon Mar 30 11:25:47 2015 -0700"
      },
      "committer": {
        "name": "ChromeOS Commit Bot",
        "email": "chromeos-commit-bot@chromium.org",
        "time": "Wed Apr 15 04:50:39 2015 +0000"
      },
      "message": "update_engine: Implement SOURCE_COPY/SOURCE_BSDIFF operations.\n\nImplement SOURCE_COPY and SOURCE_BSDIFF in DeltaPerformer. These new\noperations are the same as MOVE and BSDIFF, respectively, except\nthat they read from the source partition rather than the destination\npartition.\n\nAlso fills in the source paths in omaha_response_handler_action, which\nwere previously not being set.\n\nBUG\u003dchromium:461632\nTEST\u003d`FEATURES\u003dtest emerge-link update_engine` and manual testing.\n\nChange-Id: I81eba5780c73ed920a5db72702d9d7c67dbaa673\nReviewed-on: https://chromium-review.googlesource.com/263747\nReviewed-by: Allie Wood \u003calliewood@chromium.org\u003e\nCommit-Queue: Allie Wood \u003calliewood@chromium.org\u003e\nTrybot-Ready: Allie Wood \u003calliewood@chromium.org\u003e\nTested-by: Allie Wood \u003calliewood@chromium.org\u003e\n"
    },
    {
      "commit": "568734533c25a5783ea004aeb0da38244dcd3e5b",
      "tree": "95795604ad6f59dd6966036faedfc0c5e40ab58c",
      "parents": [
        "703022b71fc6a89796f2f97448b1a419007a52ca"
      ],
      "author": {
        "name": "Allie Wood",
        "email": "alliewood@chromium.org",
        "time": "Fri Mar 27 17:48:40 2015 -0700"
      },
      "committer": {
        "name": "ChromeOS Commit Bot",
        "email": "chromeos-commit-bot@chromium.org",
        "time": "Wed Apr 08 03:44:01 2015 +0000"
      },
      "message": "update_engine: Remove sparse hole extents.\n\nWhenever there is an extent beginning with a sparse hole, that extent\nwill be filtered out. Extents are now read in from the partition rather\nthan the file itself in ReadFileToDiff. src/dst_length are set to the\nnumber of blocks in src/dst_extents * block_size.\n\nThis was tested manually with _GenerateSinglePayload to generate a delta\npayload between test images.\n\nBUG\u003dchromium:469792,chromium:474497\nTEST\u003d`FEATURES\u003dtest emerge-link update_engine` and manual testing.\n\nChange-Id: I384ec3f16f7fd9087159817358308f22d29e9edf\nReviewed-on: https://chromium-review.googlesource.com/264442\nReviewed-by: Don Garrett \u003cdgarrett@chromium.org\u003e\nTrybot-Ready: Alex Deymo \u003cdeymo@chromium.org\u003e\nCommit-Queue: Allie Wood \u003calliewood@chromium.org\u003e\nTested-by: Allie Wood \u003calliewood@chromium.org\u003e\n"
    },
    {
      "commit": "3283a55293ec9e645224c48d0c3cf6f8867395e7",
      "tree": "f2208c9da4f1712f8275719f5b60a8de8cb47e9d",
      "parents": [
        "425aa9764d6eac48cf06f726a30422d4e184c3d1"
      ],
      "author": {
        "name": "Allie Wood",
        "email": "alliewood@chromium.org",
        "time": "Wed Feb 18 15:24:26 2015 -0800"
      },
      "committer": {
        "name": "ChromeOS Commit Bot",
        "email": "chromeos-commit-bot@chromium.org",
        "time": "Fri Feb 20 01:26:55 2015 +0000"
      },
      "message": "update_engine: Add new operation codes for a to b operations\n\nAdd SOURCE_COPY and SOURCE_BSDIFF operations to protobuf. These\noperations are for delta minor version 2 and their input is the source\npartition instead of the target partition.\n\nBUG\u003dchromium:459363\nTEST\u003d`FEATURES\u003dtest emerge-link update_engine`\n\nChange-Id: I2c5c83ab5063ff6ce7fc2ec8acfe809d9526b6da\nReviewed-on: https://chromium-review.googlesource.com/250951\nReviewed-by: Alex Deymo \u003cdeymo@chromium.org\u003e\nReviewed-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nCommit-Queue: Allie Wood \u003calliewood@chromium.org\u003e\nTested-by: Allie Wood \u003calliewood@chromium.org\u003e\n"
    },
    {
      "commit": "b8f16a18c39050839cac636588fd0b24f33093ed",
      "tree": "2e346fadc20f0ccffb81a66b06568ea2270321a9",
      "parents": [
        "06c76a49bfd29c8abdb8abd5b646a6583783191a"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Jun 10 18:59:22 2014 -0700"
      },
      "committer": {
        "name": "chrome-internal-fetch",
        "email": "chrome-internal-fetch@google.com",
        "time": "Fri Sep 12 00:56:12 2014 +0000"
      },
      "message": "update_engine: Replace libprotobuf with protobuf-lite.\n\nThis adds the option to the .proto file to generate the code as\nlibprotobuf-lite compatible since update_engine nor delta_generator\nrely on reflection support from the generated protobuf class.\n\ngyp file was updated to use the libprotobuf-lite flags as\nspecified by pkg-config.\n\nBUG\u003dchromium:383182,chromium:403588\nTEST\u003dcros deployed on link and attempted an update from there.\nTEST\u003dldd update_engine shows libprotobuf-lite.\nTEST\u003dTested delta_generator compatibility with old signed images.\n\nChange-Id: I31dd314736df0c44ddc32824e0a537898f44b4e6\nReviewed-on: https://chromium-review.googlesource.com/212491\nTested-by: Alex Deymo \u003cdeymo@chromium.org\u003e\nReviewed-by: Don Garrett \u003cdgarrett@chromium.org\u003e\nReviewed-by: Gaurav Shah \u003cgauravsh@chromium.org\u003e\nCommit-Queue: Alex Deymo \u003cdeymo@chromium.org\u003e\n"
    },
    {
      "commit": "b8dd1d9e78c0ce14268aa38e472c0ee7a0e53bc5",
      "tree": "c8d39eb106b612d5fd0242f8094ba77127a12c23",
      "parents": [
        "bc27aace82f59884bd3f2d37064644037ccccfc2"
      ],
      "author": {
        "name": "Don Garrett",
        "email": "dgarrett@google.com",
        "time": "Fri Nov 22 17:40:02 2013 -0800"
      },
      "committer": {
        "name": "chrome-internal-fetch",
        "email": "chrome-internal-fetch@google.com",
        "time": "Fri Dec 06 00:52:23 2013 +0000"
      },
      "message": "Add and enforce MinorVersion in Payload Manifest.\n\nThe MinorVersion is also set to 0 for Full payloads, and to 1 for\nDeltaPayloads (for now). If the field is not set, it defaults to 0.\n\nThe default is important, since Full payloads will be generated without this\nvalue set in production because older payload generators will be used for\nFull payloads for some time to come.\n\nIf an unexpected MinorVersion is received, we will refuse to process it, and\nsend an kErrorCodeUnsupportedMinorPayloadVersion error result.\n\nAdd unittests to delta_performer_unittests to unittest the ValidateManifest\nmethod (never individually tested before).\n\nBUG\u003dchromium:322564\nTEST\u003dUnittests\n\nChange-Id: Icbd2ebeb739431905497e79edb4b99629c8d6f7f\nReviewed-on: https://chromium-review.googlesource.com/177823\nReviewed-by: Don Garrett \u003cdgarrett@chromium.org\u003e\nCommit-Queue: Don Garrett \u003cdgarrett@chromium.org\u003e\nTested-by: Don Garrett \u003cdgarrett@chromium.org\u003e\n"
    },
    {
      "commit": "0dd3985371235b3587f20b7263be61f6e68ce0f2",
      "tree": "23b19ec17fbab4dfabed99777f700f3eb85c2f36",
      "parents": [
        "94817cb77d41d4be746a9f4f59ce0e9a0574218a"
      ],
      "author": {
        "name": "Don Garrett",
        "email": "dgarrett@google.com",
        "time": "Wed Apr 03 16:55:42 2013 -0700"
      },
      "committer": {
        "name": "ChromeBot",
        "email": "chrome-bot@google.com",
        "time": "Wed May 15 18:01:08 2013 -0700"
      },
      "message": "Add human friendly payload information to the manifest.\n\nThis adds new strings to the payload manifest that describe what images\nthe payload updates from/to. These strings are passed in when delta_generator\nis invoked, and are trusted implicitly.\n\nBUG\u003dchromium:226310\nTEST\u003dBuilt/Updated.\n\nChange-Id: I278137c97cf8376d4e2fd8e82402cbb7d4f1a104\nReviewed-on: https://gerrit.chromium.org/gerrit/47347\nReviewed-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nTested-by: Don Garrett \u003cdgarrett@chromium.org\u003e\nCommit-Queue: Don Garrett \u003cdgarrett@chromium.org\u003e\n"
    },
    {
      "commit": "74475bfd0ed945d9035c1760c6ccf938f4f0cdff",
      "tree": "e0eda8b3e59246d36fcf901058d15d8d431b5f17",
      "parents": [
        "51dcf260754837962dd22db3b7babee181471e7d"
      ],
      "author": {
        "name": "Jay Srinivasan",
        "email": "jaysri@chromium.org",
        "time": "Thu Sep 13 19:26:26 2012 -0700"
      },
      "committer": {
        "name": "Gerrit",
        "email": "chrome-bot@google.com",
        "time": "Thu Sep 13 22:28:35 2012 -0700"
      },
      "message": "Update manifest protobuf to include optional hash for operation blobs.\n\nIn order to support downloads over http for a number of reasons, we need\nto secure http downloads. Among other things, we reduce the attack surface\nby adding an extra hash for each operation that uses a blob. This CL\nadds this extra field in the update_engine metadata protobuf. Checking this\nfirst so that subsequent CLs that populate/consume this field in\ndelta diff generator and update_engine can be developed independently.\n\nBUG\u003dchromium-os:33602\nTEST\u003dTested on ZGB to make sure existing functionality works fine.\n\nChange-Id: I2aba79242aa515f1f288c93e9e778f4eb51ba962\nReviewed-on: https://gerrit.chromium.org/gerrit/33264\nReviewed-by: Jay Srinivasan \u003cjaysri@chromium.org\u003e\nTested-by: Jay Srinivasan \u003cjaysri@chromium.org\u003e\nCommit-Ready: Jay Srinivasan \u003cjaysri@chromium.org\u003e\n"
    },
    {
      "commit": "36a582265809cbd04f611704ac9acf944282abf2",
      "tree": "a0af51847da2103ddae713c9d1fdb562aa7f7cf9",
      "parents": [
        "3fd5d30433509859bfdcc0b650e242981410c6a7"
      ],
      "author": {
        "name": "Darin Petkov",
        "email": "petkov@chromium.org",
        "time": "Thu Oct 07 22:00:09 2010 -0700"
      },
      "committer": {
        "name": "Darin Petkov",
        "email": "petkov@chromium.org",
        "time": "Thu Oct 07 22:00:09 2010 -0700"
      },
      "message": "AU: Include the old/new kernel/rootfs size/hash in the update metadata.\n\nThis is the server side change.\n\nBUG\u003d7348\nTEST\u003dunit test\n\nChange-Id: I956e056826dbb13b0f97509f9992ebcedb48ea42\n\nReview URL: http://codereview.chromium.org/3588015\n"
    },
    {
      "commit": "932bc4c1c271bc1b03da9a1bfe7c37017c58bffa",
      "tree": "aa35851a53da7d42d1dca3005af19a5c07bb42a7",
      "parents": [
        "af183050a13b6851d7e385bb697ae290ccdaf880"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Mon Aug 23 18:14:09 2010 -0700"
      },
      "committer": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Mon Aug 23 18:14:09 2010 -0700"
      },
      "message": "AU: Sign delta payloads\n\n- Change .proto to have explicit offset/length of signature. I was\n  hoping the length could be kept out of the proto, but it needs to go\n  in. The way we cheat and keep the signature in the file is to have a\n  dummer install operation at the end that will cause old clients to\n  write the signature data to nowhere.\n\n- Change delta generator to take an optional private key, which if\n  present will cause the payload to be signed\n\n- Cleanup Omaha hash calculator, which should be renamed to SHA1 hash\n  calculator, and allow export of the non-base64 encoded SHA1 result.\n\n- Note: signatures are not yet checked. That will come in a future CL.\n\nBUG\u003d5662\nTEST\u003dunittests\n\nReview URL: http://codereview.chromium.org/3132033\n"
    },
    {
      "commit": "0c440058157a138af05aed77682c25f1c02dcac8",
      "tree": "b2d6ab38e3122bd44e9df5455ae2e13e83e5a6cd",
      "parents": [
        "bef0c7dbe9e65417857791d912118ec86184c40e"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Fri Aug 20 11:25:54 2010 -0700"
      },
      "committer": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Fri Aug 20 11:25:54 2010 -0700"
      },
      "message": "AU: Payload Signer class\n\nThis class can take a private key and sign a blob of data. The API is\namenable to the upcoming change to delta_diff_generator that will use\nit.\n\nAlso, minor change to the protobuf to support signatures.\n\nTEST\u003dunittests\nBUG\u003d5662\n\nReview URL: http://codereview.chromium.org/3173032\n"
    },
    {
      "commit": "94f025d2851d2e4ff7c8205fcf79044c7b463603",
      "tree": "43e09731c6678b5c3f8fdce8a95d7686e2797ddb",
      "parents": [
        "9b11165c7bb64843118fc9e1c9c4746137271107"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Mon Aug 16 17:17:27 2010 -0700"
      },
      "committer": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Mon Aug 16 17:17:27 2010 -0700"
      },
      "message": "AU: Support signatures in new-style update images.\n\nI\u0027m sending this CL out as a first step to supporting signatures in\nthe images.\n\nBUG\u003d5673\nTEST\u003dNone\n\nReview URL: http://codereview.chromium.org/3175010\n"
    },
    {
      "commit": "f4c7ef1bc239890d8bee30e6823f88814fef8ce5",
      "tree": "3cb3d144a407eff64a7ff1955acc23de776b6dec",
      "parents": [
        "0cca4219a11ed5df53c56d695c4b7c73726be8b0"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Fri Apr 30 10:37:00 2010 -0700"
      },
      "committer": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Fri Apr 30 10:37:00 2010 -0700"
      },
      "message": "AU: delta compress the kernel partition\n\nAdd kernel partition to proto buf. Change delta generator to compress\nthe kernel partition and the delta performer to perform operations to\nupdate the kernel partition. Update unittests to test it.\n\nAlso, remove checksums from the protobuf while we\u0027re at it, since the\npartitions themselves will contains checksums.\n\nBUG\u003dNone\nTEST\u003dAttached unittest\n\nReview URL: http://codereview.chromium.org/1819002\n"
    },
    {
      "commit": "1e338b8d8289e1abbee16c628612a10e0eaaca93",
      "tree": "814c74a8c6cf4fded995242587d37cbaff5ae290",
      "parents": [
        "f2c29ec6913be845cd8f0e547a4acec52bb736d6"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Fri Jan 22 14:57:27 2010 -0800"
      },
      "committer": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Fri Jan 22 14:57:27 2010 -0800"
      },
      "message": "AU: Gut code for old updater. New protobuf for v2 updater.\n\nReview URL: http://codereview.chromium.org/545072\n"
    },
    {
      "commit": "4fe15d017c145aca449c2248420c1b4ec8c23758",
      "tree": "62d7c0cc4b73fdaae0ea34756650cfd3237d310f",
      "parents": [
        "970bb28905b44bf9f2cb986bb412ecda1095b0b1"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "opensource@google.com",
        "time": "Thu Dec 10 19:01:36 2009 -0800"
      },
      "committer": {
        "name": "Andrew de los Reyes",
        "email": "opensource@google.com",
        "time": "Thu Dec 10 19:01:36 2009 -0800"
      },
      "message": "AU: Try delta updates first, then full updates\n\nAlso, some bug fixes.\n\nReview URL: http://codereview.chromium.org/492008\n"
    },
    {
      "commit": "e573399617be974bd1e596311241939beb62899b",
      "tree": "060297e8ca1220904ae7dd530460b883d82375e7",
      "parents": [
        "3defe6acb3609e70e851a6eff062577d25a2af9d"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "opensource@google.com",
        "time": "Tue Dec 08 13:34:00 2009 -0800"
      },
      "committer": {
        "name": "Andrew de los Reyes",
        "email": "opensource@google.com",
        "time": "Tue Dec 08 13:34:00 2009 -0800"
      },
      "message": "TBR: derat@chromium.org\n"
    },
    {
      "commit": "3defe6acb3609e70e851a6eff062577d25a2af9d",
      "tree": "341e979027fde117dd8906483db7a5c703a2e1cf",
      "parents": [
        "c98a7edf648aad88b3f66df3b5a7d43d6a6d7fa9"
      ],
      "author": {
        "name": "adlr@google.com",
        "email": "adlr@google.com@06c00378-0e64-4dae-be16-12b19f9950a1",
        "time": "Fri Dec 04 20:57:17 2009 +0000"
      },
      "committer": {
        "name": "adlr@google.com",
        "email": "adlr@google.com@06c00378-0e64-4dae-be16-12b19f9950a1",
        "time": "Fri Dec 04 20:57:17 2009 +0000"
      },
      "message": "Missed new files in last commit\n\nReview URL: http://codereview.chromium.org/465067\n\n\ngit-svn-id: svn://chrome-svn/chromeos/trunk@336 06c00378-0e64-4dae-be16-12b19f9950a1\n"
    }
  ]
}
