)]}'
{
  "log": [
    {
      "commit": "421ff33ee91186014c37abc7b6d8fa075074d894",
      "tree": "389afe3cd9145a284dac2bc9c827db06a53afacf",
      "parents": [
        "71818c8409812c5a08124627c19aa8ea0625a72e"
      ],
      "author": {
        "name": "Weidong Guo",
        "email": "weidongg@chromium.org",
        "time": "Mon Apr 17 10:08:38 2017 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Mon Mar 19 14:18:55 2018 -0700"
      },
      "message": "Reland update over cellular changes\n\nThis merge cherrypicks two commits that was reverted in an AOSP git merge.\n\n4b0d6032cbb86ce488c03b31936cda31283f97e3 Add functions to allow update over cellular (including tethered connection)\n840703a4cc77228e2606f45665ae3a4bd75ff7dd Fix update over cellular network on guest account\n\nHandled multi-package response.\n\nRan clang-format which fixed a lot of issues in those two CLs.\n\nBUG\u003dchromium:815356\nTEST\u003dunittests, precq\n\nChange-Id: I54b6763c4c54755272531b558ed7628ceb0fc6c7\nReviewed-on: https://chromium-review.googlesource.com/965267\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": "5688d16057d34b770c070e2b4a27841092003a4e",
      "tree": "7fea2289ebf922763b2c110094bb8e394b9e08f9",
      "parents": [
        "e5f6f2571d43eb65e0b27dd8d50f2c1f0b3fe30f"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Tue Jun 06 13:09:06 2017 -0700"
      },
      "committer": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Tue Jun 06 13:09:22 2017 -0700"
      },
      "message": "Revert \"Add functions to allow update over cellular (including tethered connection)\"\n\nThis reverts commit 4b0d6032cbb86ce488c03b31936cda31283f97e3.\n\nBug: 62366504\nTest: GmsCore sees the old status code (i.e. UPDATED_NEED_REBOOT \u003d\u003d 6).\nChange-Id: I9185614a41bd621ad85e7f773b0f96919b0f70d5\n"
    },
    {
      "commit": "4b0d6032cbb86ce488c03b31936cda31283f97e3",
      "tree": "aa79f951ea4f50fcd33d613aa1991b6c30b00869",
      "parents": [
        "d6803aa21c1fcd2c8cce9b82fa73b5f9e3200b59"
      ],
      "author": {
        "name": "Weidong Guo",
        "email": "weidongg@chromium.org",
        "time": "Mon Apr 17 10:08:38 2017 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed May 31 15:56:02 2017 -0700"
      },
      "message": "Add functions to allow update over cellular (including tethered connection)\n\n- Add an update state NEED_PERMISSION_TO_UPDATE which is broadcasted along\nwith the update info (version and size) when |OmahaRequestAction| aborts\nupdate due to cellular connection. So the state transition will be:\nIDLE-\u003eCHECKING_FOR_UPDATE-\u003eNEED_PERMISSION_TO_UPDATE-\u003eREPORTING_ERROR_EVENT\n-\u003eIDLE\n(The Chrome UI prompts an alert window showing update size and asks user\nwhether to proceed upon receiving this state.)\n\n- Add a dbus interface to set update over cellular target\n(kPrefsUpdateOverCellularTargetVersion and kPrefsUpdateOverCellularTargetSize).\nThe target is the one received by Chrome UI in NEED_PERMISSION_TO_UPDATE\nbroadcast. By sending the target back with the dbus call, update engine can\ndouble check the target with the server to make sure there\u0027s no new server\npush after NEED_PERMISSION_TO_UPDATE is broadcasted to Chrome UI.\n(This dbus call is invoked when the user chooses to proceed to update at the\nalert window. The dbus call is followed by another dbus call |AttemptUpdate|)\n\n- So, the the decision tree as to whether to allow update over cellular\nconnection has changed to:\nIF (device policy DeviceUpdateAllowedConnectionTypes set)\n  follow device policy\u0027s decision\nELSE IF (kPrefsUpdateOverCellularPermission set to true)\n  allow update\nELSE IF (Either kPrefsUpdateOverCellularTargetVersion or\n    kPrefsUpdateOverCellularTargetSize is not set, or they are set but do not\n    match the version and size in |OmahaResponse| retrieved by\n    |OmahaRequestAction|)\n  disallow update, and broadcast NEED_PERMISSION_TO_UPDATE\nELSE\n  allow update\nENDIF\n\n- This decision making happens at |OmahaRequestAction| after |OmahaResponse| is\nretrieved. Since we want to separate the device policy check with the user\npreferences check which depends on |OmahaResponse| during checking for update,\nwe modify ConnectionManager::IsUpdateAllowedOver by moving the user preferences\ncheck to |OmahaRequestAction|. Thus, the function by default returns true for\ncellular connection if device policy is not set.\n\n- Corner case:\nAdding kPrefsUpdateOverCellularPermission and\nkPrefsUpdateOverCellularTargetSize seems to complicate the logic here. But\nthey could effectively solve a corner case where the target does not match\n|OmahaResponse| due to new server push after broadcasting\nNEED_PERMISSION_TO_UPDATE. In that case, we simply broadcast\nNEED_PERMISSION_TO_UPDATE again along with new update info.\n\nCQ-DEPEND\u003dCL:481102\nBUG\u003dchromium:691108\nTEST\u003d\u0027FEATURES\u003dtest emerge-link update_engine\u0027\n\n(cherry picked from commit 70063d9f7e229db8c5b42443ca96ac23a971a6dd)\nCherry-pick updated to compile on Android.\n\nReviewed-on: https://chromium-review.googlesource.com/479467\nCommit-Ready: Weidong Guo \u003cweidongg@chromium.org\u003e\nTested-by: Weidong Guo \u003cweidongg@chromium.org\u003e\nReviewed-by: Weidong Guo \u003cweidongg@chromium.org\u003e\nReviewed-by: Andrew de los Reyes \u003cadlr@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\n"
    },
    {
      "commit": "255e22b82af3a52218eaea66acc734ec25cfeab6",
      "tree": "4e06155b189999061af8238699a7ac93ac4fa906",
      "parents": [
        "a35896c0ab209488b347672e9c917355b3fd8f51"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri May 20 16:15:29 2016 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Tue Jun 07 00:07:46 2016 +0000"
      },
      "message": "Move ParseConnection*() to connection_utils.\n\nWe don\u0027t need real_shill_provider if USE_DBUS is 0, but we still need\nthese functions, and they have a duplicate copy in connection_manager,\nso put them in utils and deduplicate.\n\nAlso moved StringForConnectionType() to connection_utils.\n\nBug: 28800946\nTest: mma\n\nChange-Id: If535fdc52bc8fb267921bea02b31d8d6580d5d54\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": "305345001d85ca2282112c2a30fe75c7a4773491",
      "tree": "51b4eeaabb51f80eebe856f595b2d5bf21e0968f",
      "parents": [
        "b7ca096f98a43ebbf412f1b2d3d15bb184f871f8"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Mon Jul 20 15:06:33 2015 -0700"
      },
      "committer": {
        "name": "ChromeOS Commit Bot",
        "email": "chromeos-commit-bot@chromium.org",
        "time": "Fri Aug 14 02:25:54 2015 +0000"
      },
      "message": "update_engine: Switch to chrome-dbus for client requests in update_engine\n\nupdate_engine daemon acts as DBus client to send DBus calls to shill,\npower_manager and chrome, and to listen for signals from shill, chrome\nand login_manager. This patch migrates these calls and signals to use\nchrome-dbus framework instead of dbus-glib.\n\nAll references to dbus-glib code are removed.\n\nBUG\u003dchromium:419827\nTEST\u003dUpdated unittest. Deployed on a link device and tested interactions with shill and chromium.\n\nChange-Id: I31b389e0d1690cccb115ff3b6539c876ba81bd0e\nReviewed-on: https://chromium-review.googlesource.com/290990\nTested-by: Alex Deymo \u003cdeymo@chromium.org\u003e\nReviewed-by: Alex Deymo \u003cdeymo@chromium.org\u003e\nCommit-Queue: Alex Deymo \u003cdeymo@chromium.org\u003e\nTrybot-Ready: Alex Deymo \u003cdeymo@chromium.org\u003e\n"
    },
    {
      "commit": "f6ee0163504eaf1a7cc136ba2c075d77ae2b4dd5",
      "tree": "1ac88ce36185ac2e2a246123b4b80eb178d5d91c",
      "parents": [
        "75eac7e523f825afdb88508922d7dc65fa366b19"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Fri Jul 31 12:35:22 2015 -0700"
      },
      "committer": {
        "name": "ChromeOS Commit Bot",
        "email": "chromeos-commit-bot@chromium.org",
        "time": "Sat Aug 01 02:53:04 2015 +0000"
      },
      "message": "update_engine: Move ConnectionManager to an abstract Interface.\n\nMockConnectionManager required to use one of ConnectionManager\nconstructors passing pointers that won\u0027t be use by the mock. This\npatch moves the interface to its own ConnectionManagerInterface class.\n\nBUG\u003dNone\nTEST\u003dunittests still pass.\n\nChange-Id: I9ed09daf8e4256304be7dab30cfbe751901dc24b\nReviewed-on: https://chromium-review.googlesource.com/290120\nReviewed-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nCommit-Queue: Alex Deymo \u003cdeymo@chromium.org\u003e\nTrybot-Ready: Alex Deymo \u003cdeymo@chromium.org\u003e\nTested-by: Alex Deymo \u003cdeymo@chromium.org\u003e\n"
    },
    {
      "commit": "cf175a098081f3f0e9ca52d997a7ce1585c14c2d",
      "tree": "2d3dc5048c3a578c3cabf1839d58b3a8d78b3060",
      "parents": [
        "a1eabcdc93d118146639139257c2f5ccc3ffb061"
      ],
      "author": {
        "name": "Gilad Arnold",
        "email": "garnold@chromium.org",
        "time": "Thu Jul 10 16:48:47 2014 -0700"
      },
      "committer": {
        "name": "chrome-internal-fetch",
        "email": "chrome-internal-fetch@google.com",
        "time": "Fri Jul 11 18:54:57 2014 +0000"
      },
      "message": "Fix cpplint errors.\n\nThe only non-obvious change here is the switch from dynamic_cast to\nstatic_cast in three cases of down-casting in UpdateAttempter.\ndynamic_cast is banned by style, nor does it add any safety in this\nparticular case (subsequent code dereferences the result right away\nwithout checking whether it\u0027s null).\n\nBUG\u003dNone\nTEST\u003dNone\n\nChange-Id: I9d49b46362feaf9c6fa13b2715ebe9fe50308a9a\nReviewed-on: https://chromium-review.googlesource.com/207470\nTested-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nReviewed-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nCommit-Queue: Gilad Arnold \u003cgarnold@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": "6ae9120dc76ce9a3c8d05f71c05f23e3f4bdc6bd",
      "tree": "2973edf63d91f979910b3083c10921af95308870",
      "parents": [
        "e636c3cccaae066a7c9e65d0e4dd69699b3c6d82"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Mon Mar 10 19:21:25 2014 -0700"
      },
      "committer": {
        "name": "chrome-internal-fetch",
        "email": "chrome-internal-fetch@google.com",
        "time": "Thu Mar 13 14:41:21 2014 +0000"
      },
      "message": "Treat confirmed Tethered networks as Cellular networks.\n\nThe updates are allowed based on the type of connection used to\ndownload it from. For example, by default, no update is made over\nCellular networks even if the device is connected to a VPN over a\nCellular network to prevent huge charges on those connections.\n\nNevertheless, when the device is connected to a tethered network such\nas an Android or iPhone sharing its Cellular connection over Wifi,\nthe connection type the device sees is a Wifi and thus will allow\nthe updates by default.\n\nTo prevent updates over tethered networks, this patch uses the\nTethering property expossed by shill to avoid those situations. If\nthe device is connected to a network that shill confirms to be a\ntethered network, it will be treated as if the device is connected\nto a Cellular network. This means that the updates will be allowed\nbased on the same settings that govern if the updates are allowed\nover Cellular networks.\n\nBUG\u003dchromium:323010\nTEST\u003dUnit tests added to verify policy and property parsing.\n\nChange-Id: I3a31c804465c9ed5c76b5d6156adda8e5e4e8a6d\nReviewed-on: https://chromium-review.googlesource.com/189524\nTested-by: Alex Deymo \u003cdeymo@chromium.org\u003e\nReviewed-by: Chris Sosa \u003csosa@chromium.org\u003e\nCommit-Queue: Alex Deymo \u003cdeymo@chromium.org\u003e\n"
    },
    {
      "commit": "1b9d6ae00b3c3badf9785584c2c867710f214a62",
      "tree": "072df22c99af1762fdede57c977f9da52107f485",
      "parents": [
        "b752fb342f2d8f9766f13764e4747a50a1195308"
      ],
      "author": {
        "name": "Gilad Arnold",
        "email": "garnold@chromium.org",
        "time": "Mon Mar 03 13:46:07 2014 -0800"
      },
      "committer": {
        "name": "chrome-internal-fetch",
        "email": "chrome-internal-fetch@google.com",
        "time": "Wed Mar 12 22:32:37 2014 +0000"
      },
      "message": "Further cleanup around DBus interface classes.\n\n* Removed the \"Glib\" part from the various DbusGlib class name and added\n  \"Wrapper\" instead: only part of the methods here declared have\n  anything to do with Glib; in essence, this is an interface containing\n  wrappers for various DBus functions.\n\n* Changed \"Dbus\" to \"DBus\", to comply with the rest of the world.\n\n* Renamed the actual implementation \"RealDBusWrapper\" (instead of\n  \"Concrete\").\n\n* Separated out RealDBusWrapper into its own header file. Client code,\n  which often only cares about the abstract class, does not need to pull\n  it unless specifically requiring it.\n\n* Cleaned up the includes in these headers.\n\nAside from all that, also renamed system_state.cc into\nreal_system_state.cc, as this is what this file contains.\n\nBUG\u003dNone\nTEST\u003dUnit tests.\n\nChange-Id: I015c407cbc159aba8b5925eb0e916ba604c829cd\nReviewed-on: https://chromium-review.googlesource.com/189373\nReviewed-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nTested-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nCommit-Queue: Gilad Arnold \u003cgarnold@chromium.org\u003e\n"
    },
    {
      "commit": "4348879380222dc8c74b0976e527bf3da66ba08f",
      "tree": "1775314ef9f04690a29ebf811819013930a3fc8b",
      "parents": [
        "1e6bb9c3ab1d65cfcab329a25f7390bf822617ea"
      ],
      "author": {
        "name": "Jay Srinivasan",
        "email": "jaysri@chromium.org",
        "time": "Tue Jun 19 00:25:31 2012 -0700"
      },
      "committer": {
        "name": "Gerrit",
        "email": "chrome-bot@google.com",
        "time": "Tue Jun 19 01:26:16 2012 -0700"
      },
      "message": "UpdateEngine-side changes to allow updates over 3G based on device policy.\n\nSome enterprise chromebooks have only 3G and hence they need the ability\nto update over 3G if the enterprise policy allows that. This CL adds\nthe support in update_engine to enable that.\n\nBUG\u003dchromium-os:31099\nTEST\u003dTested E2E on 3G, added unit tests and did regression testing.\nCQ-DEPEND\u003dI1a55a392f3dc0f12d917eb45dcf0456b57735514\nChange-Id: I121bda35e54fa6c35e002a76db198d13b72b650e\nReviewed-on: https://gerrit.chromium.org/gerrit/25470\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"
    }
  ]
}
