)]}'
{
  "log": [
    {
      "commit": "62aad7f66fcd673831029eb96dd49c95f76b17bd",
      "tree": "da743e86cd8cfe6f1c8a61fbce544f271c7e63b9",
      "parents": [
        "e4c9ac2df26f640fa9aeab5928e82bcc59a33da2"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Mar 14 01:11:53 2013 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Mon Mar 18 18:22:30 2013 -0700"
      },
      "message": "add reboot and shutdown to `svc power` command\n\na runtime shutdown will be performed first, then device will\nreboot with the provided reason or power off.\n\nChange-Id: I44cfbae19626c46147fad3bc8e91434970daa5d5\n"
    },
    {
      "commit": "783f9e6615db5c90c184397cf1ee271e302c398b",
      "tree": "c552f9768c06a47f2515f7ef116aea5bcb8c7cbc",
      "parents": [
        "add52a975aa78d9e24d3e63a8168c00a9bfb80ec"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Sun Sep 09 14:38:23 2012 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Sun Sep 09 14:43:09 2012 -0700"
      },
      "message": "Use correct PowerManager call to wake up screen\n\nThe current implementation does not actually wakes up the screen.\n\nChange-Id: Ief2dca013cfe40e03b64273fe7b09822e9ad42a7\n"
    },
    {
      "commit": "37a37f445cbcd64376af153dd79ea2a123d9405d",
      "tree": "7b2ae5f75d4c6bff056472da64752473e1d211f9",
      "parents": [
        "82d53ce283b7c275624d66e9bf20cfe2614af5c4"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Tue Aug 14 15:21:02 2012 -0700"
      },
      "committer": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Mon Aug 20 10:04:12 2012 -0700"
      },
      "message": "add wireless charger support\n\nbug: 6879638\n\n- add new enum value BATTERY_PLUGGED_WIRELESS\n- check for sys online file with contents \"Wireless\"\n\nChange-Id: I22dc3c40f50573c98643e7b5cbcb237d0216530d\n"
    },
    {
      "commit": "9630704ed3b265f008a8f64ec60a33cf9dcd3345",
      "tree": "0c905e55ac062b625bf7a9ced250f05213d7873f",
      "parents": [
        "ff7e6ef4f18ff94a9836492ff3ccd1ba7f6804f3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 15:51:34 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 03:06:24 2012 -0700"
      },
      "message": "Power manager rewrite.\n\nThe major goal of this rewrite is to make it easier to implement\npower management policies correctly.  According, the new\nimplementation primarily uses state-based rather than event-based\ntriggers for applying changes to the current power state.\n\nFor example, when an application requests that the proximity\nsensor be used to manage the screen state (by way of a wake lock),\nthe power manager makes note of the fact that the set of\nwake locks changed.  Then it executes a common update function\nthat recalculates the entire state, first looking at wake locks,\nthen considering user activity, and eventually determining whether\nthe screen should be turned on or off.  At this point it may\nmake a request to a component called the DisplayPowerController\nto asynchronously update the display\u0027s powe state.  Likewise,\nDisplayPowerController makes note of the updated power request\nand schedules its own update function to figure out what needs\nto be changed.\n\nThe big benefit of this approach is that it\u0027s easy to mutate\nmultiple properties of the power state simultaneously then\napply their joint effects together all at once.  Transitions\nbetween states are detected and resolved by the update in\na consistent manner.\n\nThe new power manager service has is implemented as a set of\nloosely coupled components.  For the most part, information\nonly flows one way through these components (by issuing a\nrequest to that component) although some components support\nsending a message back to indicate when the work has been\ncompleted.  For example, the DisplayPowerController posts\na callback runnable asynchronously to tell the PowerManagerService\nwhen the display is ready.  An important feature of this\napproach is that each component neatly encapsulates its\nstate and maintains its own invariants.  Moreover, we do\nnot need to worry about deadlocks or awkward mutual exclusion\nsemantics because most of the requests are asynchronous.\n\nThe benefits of this design are especially apparent in\nthe implementation of the screen on / off and brightness\ncontrol animations which are able to take advantage of\nframework features like properties, ObjectAnimator\nand Choreographer.\n\nThe screen on / off animation is now the responsibility\nof the power manager (instead of surface flinger).  This change\nmakes it much easier to ensure that the animation is properly\ncoordinated with other power state changes and eliminates\nthe cause of race conditions in the older implementation.\n\nThe because of the userActivity() function has been changed\nso that it never wakes the device from sleep.  This change\nremoves ambiguity around forcing or disabling user activity\nfor various purposes.  To wake the device, use wakeUp().\nTo put it to sleep, use goToSleep().  Simple.\n\nThe power manager service interface and API has been significantly\nsimplified and consolidated.  Also fixed some inconsistencies\nrelated to how the minimum and maximum screen brightness setting\nwas presented in brightness control widgets and enforced behind\nthe scenes.\n\nAt present the following features are implemented:\n\n- Wake locks.\n- User activity.\n- Wake up / go to sleep.\n- Power state broadcasts.\n- Battery stats and event log notifications.\n- Dreams.\n- Proximity screen off.\n- Animated screen on / off transitions.\n- Auto-dimming.\n- Auto-brightness control for the screen backlight with\n  different timeouts for ramping up versus ramping down.\n- Auto-on when plugged or unplugged.\n- Stay on when plugged.\n- Device administration maximum user activity timeout.\n- Application controlled brightness via window manager.\n\nThe following features are not yet implemented:\n\n- Reduced user activity timeout for the key guard.\n- Reduced user activity timeout for the phone application.\n- Coordinating screen on barriers with the window manager.\n- Preventing auto-rotation during power state changes.\n- Auto-brightness adjustment setting (feature was disabled\n  in previous version of the power manager service pending\n  an improved UI design so leaving it out for now).\n- Interpolated brightness control (a proposed new scheme\n  for more compactly specifying auto-brightness levels\n  in config.xml).\n- Button / keyboard backlight control.\n- Change window manager to associated WorkSource with\n  KEEP_SCREEN_ON_FLAG wake lock instead of talking\n  directly to the battery stats service.\n- Optionally support animating screen brightness when\n  turning on/off instead of playing electron beam animation\n  (config_animateScreenLights).\n\nChange-Id: I1d7a52e98f0449f76d70bf421f6a7f245957d1d7\n"
    },
    {
      "commit": "f0e3edc0709dc190190e0ca386478f4a0da92e7a",
      "tree": "69149266c611bfceb1c26e1e1dcad4253c9c8c86",
      "parents": [
        "6113ce3be4ba7208bac7d9f0cad7e83104dbc8d3"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Mon Apr 30 18:29:23 2012 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Mon Apr 30 18:29:23 2012 -0700"
      },
      "message": "remove extra semi colon\n\nEclipse has been complaining about it...\n\nChange-Id: I39fb4eeab26af883dd2287baf49ec244db453365\n"
    },
    {
      "commit": "59d3d868112f8bbd14f466d0096789548b176d34",
      "tree": "492208b0e399efd666d2385e5a96c2e732609642",
      "parents": [
        "7725180c646d1976a2a2097735862a75ec47c544"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Apr 27 10:06:16 2012 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Apr 27 10:06:16 2012 -0700"
      },
      "message": "Add Usb control to svc.\n\nWe used to have control over usb via ndc but recent changes removed that.\nThe reverse_tether.sh script needs control (on rooted devices) to run\nso added this.\n\nbug:4208971\nChange-Id: I722fc0e14540890be0d79a0b7d22f23b2d57f20c\n"
    },
    {
      "commit": "7e9f4eb2608148436cef36c9969bf8a599b39e72",
      "tree": "16351bff3017f948792a6308f4f6698e0a9d769c",
      "parents": [
        "cc5494c9996f809e36539b24e8b6b67683383d29"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 10 18:43:00 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 13 14:20:48 2010 -0700"
      },
      "message": "Track client requests through location manager.\n\nThis fixes a problem where applications could ask the location\nmanager to do very heavy-weight things (like...  say... update\nlocation every minute), which would get accounted against the\nsystem instead of the application because ultimately it is the\nsystem making the heavy calls (wake locks, etc).\n\nTo solve this, we introduce a new class WorkSource representing\nthe source of some work.  Wake locks and Wifi locks allow you\nto set the source to use (but only if you are system code and thus\ncan get the permission to do so), which is what will be reported\nto the battery stats until the actual caller.\n\nFor the initial implementation, the location manager keeps track\nof all clients requesting periodic updates, and tells its providers\nabout them as a WorkSource param when setting their min update time.\nThe network location provider uses this to set the source on the\nwake and wifi locks it acquires, when doing work because of the\nupdate period.\n\nThis should also be used elsewhere, such as in the GPS provider,\nbut this is a good start.\n\nChange-Id: I2b6ffafad9e90ecf15d7c502e2db675fd52ae3cf\n"
    },
    {
      "commit": "0e39ea83c5578e0d55e120c91ff7cfeeb0c1cb2f",
      "tree": "a4ef4b0b89816adc34b10618889aa4021867c58f",
      "parents": [
        "30998a59aced3248b3a6f5e507dba0394fb54cad"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Nov 18 15:37:10 2009 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Nov 18 18:45:59 2009 -0500"
      },
      "message": "Fixes for proximity sensor behavior:\n\nAdd optional flag to Wakelock.release() to specify whether we should wait for proximity sensor to go negative before turning on the screen.\nClear the \"waiting for proximity sensor to go negative\" state when the power key is pressed.\n\nPart of the fix for b/2243198 (Black screen lockup after ending call)\n\nChange-Id: I813fdb7aa4192cd3384a25be9e59d7d4b90da53a\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "401ad721aded1e3e57ff51b8c2f98578b588ac43",
      "tree": "e05a0a13d38cc5ea9399d1f5145885df9329e719",
      "parents": [
        "455e3af1f82629d274447cd5d08d3c8dc1c58967"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Aug 13 18:13:50 2009 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Aug 13 18:13:50 2009 -0700"
      },
      "message": "Modify svc power command so it pokes the wake lock when called. This will ensure screen is not asleep if stayon is requested.\n"
    },
    {
      "commit": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "f013e1afd1e68af5e3b868c26a653bbfb39538f8",
      "tree": "7ad6c8fd9c7b55f4b4017171dec1cb760bbd26bf",
      "parents": [
        "e70cfafe580c6f2994c4827cd8a534aabf3eb05c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\n"
    },
    {
      "commit": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
