)]}'
{
  "log": [
    {
      "commit": "7cc8bb085b6f04cbeca7cb77ddb6798fa9725e2f",
      "tree": "55b88a1bafb293b4210bf2de59c8892c0985f8b5",
      "parents": [
        "4b71743b20d0ca155df3414a863a48cb898622c9"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Mon Jan 14 16:29:47 2019 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Wed Jan 16 01:46:42 2019 -0800"
      },
      "message": "update_engine: Run clang-format on ./ (root directory)\n\nBUG\u003dnone\nTEST\u003dunittest\n\nChange-Id: Ibd075dc7ea9a18e798f612e35725f1c83c112809\nReviewed-on: https://chromium-review.googlesource.com/1409708\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "eab915e308bd0399e334e510faa85327ce118764",
      "tree": "dd5c0553558dba63694194e68cc805335586d35e",
      "parents": [
        "abf1770963bfc3d8ff2e89a5fd77ffb02d88d05d"
      ],
      "author": {
        "name": "Hidehiko Abe",
        "email": "hidehiko@chromium.org",
        "time": "Sun Sep 23 16:54:06 2018 +0900"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Wed Nov 21 01:24:57 2018 -0800"
      },
      "message": "Revert \"Partially Revert 2b9d241\"\n\nThis reverts commit 71818c8409812c5a08124627c19aa8ea0625a72e.\nThis patch was created because the upstream update_engine was using\nthe new version of libchrome and the Chrome OS one was not. Now\nthat we are upreving libchrome on Chrome OS we can revert this.\n\nBUG\u003db:37434548\nTEST\u003dBuild\nCQ-DEPEND\u003dCL:1240033\n\nChange-Id: I98b7d124212087292500701782de08b3d3ecc559\nReviewed-on: https://chromium-review.googlesource.com/1239818\nCommit-Ready: ChromeOS CL Exonerator Bot \u003cchromiumos-cl-exonerator@appspot.gserviceaccount.com\u003e\nTested-by: Hidehiko Abe \u003chidehiko@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "71818c8409812c5a08124627c19aa8ea0625a72e",
      "tree": "346f408afac059a6f89375656246ee060c8977ad",
      "parents": [
        "e79eab633e42036e5aab62a69f31347127f136d1"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Tue Mar 06 13:25:40 2018 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Mon Mar 19 14:18:54 2018 -0700"
      },
      "message": "Partially Revert 2b9d241\n\n2b9d2417722cd4052b0e22494886f93c5b4ef042 update_engine: Update libchrome APIS to r456626.\n\nThe above commit changes the libchrome API used in update_engine to r456626. But\nthe libchrome has not been upreved fully in the CrOS yet with the exception of\nsome changes represented in UE like CL:882543. So, now we need to revert the\nchanges partially untill the libchrome is updated.\n\nBUG\u003dchromium:815356\nTEST\u003dunittests, precq\n\nChange-Id: If2207f0672c7b9f6dab84e676d9fb8423a047372\nReviewed-on: https://chromium-review.googlesource.com/965266\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": "84e0e31e0c55ca1cec966991f22fe9f494534afa",
      "tree": "4c17bdbc93e22a0904d50fac7cb8df423cae3b28",
      "parents": [
        "f87e5cd57a7d543c54327e342cea7f46fd819a90",
        "f7006be5079ed91c93223273f3ddb69d655ba858"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Thu Mar 08 18:07:12 2018 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Mar 09 14:32:19 2018 -0800"
      },
      "message": "Merge remote-tracking branch \u0027aosp/upstream-master\u0027.\n\nBug: 30989362\nTest: update_engine_unittests\nChange-Id: I04417ac21508f4da3ead29b1dea34886f2fc84af\nMerged-In: I04417ac21508f4da3ead29b1dea34886f2fc84af\n"
    },
    {
      "commit": "6d2c71e261e331def8d41caea5a254f6312ece76",
      "tree": "491bf636dff535f7e6ca425f305f9e7848d0c2b7",
      "parents": [
        "f94b643ff1bb0f07204ec9f15289b55ac5fedacd"
      ],
      "author": {
        "name": "Manoj Gupta",
        "email": "manojgupta@google.com",
        "time": "Fri Feb 02 15:57:16 2018 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Sat Feb 03 04:44:09 2018 -0800"
      },
      "message": "update_engine: Fix a stack use after scope issue.\n\nGetCStr() returns the contents to a local string returned by Get().\nThe string is destroyed after the call to GetCStr() so the pointer\npassed to atoi() is not valid.\nChange Get() to return a reference instead so that it will stay valid\nfor lifetime of atoi().\n\nBUG\u003dchromium:808686\nTEST\u003dNo more asan complains.\n\nChange-Id: Icc62064f4f3382a29ccbd36ca90f9952cf149364\nReviewed-on: https://chromium-review.googlesource.com/899512\nCommit-Ready: Manoj Gupta \u003cmanojgupta@chromium.org\u003e\nTested-by: Manoj Gupta \u003cmanojgupta@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "2b9d2417722cd4052b0e22494886f93c5b4ef042",
      "tree": "6f94bc97547d8b1c3ca26d30bc25e0f0a970c946",
      "parents": [
        "6651a120b498539f682a43a28e6209cb81e33a20"
      ],
      "author": {
        "name": "Hidehiko Abe",
        "email": "hidehiko@google.com",
        "time": "Wed Dec 13 18:56:18 2017 +0900"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 18 10:28:42 2017 +0000"
      },
      "message": "update_engine: Update libchrome APIS to r456626.\n\nThe new libchrome has been ported from Chromium and some APIs\nhave changed. Make necessary changes at call sites.\n\nBUG\u003dchromium:724678\nCQ-DEPEND\u003dCL:480928\nTest: Build.\n\nChange-Id: I01b70da87521d0884ed21acbd7ed3e0ff1e94357\nMerged-In: I4dbaea4a2a19031375a8bf2415645a4f226dab57\n"
    },
    {
      "commit": "ffb30ed63b5a186d4ed62c335d16b3b9467785ee",
      "tree": "95fc4d0b25d02282f6de7d6d8158a68bbe3ab16a",
      "parents": [
        "663ff4b30b9f629a130ef6d357d462b897d4071e"
      ],
      "author": {
        "name": "Luis Hector Chavez",
        "email": "lhchavez@google.com",
        "time": "Wed Jul 26 17:35:57 2017 +0000"
      },
      "committer": {
        "name": "Luis Hector Chavez",
        "email": "lhchavez@google.com",
        "time": "Wed Jul 26 17:35:57 2017 +0000"
      },
      "message": "Revert \"update_engine: Update libchrome APIS to r456626.\"\n\nThis reverts commit 663ff4b30b9f629a130ef6d357d462b897d4071e.\n\nReason for revert: Broke the mac_sdk\nExempt-From-Owner-Approval: Fixing mac_sdk\n\nChange-Id: I8184ec58e74d62dca0deafb39340d4bd36bf40e0\n"
    },
    {
      "commit": "663ff4b30b9f629a130ef6d357d462b897d4071e",
      "tree": "5a985e92f68ab9299e44e47e39d31ce1fcfd329c",
      "parents": [
        "fd42c84269a2fc4d57f5c17fbba3d13e3ccff27e"
      ],
      "author": {
        "name": "Jay Civelli",
        "email": "jcivelli@google.com",
        "time": "Thu Mar 30 11:02:03 2017 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 26 01:47:45 2017 +0000"
      },
      "message": "update_engine: Update libchrome APIS to r456626.\n\nThe new libchrome has been ported from Chromium and some APIs\nhave changed. Make necessary changes at call sites.\n\nChange-Id: I8c3cea4510774c813a5d8fb10240918b5736884e\n"
    },
    {
      "commit": "6f10c5f7c550b1bd6df1d9a04b5e75e03f943639",
      "tree": "fbadd6266c6ae84e28016a7c65d96c035b1ef2a7",
      "parents": [
        "1cfb124437d8b8d430c46ec076e21959ab6a6614"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Thu Mar 03 22:35:43 2016 -0800"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Mon Mar 07 13:34:56 2016 -0800"
      },
      "message": "Parse and use extra HTTP headers when downloading the payload.\n\nAndroid OTA backend requires to pass an Authorization HTTP header in\norder to download some payload. This patch allows to specify such\nheader when initiating a payload download from Android.\n\nBug: 27047110\nTEST\u003dAdded unittests to check the headers sent.\n\n(cherry picked from commit fdd6dec9c4be2fbd667cf874c4cc6f4ffecaeef9)\n\nChange-Id: I59d38d79a7b7a8975d105c611c692522b6c33707\n"
    },
    {
      "commit": "fdd6dec9c4be2fbd667cf874c4cc6f4ffecaeef9",
      "tree": "ddd62b3e4d1d037c02365771d9b94d468836bd22",
      "parents": [
        "55c4f9ba7f5c59e3345f2c1869464433ffa8dc2b"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Thu Mar 03 22:35:43 2016 -0800"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Mon Mar 07 21:21:22 2016 +0000"
      },
      "message": "Parse and use extra HTTP headers when downloading the payload.\n\nAndroid OTA backend requires to pass an Authorization HTTP header in\norder to download some payload. This patch allows to specify such\nheader when initiating a payload download from Android.\n\nBug: 27047110\nTEST\u003dAdded unittests to check the headers sent.\n\nChange-Id: Iece7e0ee252349bbaa9fb8545da2c34d2a76ae69\n"
    },
    {
      "commit": "a3cf75a1d01aeb03d2341600ebff3db0a8316200",
      "tree": "8724a008f71586acf1b33c67fc972ba15b742cf2",
      "parents": [
        "6c5a0ea560d95054dddd7484f1e6d3127e2fa1e6"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Wed Jan 20 07:56:15 2016 -0800"
      },
      "committer": {
        "name": "Ian Pedowitz",
        "email": "ijpedowitz@google.com",
        "time": "Wed Jan 20 17:10:08 2016 -0800"
      },
      "message": "update_engine: Update libchrome APIs to r369476\n\nThe new libchrome has been ported from Chromium and some APIs have\nchanged. Make necessary changes at call sites.\n\n(cherry picked from commit 0103c36caa2e38e034e0d22185736b9ccfb35c58)\n\nChange-Id: I3dedd8b3f6e92ce8d3eeef99a76ad876c29db304\n"
    },
    {
      "commit": "0103c36caa2e38e034e0d22185736b9ccfb35c58",
      "tree": "8724a008f71586acf1b33c67fc972ba15b742cf2",
      "parents": [
        "3317b88ea8006e9d2fae5dbb3abd7187bacdeefa"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Wed Jan 20 07:56:15 2016 -0800"
      },
      "committer": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Wed Jan 20 09:34:58 2016 -0800"
      },
      "message": "update_engine: Update libchrome APIs to r369476\n\nThe new libchrome has been ported from Chromium and some APIs have\nchanged. Make necessary changes at call sites.\n\nChange-Id: I42e65bda7f1dbdf6f6e0ebf356d2cfea6b729193\n"
    },
    {
      "commit": "39910dcd1d68987ccee7c3031dc269233a8490bb",
      "tree": "b7569d7ff83b001d244eda59bb2efdee9a6f15ec",
      "parents": [
        "82352f97b4621dbf6af8308ff0b0b17b0968b53a"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Mon Nov 09 17:04:30 2015 -0800"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Thu Nov 12 02:17:50 2015 +0000"
      },
      "message": "Split payload application code into a subdirectory.\n\nThis patch splits from the main libupdate_engine code the part that\nis strictly used to download and apply a payload into a new static\nlibrary, moving the code to subdirectories. The new library is divided\nin two subdirectories: common/ and payload_consumer/, and should not\ndepend on other update_engine files outside those two subdirectories.\nThe main difference between those two is that the common/ tools are more\ngeneric and not tied to the payload consumer process, but otherwise they\nare both compiled together.\n\nThere are still dependencies from the new libpayload_consumer library\ninto the main directory files and DBus generated files. Those will be\naddressed in follow up CLs.\n\nBug: 25197634\nTest: FEATURES\u003dtest emerge-link update_engine; `mm` on Brillo.\n\nChange-Id: Id8d0204ea573627e6e26ca9ea17b9592ca95bc23\n"
    },
    {
      "commit": "f123ae2065ef19c172ae67a4c11cf23f1b787204",
      "tree": "a3eea6fbc180b8be121efd0eea590335d0248818",
      "parents": [
        "ed80c802955cc68b573f4ff38b5163a7790a5fe4"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Thu Sep 24 14:59:43 2015 -0700"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@google.com",
        "time": "Thu Sep 24 19:41:54 2015 -0700"
      },
      "message": "Remove leaked callback when CleanUp() from TimeoutCallback().\n\nWhen CleanUp() is called indirectly from TimeoutCallback(), the\nTimeoutCallback() itself is canceled before the new recurrent call is\nscheduled. The CancelTask() call will trivially succeed because the\ncallback already triggered.\n\nBefore CL:281197, the g_source_destroy() call to remove the currently\nrunning callback would prevent it from being re-scheduled even if it\nreturns TRUE from the callback.\n\nThis patch re-schedules the callback before calling CurlPerformOnce()\nso CancelTask() would cancel the scheduled task.\n\nBug: chromium:535649\nTest: Added unittest. Verified it fails without the change.\n\nChange-Id: Ica742dab0eb8d9d5c5055c8afac9d775ad1e0012\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": "6a9d3497bcf57b8b9f5765a2909a51c9f8119cd1",
      "tree": "e58a2563c900d84f1a5de6ec3ce73c8853a88a5d",
      "parents": [
        "249fbf5be69e8de37fbac33c1570a58f902b1f6f"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@chromium.org",
        "time": "Mon Jun 15 12:53:22 2015 -0700"
      },
      "committer": {
        "name": "ChromeOS Commit Bot",
        "email": "chromeos-commit-bot@chromium.org",
        "time": "Wed Jun 17 17:34:39 2015 +0000"
      },
      "message": "platform2: Fix issues with new version of libchrome\n\nlibchrome r334380 has the following breaking changes that need to be fixed:\n- base::JSONWriter::Write() and base::JSONWriter::WriteWithOptions() take\n  \"const base::Value\u0026\" instead of \"const base::Value*\"\n- base::JSONReader::Read() and base::JSONReader::ReadAndReturnError()\n  return a scoped_ptr\u003cbase::Value\u003e instead of base::Value*\n- base/safe_strerror_posix.h is moved to base/posix/safe_strerror.h\n- safe_strerror() is now in \"base\" namespace\n- StartsWithASCII(), EndsWith(), StringToUpperASCII(), LowerCaseEqualsASCII()\n  are now in \"base\" namespace\n- ObserverList\u003cT\u003e is now in \"base\" namespace\n- base::PrintTo(base::FilePath) used in gtest is now moved to libchrome-test\n  library and as such, unit test runners need to link to this library now.\n- crypto::RSAPrivateKey::CreateSensitive() is now removed from //crypto, so\n  some of tests in chromeos-login that used that function had to be changed\n  to use crypto::GenerateRSAKeyPairNSS() directly.\n- UnixDomanSocket class is now in \"base\" namespace\n- Pickle class is now in \"base\" namespace\n\nBUG\u003dchromium:496469\nTEST\u003d`./build_packages`\nCQ-DEPEND\u003dCL:277662\n\nChange-Id: I36e5fbf2e36a92068873ffbd44020c862a3ed9e3\nReviewed-on: https://chromium-review.googlesource.com/277671\nReviewed-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nCommit-Queue: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nTrybot-Ready: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nTested-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\n"
    },
    {
      "commit": "f329b933db41d26644a97afef928eb1b319d6d99",
      "tree": "33b47e66d6d2d48f1650d7fecda3b0a23e2994bc",
      "parents": [
        "ebbe7ef75279183ba3cf055158dbbb3b3b605e0e"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Thu Oct 30 01:37:48 2014 -0700"
      },
      "committer": {
        "name": "chrome-internal-fetch",
        "email": "chrome-internal-fetch@google.com",
        "time": "Sat Nov 01 03:26:34 2014 +0000"
      },
      "message": "update_engine: Fix all the \"using\" declaration usage.\n\nThis patch removes unused \"using\" declarations, that is, declarations\nincluded in a .cc file at a global scope such that \"using foo::bar\"\nthat later don\u0027t use the identifier \"bar\" at all.\n\nThis also unifies the usage of these identifiers in the .cc files\nin favor of using the short name defined by the using declaration.\nFor example, in several cases the .h refer to a type like\n\"std::string\" because using declarations are forbidden in header\nfiles while the .cc includes \"using std::string;\" with the purpose\nof just writting \"string\" in the .cc file. Very rarely, the full\nidentifier is used when a local name ocludes it, for example,\nStringVectorToGStrv() and StringVectorToString() in utils.cc named\nits argument just \"vector\" need to refer to std::vector with the\nfull name. This patch renames those arguments instead.\n\nFinally, it also sorts a few lists of using declarations that weren\u0027t\nin order.\n\nBUG\u003dNone\nTEST\u003dFEATURES\u003dtest emerge-link update_engine\n\nChange-Id: I30f6b9510ecb7e03640f1951c48d5bb106309840\nReviewed-on: https://chromium-review.googlesource.com/226423\nReviewed-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nCommit-Queue: Alex Deymo \u003cdeymo@chromium.org\u003e\nTested-by: Alex Deymo \u003cdeymo@chromium.org\u003e\n"
    },
    {
      "commit": "88b591f24cb3f94f982d7024c2e8ed25c2cc26a2",
      "tree": "d49741d0b0926c4c387e9d618b990ae89e6d2f8e",
      "parents": [
        "f3e2801f18bae14e41099e007de7c9a019735556"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@chromium.org",
        "time": "Thu Aug 28 16:48:57 2014 -0700"
      },
      "committer": {
        "name": "chrome-internal-fetch",
        "email": "chrome-internal-fetch@google.com",
        "time": "Mon Sep 01 11:05:16 2014 +0000"
      },
      "message": "update_engine: Replace NULL with nullptr\n\nReplaced the usage of NULL with nullptr. This also makes it possible to\nuse standard gtest macros to compare pointers in Update Manager\u0027s unit tests.\nSo, there is no need in custom UMTEST_... macros which are replaced with the\ngtest macros (see change in update_engine/update_manager/umtest_utils.h):\n\nUMTEST_ASSERT_NULL(p)      \u003d\u003e ASSERT_EQ(nullptr, p)\nUMTEST_ASSERT_NOT_NULL(p)  \u003d\u003e ASSERT_NE(nullptr, p)\nUMTEST_EXPECT_NULL(p)      \u003d\u003e EXPECT_EQ(nullptr, p)\nUMTEST_EXPECT_NOT_NULL(p)  \u003d\u003e EXPECT_NE(nullptr, p)\n\nBUG\u003dNone\nTEST\u003dFEATURES\u003dtest emerge-link update_engine\n     USE\u003d\"clang asan\" FEATURES\u003dtest emerge-link update_engine\n\nChange-Id: I77a42a1e9ce992bb2f9f263db5cf75fe6110a4ec\nReviewed-on: https://chromium-review.googlesource.com/215136\nTested-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nReviewed-by: Alex Deymo \u003cdeymo@chromium.org\u003e\nCommit-Queue: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\n"
    },
    {
      "commit": "d2779df63aaad8b65fc5d4badee7dbc9bed7f2b6",
      "tree": "e34a511ee4068d8d9cd46a992a4e147f3afbd351",
      "parents": [
        "b683327ed3f50ef89324069fc87ee076b65bee46"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@chromium.org",
        "time": "Mon Jun 16 13:19:00 2014 -0700"
      },
      "committer": {
        "name": "chrome-internal-fetch",
        "email": "chrome-internal-fetch@google.com",
        "time": "Wed Jun 18 01:39:59 2014 +0000"
      },
      "message": "update_engine: fixed warnings from cpplint\n\nFixed all the cpplint warnings in update engine.\n\nBUG\u003dNone\nTEST\u003dUnit tests still pass.\n\nChange-Id: I285ae858eec8abe0b26ff203b99a42a200ceb71c\nReviewed-on: https://chromium-review.googlesource.com/204027\nReviewed-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nTested-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nCommit-Queue: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\n"
    },
    {
      "commit": "75039d7397f03dff77bdf4e26398049ff88edc4c",
      "tree": "a1403721dd45f801d8d95bbbcc612a71bdbb4483",
      "parents": [
        "032e772f76a6cd0b4caf1af7bd02dd81af2dc7dd"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@chromium.org",
        "time": "Tue Mar 25 12:36:28 2014 -0700"
      },
      "committer": {
        "name": "chrome-internal-fetch",
        "email": "chrome-internal-fetch@google.com",
        "time": "Thu Mar 27 18:45:11 2014 +0000"
      },
      "message": "update_engine: update to libbase 242728\n\nMade update_engine link with libchrome-242728 and fixed compile\nissues due to changes in namespaces and include file layout.\n\nAlso removed some of suppressed compiler warnings and fixed the\nissues masked by them (e.g. mismatched printf-like specifiers).\n\nAdded -Wextra compiler option to enable additional useful warnings\nto ensure more strict checking... Had to disable \"unused-parameter\"\nthough since we have a lot of functions (mainly in fakes) that do\nnot use all of their parameters.\n\nBUG\u003dchromium:351593\nTEST\u003dUnit tests passed.\nCQ-DEPEND\u003dCL:191721\n\nChange-Id: I1aa63a48d5f1f4ea75ba6b00aec7aa5f3bad15c4\nReviewed-on: https://chromium-review.googlesource.com/191510\nReviewed-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nCommit-Queue: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nTested-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\n"
    },
    {
      "commit": "b6c562adec6e9491712f156f8fd50e2b807ff302",
      "tree": "0323b5331f782f0827456495d7623c0c774c89a3",
      "parents": [
        "2c2b884a4547407759e50681bb7bc49e3589d4fe"
      ],
      "author": {
        "name": "Gilad Arnold",
        "email": "garnold@chromium.org",
        "time": "Mon Jul 01 02:19:26 2013 -0700"
      },
      "committer": {
        "name": "ChromeBot",
        "email": "chrome-bot@google.com",
        "time": "Mon Jul 22 18:51:03 2013 -0700"
      },
      "message": "AU/unittest: test code spawns local HTTP server with unique port\n\nWith this change, unit testing code spawns a local (test) HTTP server\nthat listens on a unique TCP port. It is up to the server to allocate an\navailable port number (we use auto-allocation via bind) and report it\nback (by default, via its stdout), which the unit test process parses.\nAlso part of this CL:\n\n- Made the port a property of the server object, rather than a global\n  value. This makes more sense in general and may lend itself better to\n  future testing scenarios, such as running multiple servers in\n  parallel.\n\n- Removed a redundant field (validate_quit) from PythonHttpServer and\n  simplified/robustified its shutdown procedure: if the server is known\n  to be responsive, a graceful signal is sent (via wget); otherwise, or\n  if the former failed, a more brutral signal(SIGKILL) is used.\n\n- http_fetcher_unittest code now properly kills test_http_server if the\n  latter is unresponsive.\n\nBUG\u003dchromium:236465\nTEST\u003dTest server spawned with unique port\n\nChange-Id: I699cd5019e4bd860f38205d84e5403cfb9b39f81\nReviewed-on: https://gerrit.chromium.org/gerrit/60637\nCommit-Queue: Gilad Arnold \u003cgarnold@chromium.org\u003e\nReviewed-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nTested-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\n"
    },
    {
      "commit": "97bdb3f6b2288e2fda623fdcbafd2cb3a9e7539a",
      "tree": "fd079d57c1ed18b22c0f1c7a243fa8e1e02800e1",
      "parents": [
        "1c656c48886cf5054b526ed7e95b05903d7644db"
      ],
      "author": {
        "name": "Gilad Arnold",
        "email": "garnold@chromium.org",
        "time": "Sun Jun 30 23:05:50 2013 -0700"
      },
      "committer": {
        "name": "ChromeBot",
        "email": "chrome-bot@google.com",
        "time": "Tue Jul 02 09:33:02 2013 -0700"
      },
      "message": "AU/unittest: parameterize test_http_server port\n\nThis eliminates the constant definition of the test HTTP server port,\nreplacing it with a command-line parameter (which defaults to 8080, the\nwell-known userland HTTP port). This is needed for allowing parallel\ninvocations of unit tests.\n\nBUG\u003dchromium:236465\nTEST\u003dPasses unit tests\n\nChange-Id: I91904dc360ec1b993cbaae93554fb0dd9e5adaad\nReviewed-on: https://gerrit.chromium.org/gerrit/60626\nTested-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nReviewed-by: Don Garrett \u003cdgarrett@chromium.org\u003e\nCommit-Queue: Gilad Arnold \u003cgarnold@chromium.org\u003e\n"
    },
    {
      "commit": "135a58b2cc8bd94c384625d375f0bf26252d6f07",
      "tree": "b9a3b73330dcb2ef392f9bc3bcc79d43f6e5ea73",
      "parents": [
        "780db2144f19d696d84b1602858b25d82d70da1f"
      ],
      "author": {
        "name": "Jay Srinivasan",
        "email": "jaysri@chromium.org",
        "time": "Fri Jul 13 12:46:49 2012 -0700"
      },
      "committer": {
        "name": "Gerrit",
        "email": "chrome-bot@google.com",
        "time": "Fri Jul 13 13:38:18 2012 -0700"
      },
      "message": "Fixed incorrect test cleanup that causes update_engine unit tests to hang\n\nThe PythonHttpServer class has to be cleaned up always. This was not\nhappening properly in one test (ServerDiesTest). This was causing the\nsucceeding test (which always happened to be SimpleRedirectTest) to use the\nwrong server sometimes or hang forever.\n\nAdding a bunch of instrumentation in unit test code helped to figure out\nwhat\u0027s going, so leaving them in.\n\nBUG\u003dchromium-os:32096\nTEST\u003dupdate engine unit tests run fine.\nChange-Id: Ide9a31eb411c8687ca39d78d8ebff97fe6305dbe\nReviewed-on: https://gerrit.chromium.org/gerrit/27325\nCommit-Ready: Jay Srinivasan \u003cjaysri@chromium.org\u003e\nReviewed-by: Jay Srinivasan \u003cjaysri@chromium.org\u003e\nTested-by: Jay Srinivasan \u003cjaysri@chromium.org\u003e\n"
    },
    {
      "commit": "8155d081dc729d407f8ff9e95b4ef91ae14281ce",
      "tree": "2f964e6bf20f0fe0bd22779a8b7c8de977a097a8",
      "parents": [
        "a8a3a878bf8cac959428af8a807e9b5ec4a9a302"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Apr 06 15:23:18 2012 -0400"
      },
      "committer": {
        "name": "Gerrit",
        "email": "chrome-bot@google.com",
        "time": "Wed Apr 11 08:56:24 2012 -0700"
      },
      "message": "pull in base/stringprintf.h explicitly\n\nNewer libbase no longer implicitly includes the stringprintf.h header,\nso building against it fails with missing StringPrintf definitions.\n\nBUG\u003dchromium-os:25872\nTEST\u003d`emerge-x86-alex update_engine` works with old \u0026 new libbase\n\nChange-Id: Ia1ea842449c0382ee4c8e5abd3ddfb3012c3ff2f\nReviewed-on: https://gerrit.chromium.org/gerrit/19774\nCommit-Ready: Mike Frysinger \u003cvapier@chromium.org\u003e\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\nTested-by: Mike Frysinger \u003cvapier@chromium.org\u003e\n"
    },
    {
      "commit": "0f9547d10fc3df51c8dd3828a495e89ed0260037",
      "tree": "9fcbdf4365cb80b329259de2f1202828d593c27e",
      "parents": [
        "1877c3938afb2cc46c959d1158316671cf3460d9"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Feb 16 12:11:37 2012 -0500"
      },
      "committer": {
        "name": "Gerrit",
        "email": "chrome-bot@google.com",
        "time": "Thu Feb 16 13:44:49 2012 -0800"
      },
      "message": "fix build warnings with type mismatches and base check helpers\n\nBuilding with base headers in a SLOT-ed setup exposes build warnings\n(which causes failures due to -Werror).  One such example:\n\nIn file included from extent_writer.h:9:0,\n                 from bzip_extent_writer.h:10,\n                 from bzip_extent_writer.cc:5:\n.../base/logging.h: In function \u0027std::string* logging::CheckEQImpl(const t1\u0026, const t2\u0026, const char*)\n                                 [with t1 \u003d unsigned int, t2 \u003d int, std::string \u003d std::basic_string\u003cchar\u003e]\u0027:\nbzip_extent_writer.cc:53:7:   instantiated from here\n.../base/logging.h:512:1: error: comparison between signed and unsigned integer expressions [-Werror\u003dsign-compare]\ncc1plus: all warnings being treated as errors\n\nExplicitly cast the constants to avoid these.\n\nBUG\u003dchromium-os:16623\nTEST\u003d`emerge-x86-alex update_engine` builds\n\nChange-Id: If3cc4e85fa54862b14305f9d045c73b5575efaa0\nReviewed-on: https://gerrit.chromium.org/gerrit/16035\nReviewed-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nTested-by: Mike Frysinger \u003cvapier@chromium.org\u003e\nCommit-Ready: Mike Frysinger \u003cvapier@chromium.org\u003e\n"
    },
    {
      "commit": "e4ad2508de4d69d7a90d3ce441efe2c82c55bd1d",
      "tree": "9f34994e69911322541965da453db248a04495ac",
      "parents": [
        "2a4b446ed5ff8e57f48dd6a7c897c04d9b489d59"
      ],
      "author": {
        "name": "Gilad Arnold",
        "email": "garnold@chromium.org",
        "time": "Thu Dec 29 17:08:54 2011 -0800"
      },
      "committer": {
        "name": "Gerrit",
        "email": "chrome-bot@google.com",
        "time": "Wed Jan 04 12:14:25 2012 -0800"
      },
      "message": "AU multi-range fetcher requests properly closed ranges when their length\nis known.\n\n* HttpFetcher allows to set the length of data to be fetched.\n  LibcurlHttpFetcher uses this value in applying the appropriate libcurl\n  option (CURLOPT_RANGE).  MultiHttpFetcher sets the desired payload\n  length in the underlying fetcher accordingly.\n\n* Improved functionality of test_http_server: (a) correctly parses\n  closed range intervals; (b) generalized response header generation;\n  (c) unified and generalized get handling for both stable and flaky\n  cases.\n\n* Small scale refactoring, improved logging and readability.\n\nBUG\u003dchromium-os:24666\nTEST\u003dunit tests\n\nChange-Id: I1727710ca747088c67a68305f355da683b07b6a3\nReviewed-on: https://gerrit.chromium.org/gerrit/13594\nReviewed-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nTested-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nCommit-Ready: Gilad Arnold \u003cgarnold@chromium.org\u003e\n"
    },
    {
      "commit": "9bedeb51f80c9547269eef6c2ec09596033bb818",
      "tree": "689f5f2ed088e00958f13f483a542c1bdad503e9",
      "parents": [
        "48085ba58516e94f045d3ab7e26c8f36e6a6936f"
      ],
      "author": {
        "name": "Gilad Arnold",
        "email": "garnold@chromium.org",
        "time": "Thu Nov 17 16:19:57 2011 -0800"
      },
      "committer": {
        "name": "Gilad Arnold",
        "email": "garnold@chromium.org",
        "time": "Mon Nov 28 16:20:20 2011 -0800"
      },
      "message": "Fetcher tries all proxies when a secondary chunk download error occurs.\n\nThis is a fix to issue 18143:\n\n* New test cases for asserting the desired behavior: if a transfer of\n  a secondary chunk within a multi-chunk fetch fails, then the fetcher\n  needs to retry with other available proxies; it will only fail when no\n  additional proxies are available.  The tests ensure both success (one\n  of the proxies eventually succeeds) and failure (all proxies fail)\n  cases.\n\n* Small fix to LibcurlHttpFetcher to retry with other proxies upon\n  failure (error value) of a secondary chunk.\n\nOther changes applied in the course of this fix:\n\n* Massive refactoring of http_fetcher_unittest: substituted template\n  specialization in typed test setup with proper subclassing, resulting\n  in a safer and more maintainable infrastructure;  extended URLs to\n  include all (most) parameters pertaining to test workload, such as\n  download size, flakiness, etc.\n\n* Respective changes to test_http_server: it is now much more\n  independent of particular kind of tests, and more easily\n  parametrizable.  Also, generalized several internal methods for better\n  readability and extensibility, such as writing of arbitrary payloads,\n  parsing headers,\n\n* Migrated common definitions into http_common.{h,cc} (universal\n  HTTP-related stuff) and http_fetcher_unittest.h (shared definitions\n  pertaining to unit tests).\n\n* Extended direct proxy resolver to generate a list of (non-) proxies,\n  so we can unit test proxy failure.  Also, better logging to improve\n  testability.\n\n* Some renaming of classes for better consistency.\n\nBUG\u003dchromium-os:18143\nTEST\u003dunit tests\n\nChange-Id: Ib90b53394d7e47184d9953df8fc80348921e8af0\nReviewed-on: https://gerrit.chromium.org/gerrit/12092\nCommit-Ready: Gilad Arnold \u003cgarnold@chromium.org\u003e\nReviewed-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nTested-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\n"
    },
    {
      "commit": "48085ba58516e94f045d3ab7e26c8f36e6a6936f",
      "tree": "345bdd3a9c50c3796aa0bc13bfe8494841d9b172",
      "parents": [
        "e410e0ff57c820e7d5f5bf6abcea56fe6951111b"
      ],
      "author": {
        "name": "Gilad Arnold",
        "email": "garnold@google.com",
        "time": "Wed Nov 16 09:36:08 2011 -0800"
      },
      "committer": {
        "name": "Gilad Arnold",
        "email": "garnold@chromium.org",
        "time": "Wed Nov 16 16:07:57 2011 -0800"
      },
      "message": "Updater avoids download in case of an error HTTP response.\n\n(a) LibcurlHttpFetcher avoids download if the HTTP reponse indicates an\nerror; corresponding change to unit test code and test HTTP server.  (b)\nAdded a method for returning the total bytes downloaded to HttpFetcher\nand all subclasses, needed for unit testing.  (c) Generalized check for\nsuccessful HTTP response code in LibcurlHttpFetcher.\n\nBUG\u003dchromium-os:9648\nTEST\u003dunit tests\n\nChange-Id: I46d72fbde0ecfb53823b0705ce17f9547515ee61\nReviewed-on: https://gerrit.chromium.org/gerrit/11773\nTested-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nReviewed-by: Andrew de los Reyes \u003cadlr@chromium.org\u003e\nCommit-Ready: Gilad Arnold \u003cgarnold@chromium.org\u003e\n"
    },
    {
      "commit": "f67bb1f187d7fcea38a33badf4bc619fc2e5c0fc",
      "tree": "3c491fa1388c9f5509867c15c4119079bb71743f",
      "parents": [
        "6d5dbf6458d55db480ebaa1b6fc3152631f722ad"
      ],
      "author": {
        "name": "Darin Petkov",
        "email": "petkov@chromium.org",
        "time": "Mon Nov 08 16:10:26 2010 -0800"
      },
      "committer": {
        "name": "Darin Petkov",
        "email": "petkov@chromium.org",
        "time": "Mon Nov 08 16:10:26 2010 -0800"
      },
      "message": "AU: Change test http server port from 8080 to 8088.\n\nThis allows developers to run unit tests while the dev server is running. Also\nremove obsole test_http_server.py.\n\nBUG\u003d8889\nTEST\u003dunit tests while dev server is running.\n\nChange-Id: Iaf0ff92edbb959d93bd206c0007455f637682e2c\n\nReview URL: http://codereview.chromium.org/4667002\n"
    },
    {
      "commit": "3fd5d30433509859bfdcc0b650e242981410c6a7",
      "tree": "2dfbbf084da4772beaeeba399de8f1252c2641ed",
      "parents": [
        "9c0baf82049efd95230a8389769e1b3e5d001209"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Thu Oct 07 20:07:18 2010 -0700"
      },
      "committer": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Thu Oct 07 20:07:18 2010 -0700"
      },
      "message": "AU: MultiHttpFetcher, an HttpFetcher for specific byte ranges\n\nMultiHttpFetcher takes an HttpFetcher class via template parameter,\nand a collection of byte ranges. It hits up the URL multiple times,\nonce per range specified. For each time, it uses a new HttpFetcher of\nthe type specified and fast-forwards to the offset requested, and\naborting after enough bytes have been downloaded. Any range many\nspecify a length of -1, which means until the end of the file (as\ndictated by the server). Thus, a single range of [0, -1] makes\nMultiHttpFetcher a pass-through.\n\nHttpFetcher change: ability to supply an offset.\n\nLibcurlHttpFetcher changes: offset support (from HttpFetcher API),\nability to be terminted in a write-callback.\n\ntest_http_fetcher: support for failures in write() on the socket (at\nleast in the /big url case).\n\nBUG\u003d7391\nTEST\u003dunittests\n\nReview URL: http://codereview.chromium.org/3591018\n"
    },
    {
      "commit": "41c2fcf4525a3b4e8960c4b71dfe4f4f11c8224f",
      "tree": "5a8ceeb63a2a8b3417210d92a1c184c4c6ab1f4d",
      "parents": [
        "5c0a8afa879886800d82b195e3164e5a580a2cc7"
      ],
      "author": {
        "name": "Darin Petkov",
        "email": "petkov@chromium.org",
        "time": "Wed Aug 25 13:14:48 2010 -0700"
      },
      "committer": {
        "name": "Darin Petkov",
        "email": "petkov@chromium.org",
        "time": "Wed Aug 25 13:14:48 2010 -0700"
      },
      "message": "AU: Support redirects.\n\nBUG\u003d5692\nTEST\u003dunit tests, gmerged on device, making sure update engine still works\n\nChange-Id: If593f6efbd39452aa98b453f4d5489ce7d7d7fb9\n\nReview URL: http://codereview.chromium.org/3161041\n"
    },
    {
      "commit": "790e62e2d8114647b0785574bea361cf931c482b",
      "tree": "ce25213a6bc926c5cb4895dea18b9ed354a7610f",
      "parents": [
        "c6c135c3e555a856b762e4f383d1d2768363589d"
      ],
      "author": {
        "name": "Chris Masone",
        "email": "cmasone@chromium.org",
        "time": "Thu Aug 12 10:41:18 2010 -0700"
      },
      "committer": {
        "name": "Chris Masone",
        "email": "cmasone@chromium.org",
        "time": "Thu Aug 12 10:41:18 2010 -0700"
      },
      "message": "[update_engine] Update to use not-hideously-old logging API from chrome\n\nBUG\u003dNone\nTEST\u003dcompile\n\nChange-Id: Ieed8952b6806a72b59e16c1579f7293b6a98157a\n\nReview URL: http://codereview.chromium.org/3170010\n"
    },
    {
      "commit": "fb4ad7d5e8c5946fc475f3ee289b38287f015326",
      "tree": "49abfa45476954d157749b5c18943a61adb9ca74",
      "parents": [
        "8c2980e8b973a21468c9fece0490cd440afc0660"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Mon Jul 19 10:43:46 2010 -0700"
      },
      "committer": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Mon Jul 19 10:43:46 2010 -0700"
      },
      "message": "AU: HTTP success is not just 200, but anything in the 2xx range\n\nBUG\u003dNone\nTEST\u003dattached unittest\n\nReview URL: http://codereview.chromium.org/3036005\n"
    },
    {
      "commit": "08c4e27baaa7b40732b99642e1f21bf889d022ef",
      "tree": "816583a62961b5caa1f1e13ba74e88ff070cf2c6",
      "parents": [
        "b10320d4f76a2d263566f6eed471921382fae800"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Thu Apr 15 14:02:17 2010 -0700"
      },
      "committer": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Thu Apr 15 14:02:17 2010 -0700"
      },
      "message": "update engine: 32- and 64-bit compile\n\nReview URL: http://codereview.chromium.org/1599029\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"
    }
  ]
}
