)]}'
{
  "log": [
    {
      "commit": "98365d7663cbd82979a5700faf0050220b01084d",
      "tree": "8a4ff3e0a8afd814ed29609b26aa1c6ade2367f6",
      "parents": [
        "848c2dc93b6795e171f3dd6f64ea0be65e2762ca"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 19 20:30:52 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 19 22:42:08 2012 -0700"
      },
      "message": "Refactor for multi-display support.\n\nSplit WindowManagerImpl into two parts, the WindowManager\ninterface implementation remains where it is but the global\ncommunications with the window manager are now handled by\nthe WindowManagerGlobal class.  This change greatly simplifies\nthe challenge of having separate WindowManager instances\nfor each Context.\n\nRemoved WindowManagerImpl.getDefault().  This represents the\nbulk of this change.  Most of the usages of this method were\neither to perform global functions (now handled by WindowManagerGlobal)\nor to obtain the default display (now handled by DisplayManager).\n\nExplicitly associate each new window with a display and make\nthe Display object available to the View hierarchy.\n\nAdd stubs for some new display manager API features.\n\nStart to split apart the concepts of display id and layer stack.\nsince they operate at different layers of abstraction.\nWhile it\u0027s true that each logical display uniquely corresponds to a\nsurface flinger layer stack, it is not necessarily the case that\nthey must use the same ids.  Added Display.getLayerStack()\nand started using it in places where it was relatively easy to do.\n\nChange-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61\n"
    },
    {
      "commit": "4702a856973a553deb82f71b1d3b6c3db5dbf4ba",
      "tree": "355aaea84ebfa78d9e712c1b46fb257e55000d0f",
      "parents": [
        "79af1dd54c16cde063152922b42c96d72ae9eca8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 17 15:18:29 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 17 17:35:00 2012 -0700"
      },
      "message": "More view hierarchy, fragment debugging.\n\nAdd a View.toString() method.\n\nRename all of the View private flags to have a PFLAG prefix to\navoid going insane trying to figure out which constant goes with\nwhich flag.\n\nActivity.dump() now includes a summary of the activity\u0027s view\nhierarchy, using the View.toString() method.\n\nAll exceptions thrown by FragmentManager now perform a dump of\nthe owning activity state, where appropriate.\n\nChange-Id: I6482e397e10cb5a0612ab02ce6ed5131823437a6\n"
    },
    {
      "commit": "79af1dd54c16cde063152922b42c96d72ae9eca8",
      "tree": "142abf0037d20841712e88d65febcbbd92dd5561",
      "parents": [
        "f1b995f9d049cb5c7225b3b17f09369237a83ca2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 16 16:42:52 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 17 10:36:08 2012 -0700"
      },
      "message": "Switch public APIs to use new UserHandle class for identifying users.\n\nGets rid of \"yet another integer\" confusion.\n\nChange-Id: Id07ea7307aea7c62f0087c6663a1f1c08e2e5dee\n"
    },
    {
      "commit": "2a00329c6d55c6cd9166e01963d7410e95d80d21",
      "tree": "a33ab8060e095dd7b9a79962f7c3bf506d6008b7",
      "parents": [
        "76b858e3794f652c4af2323504787aebbbb7e89a"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Aug 14 18:25:45 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 17 09:06:10 2012 -0700"
      },
      "message": "UserHandle to UserSerialNo mapping\n\nUse AtomicFile for usermanager files.\n\nAdded a MANAGE_USERS permission that apps (signature permission) can use\nto create/query/modify/remove users.\n\nChange-Id: I5cf232232d0539e7508df8ec9b216e29c2351cd9\n"
    },
    {
      "commit": "1f3f128ad1744dfbe4108857f322a805b1dc5eb7",
      "tree": "69ddf22ac5711d9e47664e66723253deed4a0fc1",
      "parents": [
        "2ff0c048446c47f9cb995def2a6d8cc5177533a2",
        "4e31c4fffbc42b4c2b5dca6431cfeef9e078f5b4"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Aug 16 18:05:31 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 16 18:05:32 2012 -0700"
      },
      "message": "Merge \"Add javadoc for new location API\u0027s.\" into jb-mr1-dev"
    },
    {
      "commit": "4e31c4fffbc42b4c2b5dca6431cfeef9e078f5b4",
      "tree": "e1e5a1df577872de6f947623cdccfe50062cb521",
      "parents": [
        "74fa7eabda3d0c1a85e0b568e3fc4230ed4fe7a4"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Aug 13 19:35:39 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Aug 16 17:59:34 2012 -0700"
      },
      "message": "Add javadoc for new location API\u0027s.\n\nChange-Id: If15024ee88421c07ba3a174747774fc451fd002e\n"
    },
    {
      "commit": "270e3381e7053c3b15aa8f508c9df9d98032cd62",
      "tree": "357795d55b79255c8b04cc328d2a079c439d208d",
      "parents": [
        "06565b64de1953fc9534f789b2e8b8fd70758979"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 16 01:30:22 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 16 01:30:22 2012 -0700"
      },
      "message": "Add FloatMath.hypot.\n\nChange-Id: I6a5a7ea2254300614dbbf540f40e39dbec2d2900\n"
    },
    {
      "commit": "194b6e971668ea32124bdc1b0f534fcb3e06ef9f",
      "tree": "6d0155c4a2e5584f1339f3bb53cbc4b2f585d56a",
      "parents": [
        "1d64f9f4dadce40f8316c53467167d2c51169f9d",
        "9630704ed3b265f008a8f64ec60a33cf9dcd3345"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 10:26:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 15 10:26:03 2012 -0700"
      },
      "message": "Merge \"Power manager rewrite.\" into jb-mr1-dev"
    },
    {
      "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": "abac0cd16105c60fdd6c5ce37116c972dc7431bb",
      "tree": "1237c4a08c6ab9465bc2839a08557388fb9879d7",
      "parents": [
        "34743ac7d688a7ecf4daec84078fc7ec74a6dac9",
        "c7501279ee36a80fc8dc98d8eb3e6393a2217909"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 18:24:58 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 14 18:24:59 2012 -0700"
      },
      "message": "Merge \"Add PendingIntent and IntentSender APIs to get user handle.\" into jb-mr1-dev"
    },
    {
      "commit": "c7501279ee36a80fc8dc98d8eb3e6393a2217909",
      "tree": "d7ff1b5a9c659c171aff289762c498a569898461",
      "parents": [
        "863b19bc8fcfa436011781b67a237fcce3cb703a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 18:05:05 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 18:05:05 2012 -0700"
      },
      "message": "Add PendingIntent and IntentSender APIs to get user handle.\n\nAlso uid.\n\nChange-Id: I0a328d0cc2bbc17dc0a49b7b8b8d515af80f1e15\n"
    },
    {
      "commit": "34743ac7d688a7ecf4daec84078fc7ec74a6dac9",
      "tree": "4e9c15937a66c1b224f8b063298d9ed7f4c8d70c",
      "parents": [
        "07d1b289041c67d42e1ad3fc9343833d8a781998",
        "756220bd1912535840388a6743830d2e59ad4964"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 17:33:01 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 14 17:33:01 2012 -0700"
      },
      "message": "Merge \"Add API to create new contexts with custom configurations.\" into jb-mr1-dev"
    },
    {
      "commit": "756220bd1912535840388a6743830d2e59ad4964",
      "tree": "ee97c666d4bb1f015fd3e89463af09c712ce47e4",
      "parents": [
        "863b19bc8fcfa436011781b67a237fcce3cb703a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 16:45:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 16:51:38 2012 -0700"
      },
      "message": "Add API to create new contexts with custom configurations.\n\nThis allows you to, say, make a Context whose configuration\nis set to a different density than the actual density of the device.\n\nThe main API is Context.createConfigurationContext().  There is\nalso a new API on ContextThemeWrapper that allows you to apply\nan override context before its resources are retrieved, which\naddresses some feature requests from developers to be able to\ncustomize the context their app is running in.\n\nChange-Id: I88364986660088521e24b567e2fda22fb7042819\n"
    },
    {
      "commit": "578531082b8e8c8aa03868e69591b7613b0e8b8e",
      "tree": "3a3454f3792d4305158bf75b961326164e438923",
      "parents": [
        "73025eda13e19672534974efa06d1e2313bceb30"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Aug 14 11:11:49 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Aug 14 11:17:21 2012 -0700"
      },
      "message": "Revert \"Add timestamp in scan results\"\n\nTemporarily reverting this until all devices switch to using wpa_supplicant_8.\n\nThis reverts commit b31f78f93768fef269617ec788a5c6655a375f80.\n\nChange-Id: I33fcb8415288d95289dcd46fa71e950e0f2b87ec\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "472f41614044cc40e89b76f2200b57bc28c7ddae",
      "tree": "69c1d8df5c579a975b93d0b1d287649cfa0943b0",
      "parents": [
        "215ccb32c74a41569ddcb203aa802201e40bb386",
        "509e1f1a97d65ca3356794ac9a85b5c38329c2ea"
      ],
      "author": {
        "name": "Chiao Cheng",
        "email": "chiaocheng@google.com",
        "time": "Tue Aug 14 10:53:19 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 14 10:53:19 2012 -0700"
      },
      "message": "Merge \"Adding limit and offset query parameters to CallLog.\" into jb-mr1-dev"
    },
    {
      "commit": "caaeda955bd80df9d9ab310e7ab504865a2e32e9",
      "tree": "cf24d8c7011f7a70af34bcedcac3714b0bd9bc22",
      "parents": [
        "510cff946874b8408664c86f9935d6a38f770e82",
        "6a2ef12753e5fa199463e36e23c6af9df0666093"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 13 23:14:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 23:14:56 2012 -0700"
      },
      "message": "Merge \"Add a toString() method to Sensor for debugging purposes.\" into jb-mr1-dev"
    },
    {
      "commit": "4d1988699b11a9409015ef38a825d0de841a1d0f",
      "tree": "973f67fa5096dd5f6b30e3cc61586aa41fcaa59c",
      "parents": [
        "0f6b0a658a0d6e505fef7437f9341d34eb0b3fb9",
        "b31f78f93768fef269617ec788a5c6655a375f80"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Mon Aug 13 11:22:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 11:22:22 2012 -0700"
      },
      "message": "Merge \"Add timestamp in scan results\" into jb-mr1-dev"
    },
    {
      "commit": "b31f78f93768fef269617ec788a5c6655a375f80",
      "tree": "c4206fc3520ec50205046b01a48b21e9e53aaa14",
      "parents": [
        "3fb4ba616edb114b3197936eb67f481eb86b7cae"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Aug 10 16:13:09 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Mon Aug 13 11:20:14 2012 -0700"
      },
      "message": "Add timestamp in scan results\n\nPropogate 802.11 tsf details per scan result to the applications\nand open up hidden access points\n\nBUg: 2961159\nChange-Id: I05658fd0cf010c0b36193db3f79422640e8b3a6b\n"
    },
    {
      "commit": "258848d2ae04f447ff1c18023fa76b139fcc0862",
      "tree": "8736421f4007d81206d0f0ea8b32a2013508976a",
      "parents": [
        "75f0fac91bd7fa67fa76cfdd4e163b9f35be0432"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 10 17:06:33 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Aug 11 18:24:07 2012 -0700"
      },
      "message": "User Manager service to manage users and query user details\n\nMoved a bunch of methods from PackageManager to UserManager.\n\nFix launching of activities from recents to correct user.\n\nGuest creation APIs\n\nChange-Id: I0733405e6eb2829675665e225c759d6baa2b708f\n"
    },
    {
      "commit": "6a2ef12753e5fa199463e36e23c6af9df0666093",
      "tree": "d841678afaf23d70c22d8b03c02dccbdfe3cb4e3",
      "parents": [
        "75f0fac91bd7fa67fa76cfdd4e163b9f35be0432"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 10 18:19:10 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 10 20:52:22 2012 -0700"
      },
      "message": "Add a toString() method to Sensor for debugging purposes.\n\nAlso made the class final, since it cannot be instantiated\nby applications.\n\nChange-Id: I540ad56d19debd99426d37b9b63c163827b4c2fc\n"
    },
    {
      "commit": "3914e4b7d12b014f73085cd6e34b6fd69ea26226",
      "tree": "11dce06e9b6e602183cd024e709ec476e02defd5",
      "parents": [
        "6fa9ad4afcd762aea519ff61811386c23d18ddb2"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 15:25:16 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 15:27:38 2012 -0700"
      },
      "message": "Remove LocationManager#getLastKnownLocation(Criteria).\n\nThis was never a public API, so we don\u0027t need to follow\nan orderly deprecation. And it breaks a CTS test:\n\ncts/tests/tests/location/src/android/location/cts/LocationManagerTest.java:521: reference to getLastKnownLocation is ambiguous, both method getLastKnownLocation(java.lang.String) in android.location.LocationManager and method getLastKnownLocation(android.location.Criteria) in android.location.LocationManager match\n            mManager.getLastKnownLocation(null);\n                    ^\n\nChange-Id: I503267e4fa577ce4bf684239da777f11b0e511f5\n"
    },
    {
      "commit": "6fa9ad4afcd762aea519ff61811386c23d18ddb2",
      "tree": "5b027550205ada4b972f5cc3d8073819c07d9c75",
      "parents": [
        "c47f80f1ae96e3c8b6a750d68cc12dfbbca97254"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Jul 16 12:18:23 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 14:57:09 2012 -0700"
      },
      "message": "Location overhaul, major commit.\n\nThemes: Fused Location, Geofencing, LocationRequest.\n\nAPI changes\no Fused location is always returned when asking for location by Criteria.\no Fused location is never returned as a LocationProvider object, nor returned\n  as a provider String. This wouldn\u0027t make sense because the current API\n  design assumes that LocationProvider\u0027s have fixed properties (accuracy, power\n  etc).\no The fused location engine will tune itself based on the criteria passed\n  by applications.\no Deprecate LocationProvider. Apps should use fused location (via Criteria\n  class), instead of enumerating through LocationProvider objects. It is\n  also over-engineered: designed for a world with a plethora of location\n  providers that never materialized.\no The Criteria class is also over-engineered, with many methods that aren\u0027t\n  currently used, but for now we won\u0027t deprecate them since they may have\n  value in the future. It is now used to tune the fused location engine.\no Deprecate getBestProvider() and getProvider().\no Add getLastKnownLocation(Criteria), so we can return last known\n  fused locations.\no Apps with only ACCESS_COARSE_LOCATION _can_ now use the GPS, but the location\n  they receive will be fudged to a 1km radius. They can also use NETWORK\n  and fused locatoins, which are fudged in the same way if necessary.\no Totally deprecate Criteria, in favor of LocationRequest.\n  Criteria was designed to map QOS to a location provider. What we\n  really need is to map QOS to _locations_.\n  The death knell was the conflicting ACCURACY_ constants on\n  Criteria, with values 1, 2, 3, 1, 2. Yes not a typo.\no Totally deprecate LocationProvider.\no Deprecate test/mock provider support. They require a named provider,\n  which is a concept we are moving away from. We do not yet have a\n  replacement, but I think its ok to deprecate since you also\n  need to have \u0027allow mock locations\u0027 checked in developer settings.\n  They will continue to work.\no Deprecate event codes associated with provider status. The fused\n  provider is _always_ available.\no Introduce Geofence data object to provide an easier path fowards\n  for polygons etc.\n\nImplementation changes\no Fused implementation: incoming (GPS and NLP) location fixes are given\n  a weight, that exponentially decays with respect to age and accuracy.\n  The half-life of age is ~60 seconds, and the half-life of accuracy is\n  ~20 meters. The fixes are weighted and combined to output a fused\n  location.\no Move Fused Location impl into\n  frameworks/base/packages/FusedLocation\no Refactor Fused Location behind the IProvider AIDL interface. This allow us\n  to distribute newer versions of Fused Location in a new APK, at run-time.\no Introduce ServiceWatcher.java, to refactor code used for run-time upgrades of\n  Fused Location, and the NLP.\no Fused Location is by default run in the system server (but can be moved to\n  any process or pacakge, even at run-time).\no Plumb the Criteria requirements through to the Fused Location provider via\n  ILocation.sendExtraCommand(). I re-used this interface to avoid modifying the\n  ILocation interface, which would have broken run-time upgradability of the\n  NLP.\no Switch the geofence manager to using fused location.\no Clean up \u0027adb shell dumpsys location\u0027 output.\no Introduce config_locationProviderPackageNames and\n  config_overlay_locationProviderPackageNames to configure the default\n  and overlay package names for Geocoder, NLP and FLP.\no Lots of misc cleanup.\no Improve location fudging. Apply random vector then quantize.\no Hide internal POJO\u0027s from clients of com.android.location.provider.jar\n  (NLP and FLP). Introduce wrappers ProviderRequestUnbundled and\n  ProviderPropertiesUnbundled.\no Introduce ProviderProperties to collapse all the provider accuracy/\n  bearing/altitude/power plumbing (that is deprecated anyway).\no DELETE lots of code: DummyLocationProvider,\no Rename the (internal) LocationProvider to LocationProviderBase.\no Plumb pid, uid and packageName throughout\n  LocationManagerService#Receiver to support future features.\n\nTODO: The FLP and Geofencer have a lot of room to be more intelligent\nTODO: Documentation\nTODO: test test test\n\nChange-Id: Iacefd2f176ed40ce1e23b090a164792aa8819c55\n"
    },
    {
      "commit": "1670dc9abf60368cca64c66df038aef76c1f0675",
      "tree": "a203a661da9f9022244b828d28d7a6dcee7e7d98",
      "parents": [
        "b7df3a714f43ee6fe0861e8bc81c4b15082b751e",
        "5d728bb9ff8c6ad89d5a1b88b2804f954d45d763"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 08 18:29:08 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 18:29:08 2012 -0700"
      },
      "message": "Merge \"Add FloatMath.exp.\" into jb-mr1-dev"
    },
    {
      "commit": "5d728bb9ff8c6ad89d5a1b88b2804f954d45d763",
      "tree": "7f81e7e2e9c71c62b9532625e28d2d97a50826e6",
      "parents": [
        "2ab1b7d9abc1b720b63ae01abcf1df0dc780eed4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 08 01:47:10 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 08 18:23:53 2012 -0700"
      },
      "message": "Add FloatMath.exp.\n\nChange-Id: I7f215e5fd4cb942ddee56eebaef04be565ac79f3\n"
    },
    {
      "commit": "a56d9cecee8a34e0554770ac6253dd3a76b9199c",
      "tree": "3e617e7c34c9dafec25b373af7cd392154881b19",
      "parents": [
        "f007bd3cf8cacd75287781c1bb37fe4167c79cba",
        "e1d7c711df3e3a2d2f195457882aa4ddb5626167"
      ],
      "author": {
        "name": "Rich Cannings",
        "email": "richc@google.com",
        "time": "Wed Aug 08 13:50:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 13:50:56 2012 -0700"
      },
      "message": "Merge \"Revert \"Pass URLs to package verifiers\"\" into jb-mr1-dev"
    },
    {
      "commit": "e1d7c711df3e3a2d2f195457882aa4ddb5626167",
      "tree": "d27b6e508c1bdbd29028034471ee46acfe5d6cf8",
      "parents": [
        "24713907fe4632d263aea82f7a35c8fb08918a09"
      ],
      "author": {
        "name": "Rich Cannings",
        "email": "richc@google.com",
        "time": "Wed Aug 08 12:46:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 12:46:06 2012 -0700"
      },
      "message": "Revert \"Pass URLs to package verifiers\"\n\nThis reverts commit 24713907fe4632d263aea82f7a35c8fb08918a09\n\nChange-Id: Ie04ba73475b813635c4a74915c45e83250801b6b\n"
    },
    {
      "commit": "aef4af4cd122ca5713110ccc7539828ce6e2f642",
      "tree": "38b9b17092602b0bb8df543827b91c665335eba9",
      "parents": [
        "2caec6c682853ccbfe73ef5ae15c1d03ea043e8a",
        "a35379ae984ddb8fe067c4b115fffc5a21e565e1"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Aug 08 11:38:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 11:38:05 2012 -0700"
      },
      "message": "Merge \"Add MEDIA_ERROR_SERVER_DIED error constant to MediaRecorder.java class\" into jb-mr1-dev"
    },
    {
      "commit": "7d19e0242faac8017033dabb872cdf1542fa184c",
      "tree": "ab12d3c6597bc42bc7c0dca10ded546192c5c249",
      "parents": [
        "03ad783c5078c7bd487e47bb2a2af67dfbe89f1a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:12:33 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:19:22 2012 -0700"
      },
      "message": "More mult-user API work.\n\n- You can now use android:singleUser with receivers and providers.\n- New API to send ordered broadcasts as a user.\n- New Process.myUserHandle() API.\n\nFor now I am trying out \"user handle\" as the name for the numbers\nrepresenting users.\n\nChange-Id: I754c713ab172494bb4251bc7a37a17324a2e235e\n"
    },
    {
      "commit": "a35379ae984ddb8fe067c4b115fffc5a21e565e1",
      "tree": "20294aa7f4b5d09aa58a0c4c0006432c49db77d1",
      "parents": [
        "6624afe37b3be7c469a3613298a2246663a2d409"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Aug 07 18:03:36 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Aug 07 19:15:35 2012 -0700"
      },
      "message": "Add MEDIA_ERROR_SERVER_DIED error constant to MediaRecorder.java class\n\no As a result, applications can listen for death notification from MediaRecorder onError callbacks\n\nChange-Id: I49896c4ae8130bd67b52deff6eb97a22b43d3f32\n"
    },
    {
      "commit": "4e4306ab14f1f2125035ed43fbb021db8bc99c3f",
      "tree": "0a04d688799841c9cb7bfec820b7f7550734f368",
      "parents": [
        "4cb3384772cf7015a4e05789470123efb07219d9",
        "75fbb4bdfde9188081f000506845d852f31362f0"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Aug 06 13:40:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 06 13:40:44 2012 -0700"
      },
      "message": "Merge \"Include network type that caused broadcast.\" into jb-mr1-dev"
    },
    {
      "commit": "75fbb4bdfde9188081f000506845d852f31362f0",
      "tree": "567b30e20b9c8ef14ac61d072e22d0faac4236c0",
      "parents": [
        "187019c51fb1f8f79d4d5919facbc8d569ff844e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Aug 06 11:41:50 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Aug 06 11:45:01 2012 -0700"
      },
      "message": "Include network type that caused broadcast.\n\nNetwork type can be obtained through EXTRA_NETWORK_INFO, but offer\nit as first-class extra since the returned NetworkInfo is deprecated.\n\nBug: 6936247\nChange-Id: Ief59577afd2bd930f0f4c5650b413feef86bfbc3\n"
    },
    {
      "commit": "9c5c65959790bdceda384f87cf457bc7f9c2d433",
      "tree": "dc7fc1bef126901ee89e6e833bfc34a65c8cb314",
      "parents": [
        "fe33a09a3f0d53bf96f7c65bfeb271d6487012e1",
        "065b299df4159602327977dd007cb2cd6b64ab20"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Aug 05 14:55:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Aug 05 14:55:28 2012 -0700"
      },
      "message": "Merge \"Make LocalSocket Closeable.\" into jb-mr1-dev"
    },
    {
      "commit": "065b299df4159602327977dd007cb2cd6b64ab20",
      "tree": "962d115b14145cf1af13ae9de6f599a15617a9eb",
      "parents": [
        "187019c51fb1f8f79d4d5919facbc8d569ff844e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Aug 05 14:16:48 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Aug 05 14:21:07 2012 -0700"
      },
      "message": "Make LocalSocket Closeable.\n\nEnables usage of IoUtils.closeQuietly().\n\nChange-Id: I91126297c1f235ae9da09f82d8f4f22db46558eb\n"
    },
    {
      "commit": "dde331cebd87982faded6818ad5f9927ff994c96",
      "tree": "c2f9c4c62113fc93948d3988fc09cc3727c4b9ca",
      "parents": [
        "5345c310af8363948cee6a91d11add3ec51e8a9c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 03 14:01:57 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 03 17:27:29 2012 -0700"
      },
      "message": "We can now (kind-of) change screen density on the fly.\n\nPreloaded drawables now have a density associated with them, so we\ncan load the correct drawable if we are using a different density.\n\nWindow manager now formally keeps track of the density for each\nscreen, allowing it to be overridden like you can already do with\nsize, and relies on this density to drive itself internally and\nthe configurations it reports.\n\nThere are a new set of Bitmap constructors where you provide a\nDisplayMetrics so they can be constructed with the correct density.\n(This will be for when you can have different windows in the same\napp running at different densities.)\n\nActivityThread now watches for density changes, and pushes them\nto the DENSITY_DEVICE and Bitmap global density values for that\nprocess.\n\nA new am command allows you to change the density.\n"
    },
    {
      "commit": "509e1f1a97d65ca3356794ac9a85b5c38329c2ea",
      "tree": "b5942d62f57d2891eea689553461202ecef00598",
      "parents": [
        "2b8c4b076d24bc7464e9be63946e8c7bd27bb360"
      ],
      "author": {
        "name": "Chiao Cheng",
        "email": "chiaocheng@google.com",
        "time": "Wed Aug 01 15:40:55 2012 -0700"
      },
      "committer": {
        "name": "Chiao Cheng",
        "email": "chiaocheng@google.com",
        "time": "Fri Aug 03 15:19:37 2012 -0700"
      },
      "message": "Adding limit and offset query parameters to CallLog.\n\nAllows clients to paginate through call logs.\n\nChange-Id: Icdd796f990ccf25f5f5e2183412e5391f4572add\n"
    },
    {
      "commit": "bc632a28e4fba4a659baf39b9fd3d06d10cfda97",
      "tree": "7673f90d9f6a3aa9c47ea5c3a926ffa155e60f0c",
      "parents": [
        "187019c51fb1f8f79d4d5919facbc8d569ff844e"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Jul 31 08:28:12 2012 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Aug 03 08:51:17 2012 -0400"
      },
      "message": "Re-enable dreams: frameworks/base\n\nEnable feature in config. Expose Dream in public api for unbundled apps.\nUnhide package.  Add isDreaming() method to service.\n\nRe-arrange the Dream api a bit.  (use onStart as hook for subclasses).\nCoordinate properly with power manager.\n\nReplace old dock mode (don\u0027t fire old intent).\n\nChange-Id: I1318d20cc1613e5d862f2913f2fcdc9719302cf7\nBug: 6921930\n"
    },
    {
      "commit": "329465c6b2407ee086a171cac1a3581f83dbb048",
      "tree": "0d69eee745692b133e3f2c955561c0e09807ffb5",
      "parents": [
        "478923885da8fac0c1e0a8b7d85b98d1988504bc",
        "b4163a6e12ee7100c758c6d3d062ade1f2843fce"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 02 19:14:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 19:14:39 2012 -0700"
      },
      "message": "Merge \"Add APIs for interacting across users.\" into jb-mr1-dev"
    },
    {
      "commit": "b4163a6e12ee7100c758c6d3d062ade1f2843fce",
      "tree": "2948e83dec184906f2c44ee332431f219b78359d",
      "parents": [
        "b1758cf8cd007bfffb3d8adceca25f3b0c82bd77"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 02 18:31:26 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 02 19:07:57 2012 -0700"
      },
      "message": "Add APIs for interacting across users.\n\n- Expose the existing Context.sendBroadcast() as\n  Context.sendBroadcastAsUser().\n- Add new android:singleUser attribute for services.\n- Add new INTERACT_ACROSS_USERS_FULL permission for full\n  system-level access to cross-user interface (allows\n  sendBroadcastAsUser() to send to any receiver).\n- Add new INTERACT_ACROSS_USERS_FULL permission for\n  more restricted cross-user interaction: this is required\n  for android:singleUser, and allows you to use\n  sendBroadcastAsUser() but only to send to your own\n  receivers.\n\nChange-Id: I0de88f6718e9505f4de72e3f45d29c0f503b76e9\n"
    },
    {
      "commit": "478923885da8fac0c1e0a8b7d85b98d1988504bc",
      "tree": "96907f9cf010e1b9faab79aaa67ac2219c00055a",
      "parents": [
        "84aa999ed202b3f2fc6fbf5cd39d66dad1af1ed3"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Thu Aug 02 16:42:01 2012 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Thu Aug 02 17:30:32 2012 -0700"
      },
      "message": "Make AutoCompleteTextView#setText(CharSequence, boolean) public\n\nBug 6807326\n\nPublic bug http://code.google.com/p/android/issues/detail?id\u003d34690\n\nMake this available for use by applications that wish to make\nprogrammatic changes to the AutoCompleteTextView without filtering.\n\nChange-Id: I889452d3b19b378258ad9247f3d254afee1e8408\n"
    },
    {
      "commit": "24713907fe4632d263aea82f7a35c8fb08918a09",
      "tree": "fbf80caed2388c579d64b20b86b9b9f2586b1640",
      "parents": [
        "26ea2e5df58edfd14717c86854f6bb99975b6a77"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Jul 26 14:07:53 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Aug 02 11:26:47 2012 -0700"
      },
      "message": "Pass URLs to package verifiers\n\nThis change passes the originating URL and accompanied referrer to\npackage verifiers, when available.\n\nBug: 6544677\nChange-Id: If9ff6663ad7f3426b7aea2aceb1413b689788138\n"
    },
    {
      "commit": "a7ce1551a6c05d4f983e283b413cadb1ddc1026d",
      "tree": "da1d162b37009f7b9d1ff8fdb6d73c5439511b3f",
      "parents": [
        "450ec41919af532d6001ce50acc0fea0c7ced281",
        "836531b0c4985b0cf6ead247dd2f403f3ec59e37"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 01 19:05:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 01 19:05:52 2012 -0700"
      },
      "message": "Merge \"Add API to turn on HW drawing in IMEs.\" into jb-mr1-dev"
    },
    {
      "commit": "836531b0c4985b0cf6ead247dd2f403f3ec59e37",
      "tree": "afc4379b93dc5012b82bff0834a8aecdea46ee0d",
      "parents": [
        "e6184f839685affd62aa92dec5a6113e60b3b545"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 01 19:00:38 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 01 19:00:38 2012 -0700"
      },
      "message": "Add API to turn on HW drawing in IMEs.\n\nChange-Id: Ib6a8bda46223ce1153f32834daf02a820d16136e\n"
    },
    {
      "commit": "9742553603af071b5087df3e352e2ad4ac1d382f",
      "tree": "7487a8285f86e3970f5e11c4c2eeef8f84b7a8af",
      "parents": [
        "800dd9b936f75aa09ffc5cb2ed83e351bb00b5d6",
        "3caf66d2ea63c75039daf43af30d3727e5ce6b58"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Wed Aug 01 16:43:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 01 16:43:36 2012 -0700"
      },
      "message": "Merge \"Unhide the new location API\u0027s\" into jb-mr1-dev"
    },
    {
      "commit": "6a916ed0c0f5c5c5ec53f11087265eb13fc34ff1",
      "tree": "0e15c44e6fabd36942e3aad022da9ab12e9936f5",
      "parents": [
        "3a68038249c0908e7e16ca03f33a9e2edb22c639",
        "d96b585f5c40ee0d1232630ac0124d4610341577"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 01 14:34:46 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 01 14:34:47 2012 -0700"
      },
      "message": "Merge \"Add trimToSize() to public API.\" into jb-mr1-dev"
    },
    {
      "commit": "d96b585f5c40ee0d1232630ac0124d4610341577",
      "tree": "b2deb4092e90fed434f55053c03646f84a833e94",
      "parents": [
        "24d19fb6ab94cc5fd23f1c9a1d7916948a7fd571"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jul 27 17:00:24 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 01 14:20:04 2012 -0700"
      },
      "message": "Add trimToSize() to public API.\n\nBug: 6602490\nBug: http://code.google.com/p/android/issues/detail?id\u003d35349\nChange-Id: Ib3bc7fee05bb0edc375ebee1c40a1d7bd82e2a17\n"
    },
    {
      "commit": "908aecc3a63c5520d5b11da14a9383f885b7d126",
      "tree": "11806df7f127ea695474ae7ab490a95c19965508",
      "parents": [
        "b1980049855fd6c53e109b44ff012a053f9436f7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 31 16:37:34 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 01 10:54:39 2012 -0700"
      },
      "message": "Start moving away from DisplayMetrics.DENSITY_DEVICE.\n\nThis puts in most of the infrastructure needed to allow us to\nswitch between different densities at run time.  The main remaining\nuses of the global are to initialize the Bitmap object (not sure\nwhat to do about that since it doesn\u0027t have anything passed in\nthe constructor to get this information from), and being able to\nload drawables if we need a different density than what was preloaded\nby zygote.\n\nChange-Id: Ifdbfd6b7a5c59e6aa22e63b95b78d96af3d96848\n"
    },
    {
      "commit": "b1980049855fd6c53e109b44ff012a053f9436f7",
      "tree": "487331c65d26e59c37c045508ad367f77b0de67d",
      "parents": [
        "49771c3beabaa13eb49c3c4288061ed29ab1d31c",
        "998483319195f903529363ebbad0e694acd0a21b"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Aug 01 10:33:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 01 10:33:28 2012 -0700"
      },
      "message": "Merge \"Added a key to retrieve the rotation angle in MediaMetadataRetriever.java class\" into jb-mr1-dev"
    },
    {
      "commit": "39606a007a5b1309dd000234f2b8cf156c49fd0f",
      "tree": "bc9e19a6ad821170705cc26f7f529ae8b7b8bcc1",
      "parents": [
        "d913cf18595b8288125171eec86e42a1d1b4d93e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 31 17:54:35 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 31 17:54:52 2012 -0700"
      },
      "message": "Make AtomicFile a public API.  It\u0027s about time!\n\nChange-Id: Ib34e294747405b7ab709cb0bbb2d9a0cc80ce86a\n"
    },
    {
      "commit": "998483319195f903529363ebbad0e694acd0a21b",
      "tree": "cf020efaceee43260f870c88212079a72078dad1",
      "parents": [
        "3185869c65a1a73b28776826809936a0f87546e0"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 31 12:19:38 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 31 14:50:49 2012 -0700"
      },
      "message": "Added a key to retrieve the rotation angle in MediaMetadataRetriever.java class\n\no related-to-bug: 6872687\n\nChange-Id: I94569bb8357c39e8309974ede8284b33a996866c\n"
    },
    {
      "commit": "d913cf18595b8288125171eec86e42a1d1b4d93e",
      "tree": "d2b2aa40d54903280ab06b51fd55808e99969219",
      "parents": [
        "f15c2321dd4e592722673430710915dac5150eea",
        "435cdb4604d9112c2fa8b2bb8d0ec49468bfdcf2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 30 18:34:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 30 18:34:36 2012 -0700"
      },
      "message": "Merge \"New API level 17 for JB MR1.\" into jb-mr1-dev"
    },
    {
      "commit": "435cdb4604d9112c2fa8b2bb8d0ec49468bfdcf2",
      "tree": "801c07f083c8e069b8a0aac0d3ca272253491d13",
      "parents": [
        "619e4dca8e9dfe4daa0754b0568a7590788cd50e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 30 17:36:43 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 30 17:37:04 2012 -0700"
      },
      "message": "New API level 17 for JB MR1.\n\nChange-Id: If71ce3b521fe17578feb5c2a2f7fd65696720554\n"
    },
    {
      "commit": "7267babae3695408daa96da1f5951c8f22e823a7",
      "tree": "5bc194bb63bf67a780059a202caeac5818c5d622",
      "parents": [
        "e72a6e977b8436a993c427cf489f2ae05fdeface",
        "a0ba79473b9067e315155718545103bb4f361873"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 30 13:37:08 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 30 13:37:08 2012 -0700"
      },
      "message": "Merge \"Enabled application using VideoView to get information events from MediaPlayer\" into jb-mr1-dev"
    },
    {
      "commit": "155fc70252fd9ccee1f05da4e6966a99ec86d499",
      "tree": "37348a45a672ef8e97b8e73d9795764fa650567d",
      "parents": [
        "94838913abf6363532cd32b9c795917d808228cc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 12:12:15 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 18:14:54 2012 -0700"
      },
      "message": "Flatten power manager wake lock constants.\n\nWe only support a few basic kinds of wake locks.  Rather than\npretend that we could support other weird combinations of features,\njust get rid of the feature bits.\n\nDeprecated other wake lock types.  We really want to encourage\ndevelopers to use FLAG_KEEP_SCREEN_ON instead of managing\ntheir own wake locks, even though its behavior is not\nexactly equivalent.\n\nChange-Id: Idfeb0bc6efff0ef2736e47f72a06e69e5a16996e\n"
    },
    {
      "commit": "a0ba79473b9067e315155718545103bb4f361873",
      "tree": "8d96cb7cd2ef49754c0fd5be39e642c9e925faa3",
      "parents": [
        "c3e4f0a72baff805b434fd6b24cb29b3dc68e98d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 27 17:30:38 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 27 18:05:11 2012 -0700"
      },
      "message": "Enabled application using VideoView to get information events from MediaPlayer\n\no related-to-bug: 6851811\n\nChange-Id: I78a73a33b6ddfaea76f2ba13b6990c153fb696c6\n"
    },
    {
      "commit": "f2c278551c7818e16577c70a3dd4cba459162589",
      "tree": "b6122011c38f1c1c1b8f7d39d9d8deb11361d3da",
      "parents": [
        "39df578acddb739d7608e458533904bf5814c0da"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Jul 27 14:45:44 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Jul 27 14:45:44 2012 -0700"
      },
      "message": "Fix the build\n\n- update current.txt\n\nChange-Id: I98d6cfbe71564dcded8d8d757dd183ba678d4184\n"
    },
    {
      "commit": "a4c1030870d8c91b6d871922c3e6962323700f25",
      "tree": "d4d0e805201527352d2b53e0d9b32583f3fa54ac",
      "parents": [
        "2b8c4b076d24bc7464e9be63946e8c7bd27bb360"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Jul 26 12:27:56 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Jul 27 13:16:42 2012 -0700"
      },
      "message": "Add removeRule() to RelativeLayout LayoutParams\n\n- add this helper API as there are already several example of\ndevelopers doing it \"by hand\"\n\nChange-Id: Icd15edfd75eb47de1f90f847b263b4d513c13810\n"
    },
    {
      "commit": "3caf66d2ea63c75039daf43af30d3727e5ce6b58",
      "tree": "fd52035d25a9672f32b6a69209f56f38af071e36",
      "parents": [
        "10d940d99ff3814cbf4a1b1759a9377b88752f5f"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Wed Jul 25 17:06:54 2012 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Jul 26 11:48:12 2012 -0700"
      },
      "message": "Unhide the new location API\u0027s\n\nChange-Id: I41cc89998b8bd1e6686ea30475ab8905a133e312\n"
    },
    {
      "commit": "fa25bf5382467b1018bd9af7f1cb30a23d7d59f7",
      "tree": "2b65e9c19319112d1873db55a02303a43d68547a",
      "parents": [
        "bbcb123d4923b0c2f36af7b2ade82f5d7832357d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 23 19:26:30 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 25 18:56:16 2012 -0700"
      },
      "message": "Add display manager skeleton.\n\nThe purpose of this change is to remove direct reliance on\nSurfaceFlinger for describing the size and characteristics of\ndisplays.\n\nThis patch also starts to make a distinction between logical displays\nand physical display devices.  Currently, the window manager owns\nthe concept of a logical display whereas the new display\nmanager owns the concept of a physical display device.\n\nChange-Id: I7e0761f83f033be6c06fd1041280c21500bcabc0\n"
    },
    {
      "commit": "b8a3942527cceafa172f4d8b7ff4d98f17c2d5b7",
      "tree": "238e7c9965c4873ff4c3c25ad0e5303d7bdf7581",
      "parents": [
        "4725fbe6df7d33d91636c12dcd9fa0a61409787e",
        "f966ed949c4aa14de5b070cc36039493f98848f1"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Jul 24 16:43:20 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 24 17:21:56 2012 -0700"
      },
      "message": "Merge \"Introduce listPreferredItemPaddingStart/listPreferredItemPaddingEnd\""
    },
    {
      "commit": "f966ed949c4aa14de5b070cc36039493f98848f1",
      "tree": "c5a9b6490cd9811f39681a27db9fdd70a9c3e37f",
      "parents": [
        "85d28a00043e5985b11f517031d7b2317ac19e10"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Jul 24 13:48:48 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Jul 24 15:56:24 2012 -0700"
      },
      "message": "Introduce listPreferredItemPaddingStart/listPreferredItemPaddingEnd\n\n- see bug #5429822 UI should be mirrored for RTL locales (Arabic, Hebrew, farsi)\n\nChange-Id: I7376b3c350ae9ce5034f3aac7105f61963c30c2d\n"
    },
    {
      "commit": "f80afd795eb9da17c6cb9e44f77776b69ff70575",
      "tree": "ac63da26c1c45d2b212689a5dea6da8b3084db76",
      "parents": [
        "85d28a00043e5985b11f517031d7b2317ac19e10",
        "15a89e6b48e9cd0112efcfd903843c5912e26567"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 24 12:29:12 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 24 12:29:13 2012 -0700"
      },
      "message": "Merge \"Added MEDIA_INFO_VIDEO_RENDERING_START as an informational event\""
    },
    {
      "commit": "b6a45cb92892f9080b7a2f131b4386fd1167efbb",
      "tree": "3e979bf66129f24eba62a1044dda3c0e3fb77e5b",
      "parents": [
        "9ba15a93615bbd8a9a68d7097abc1d92a9af3853",
        "f443f98e7f41badd8f5d6f7bf7d26432e79a88ed"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Jul 24 11:05:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 24 11:05:48 2012 -0700"
      },
      "message": "Merge \"Make RelativeLayout aware of layout direction\""
    },
    {
      "commit": "f443f98e7f41badd8f5d6f7bf7d26432e79a88ed",
      "tree": "076dba7ce6ce21638c9e57babf296b02b0718df7",
      "parents": [
        "9a1aa4c4a42f0d7674c762fa70d23ffdd86b1054"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Jul 13 20:24:03 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Mon Jul 23 16:36:41 2012 -0700"
      },
      "message": "Make RelativeLayout aware of layout direction\n\n- see bug #5429822 UI should be mirrored for RTL locales (Arabic, Hebrew, farsi)\n\nChange-Id: Ica92841fa0c13c25fcf89c4700b0771eec4fd6d7\n"
    },
    {
      "commit": "16a4003b11bd8fcc2b4c065f85de1464b1e21fe7",
      "tree": "a1e63eb95ca7f5b4c49e6fd60c32c379f25902fa",
      "parents": [
        "cf56a0c1ea8dcffd1ba4c7f28f99e7f8d3eb8537",
        "dd06946252be852aa53eb6142a119b0fccc83cd1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 23 16:25:33 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 23 16:25:33 2012 -0700"
      },
      "message": "Merge \"updated gles20 bindings, fixes broken methods\""
    },
    {
      "commit": "15a89e6b48e9cd0112efcfd903843c5912e26567",
      "tree": "a3f81dc9714182d69ffd5bacfef5e88f0bf3510f",
      "parents": [
        "219dfa4d392851c1ffd7147cb78d4236658a79d8"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 23 15:00:37 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 23 15:47:27 2012 -0700"
      },
      "message": "Added MEDIA_INFO_VIDEO_RENDERING_START as an informational event\n\no MEDIA_INFO_VIDEO_RENDERING_START indicates that the player just pushed the very first video frame\n  of a video source for rendering.\n\nChange-Id: I32dad93990f5d48b70fc79d841ca3ce3b1af4027\nrelated-to-bug: 6851811\n"
    },
    {
      "commit": "bb877ad4e5563f0b892518c1eba18ca18981ea3a",
      "tree": "7da11ba318199cf5648529f3f35ef22c00d07697",
      "parents": [
        "00755fed35e4a91291c42a8a47bed8b957e9f8e1",
        "989709a973448980f36dacd587b0a58f89ffa11e"
      ],
      "author": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Fri Jul 20 15:19:24 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 15:19:24 2012 -0700"
      },
      "message": "Merge \"Simple MVC based binding mechanism for android controls.\""
    },
    {
      "commit": "989709a973448980f36dacd587b0a58f89ffa11e",
      "tree": "0ba72a8bc29f6f8526f614750457aa4972a92e06",
      "parents": [
        "749e452487e834958d1bec81df25266b42f3a5dc"
      ],
      "author": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Fri Jun 22 16:09:04 2012 -0700"
      },
      "committer": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Fri Jul 20 15:14:45 2012 -0700"
      },
      "message": "Simple MVC based binding mechanism for android controls.\n\nChange-Id: I80fe18e0e15f8a840d558de9863650505bd5fb00\n"
    },
    {
      "commit": "0e5b160418dad25b9e7125d2533cc8770b1cd9c6",
      "tree": "f046c68c79a727fc58e5f27c48aa75caa361e865",
      "parents": [
        "495b56cfdfbee93d8faa79f246ff250a6ac3d10c"
      ],
      "author": {
        "name": "Teng-Hui Zhu",
        "email": "ztenghui@google.com",
        "time": "Tue Jul 17 17:19:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 13:33:52 2012 -0700"
      },
      "message": "add a webview API to support media play without user gesture\n\nbug:6806306\n\nwebkit change: https://android-git.corp.google.com/g/#/c/208568/\nChange-Id: Ic70e5d3f152a7e8d8fdfa1d6f89f96c8cd3c7075\n"
    },
    {
      "commit": "2eeeec248a38ff33999c83f4b8d5bab7d50e79d2",
      "tree": "2886aaefdd09bbafa7853dbbbb29aa866846045f",
      "parents": [
        "b8acd060d409f0e81ab3510b429cb86d3f34adb8"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Wed Jul 18 13:13:37 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Jul 20 10:07:07 2012 -0700"
      },
      "message": "Improve Location object.\n\nAdd getElapsedRealtimeNano():\n\nCurrently Location just has getTime() and setTime() based on UTC time.\nThis is entirely unreliable since it is not guaranteed monotonic.\nThere is a lot of code that compares fix age based on deltas -\nand it is all broken in the case of a system clock change. System\nclock can change when switching cellular networks (and in some\ncases when switching towers).\n\nDocument the meaning of getAccuracy():\nIt is the horizontal, 95% confidence radius.\n\nMake some fields mandatory if they are reported by a LocationProvider:\n\nAll Locations returned by a LocationProvider must include at the\nminimum a lat, long, timestamps, and accuracy. This is necessary\nto perform fused location. There are no public API\u0027s for applications\nto feed locations into a location provider so this should not cause\nany breakage.\n\nIf a LocationProvider does not fill in enough fields on a Location\nobject then it is dropped, and logged.\n\nBug: 4305998\nChange-Id: I7df77125d8a64e174d7bc8c2708661b4f33461ea\n"
    },
    {
      "commit": "95f1158908d990bbf954d7cc78f3f214a6c84f1f",
      "tree": "bc22f308a77e002369779e3d403660917c2c9918",
      "parents": [
        "824582dce1b89bfa6ba9662e122fa7b6975f0583"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Jul 19 10:22:18 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Jul 20 09:51:09 2012 -0700"
      },
      "message": "Introduce SystemClock#elapsedRealtimeNano.\n\nChange-Id: I47e1b14d45c5321f959d46e1805f86aafd72f5d4\n"
    },
    {
      "commit": "dd06946252be852aa53eb6142a119b0fccc83cd1",
      "tree": "de1b0c3ae2dda9d04bd5b451aa8522f146aff15b",
      "parents": [
        "60620a23996d7e6de72834bebde3b3c57981e219"
      ],
      "author": {
        "name": "Thomas Tafertshofer",
        "email": "tafertth@google.com",
        "time": "Thu Jul 19 16:55:37 2012 -0700"
      },
      "committer": {
        "name": "Thomas Tafertshofer",
        "email": "tafertth@google.com",
        "time": "Thu Jul 19 17:04:47 2012 -0700"
      },
      "message": "updated gles20 bindings, fixes broken methods\n\nthis adds correct versions of the broken GLES20 methods\nglGetShaderSource, glGetActiveAttrib and glGetActiveUniform.\nthe old functions are still there and need to be @hide later.\n\nBug: 6006380\nChange-Id: I8127a77c4b89aa8a9a54bea88774077535e2139d\n"
    },
    {
      "commit": "73664e500ad27e0ea9636cb2469b01976a5018d6",
      "tree": "749019ce9bccb163d1ad1f02414d61a9477e120f",
      "parents": [
        "04299385c681140239b0dc31d9780d087d2b4d7c",
        "9b18b515909354d7b48c8ebc33ec38e2c6bbdf37"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 18 18:30:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 18 18:30:04 2012 -0700"
      },
      "message": "Merge \"EGL 1.4 API without @hide\""
    },
    {
      "commit": "a9108a217e039492855fbeacda2ab6c4f4a3f70a",
      "tree": "c0b172ccea8118254662f6ea2735d02248494b16",
      "parents": [
        "accf721ebdf4d3da53e8ae09572650775bfe10f8"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Jul 18 11:18:09 2012 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Jul 18 14:27:00 2012 -0700"
      },
      "message": "Add View#generateViewId; make RadioGroup use it\n\nBug 6448164\n\ngenerateViewId provides a way for applications to generate opaque ID\nvalues suitable for use with View#setId that will not collide with\nvalues generated by aapt for R.id.\n\nFix a bug where RadioGroup assumes object hash codes will always be\npositive.\n\nChange-Id: I3e2870cd672d6061bb465128f428c81aeef0c44b\n"
    },
    {
      "commit": "0f42037eb7b5118015c2caca635538324ccf0ccf",
      "tree": "46a7ba36216a2cb617541ec68f18b413419e148f",
      "parents": [
        "919a4c6264b733585152ce1dc6f868c1093d368b"
      ],
      "author": {
        "name": "fredc",
        "email": "fredc@broadcom.com",
        "time": "Thu Apr 12 00:02:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 16 21:20:54 2012 -0700"
      },
      "message": "Non persistent adapter service\n\nChange-Id: Ib13d5c77416e58161df0e04d7a15ec0dddbde8b5\n\nConflicts:\n\n\tcore/java/android/bluetooth/BluetoothInputDevice.java\n\nConflicts:\n\n\tcore/java/com/android/internal/app/ShutdownThread.java\n\tservices/java/com/android/server/SystemServer.java\n\nConflicts:\n\n\tservices/java/com/android/server/SystemServer.java\n\tservices/java/com/android/server/pm/ShutdownThread.java\n"
    },
    {
      "commit": "3cc321ecf505d87850740ad3c63849e6793a8ef6",
      "tree": "a0bb81da762033fc65a5837de1c27193a4b64c28",
      "parents": [
        "ef4e817ad642303509da1cb28ce5a265e1ac3e17"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 16:04:23 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 16:17:25 2012 -0700"
      },
      "message": "Remove dithering support.\n\nThe dithering flag is no longer implemented in Surface Flinger\nso this is all dead code.\n\nChange-Id: I74c0e452923207e5b7cfe0eeca9457e5cb990947\n"
    },
    {
      "commit": "9b18b515909354d7b48c8ebc33ec38e2c6bbdf37",
      "tree": "deba4a28ee5731ba310b795c4f93db1d66017f52",
      "parents": [
        "f16336790bca9d3e946553f2e5a16e14bb9dbc3e"
      ],
      "author": {
        "name": "Thomas Tafertshofer",
        "email": "tafertth@google.com",
        "time": "Thu Jul 12 15:58:07 2012 -0700"
      },
      "committer": {
        "name": "Thomas Tafertshofer",
        "email": "tafertth@google.com",
        "time": "Fri Jul 13 17:44:00 2012 -0700"
      },
      "message": "EGL 1.4 API without @hide\n\nChange-Id: If03d23082b011aaba41594712601495dcbd70f6a\n"
    },
    {
      "commit": "3849f93b3c2b29ca3873b602897dccac039a0b98",
      "tree": "979d073f4728c66cd2d2413664d045f93e2bcc13",
      "parents": [
        "9c469ca0ff92ffa533faed9416d725be2204ed55"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 09 13:52:40 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 09 13:52:40 2012 -0700"
      },
      "message": "Add Bitmap.isPremultiplied()\n\nThis change also adds extra information in the documentation about\npremultiplied values.\n\nChange-Id: I51aacb8696340d23354ebf6d7284605d1a790b69\n"
    },
    {
      "commit": "da7ba8ff45f66f63c3c7a1a0fc141482ffe287b0",
      "tree": "07465ad455db50752c3319d0a7e5d8c0fc367fee",
      "parents": [
        "86ca5d35139db0eccc2babcca5bf835f8c2b019f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 03 18:36:01 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 03 18:36:01 2012 -0700"
      },
      "message": "Fix the build\n\nChange-Id: Iee3be26dd0167ddd80dd11c4bcbf21f6684d2a68\n"
    },
    {
      "commit": "e6c2d62efb65fa7b4681d29ad0710df56bf9002b",
      "tree": "45734f823b115abe994c84946c691e6c942e14a7",
      "parents": [
        "2ccb1126338fc61429f1578fc6517c4a6db116d8",
        "9906e784faca2cc8388a04fdc544722ea93d51be"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 25 18:17:15 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 25 18:17:15 2012 -0700"
      },
      "message": "am 9906e784: am 17990395: Merge \"Fix issue #6717667: expanded notification actions don\\\u0027t work on the lock screen\" into jb-dev\n\n* commit \u00279906e784faca2cc8388a04fdc544722ea93d51be\u0027:\n  Fix issue #6717667: expanded notification actions don\u0027t work on the lock screen\n"
    },
    {
      "commit": "9906e784faca2cc8388a04fdc544722ea93d51be",
      "tree": "ed3523a5e647141e9c9f63fe1b7aa24882437efb",
      "parents": [
        "b4215267f342759c8bdad02ed124dae4bb6d6833",
        "17990395bc62f8ce1bae4f1880899f231a8e613b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 25 17:37:15 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 25 17:37:15 2012 -0700"
      },
      "message": "am 17990395: Merge \"Fix issue #6717667: expanded notification actions don\\\u0027t work on the lock screen\" into jb-dev\n\n* commit \u002717990395bc62f8ce1bae4f1880899f231a8e613b\u0027:\n  Fix issue #6717667: expanded notification actions don\u0027t work on the lock screen\n"
    },
    {
      "commit": "1927ae8a56a010919a7535231fa0f7db70f7e152",
      "tree": "ef0c02adbd41100faf4a18d553ad7206584991d2",
      "parents": [
        "e9b4b3e94d396d176338c62f8c9f4c183b340f9b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 22 15:21:36 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 25 14:28:48 2012 -0700"
      },
      "message": "Fix issue #6717667: expanded notification actions don\u0027t work on the lock screen\n\nFLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS was a mistake.\n\nInstead, and the infrastructure for the status bar to take care\nof closing and hiding things itself when you press these buttons,\njust like it does for the main Intent of the notification.\n\nBug: 6717667\nChange-Id: I1b22186e0cedc05f46a1a3ec78053a72afaf61b1\n"
    },
    {
      "commit": "41e6e0c49f51e5bafca4912d407202f572d4e208",
      "tree": "dc2bf7f938a2fa05c692da08b7c59ed3eca86eb5",
      "parents": [
        "4786626b0fe62181f35afcc49f0d0aa10dc715e2",
        "c34188a95405526416325604386af4f48ba20918"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jun 23 07:13:25 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jun 23 07:13:25 2012 -0700"
      },
      "message": "am c34188a9: resolved conflicts for merge of f8f76d52 to jb-dev-plus-aosp\n\n* commit \u0027c34188a95405526416325604386af4f48ba20918\u0027:\n  Add the possibility to modify the View focus rect\n"
    },
    {
      "commit": "c34188a95405526416325604386af4f48ba20918",
      "tree": "bb7f0e1b93a01142b6ec59f9572f5ccb8d11d3b7",
      "parents": [
        "0e61a7268460392b706904c032cb6ae7f931692f",
        "f8f76d52a7f7cf9ceb57670b5cf62052ddc8662d"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jun 23 07:08:59 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jun 23 07:08:59 2012 -0700"
      },
      "message": "resolved conflicts for merge of f8f76d52 to jb-dev-plus-aosp\n\nChange-Id: I83beeb45320de2c3fc3a00c2f5cd86a17ac1dc9f\n"
    },
    {
      "commit": "f8f76d52a7f7cf9ceb57670b5cf62052ddc8662d",
      "tree": "0e27eaef695e849684b3e364edd502a82b145f7f",
      "parents": [
        "8c71784e9e83e914135e996591aa7903edd2fd96",
        "defdb1e49172fe7c9737347489dbb77361af955a"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jun 23 05:52:52 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jun 23 05:52:53 2012 -0700"
      },
      "message": "Merge \"Add the possibility to modify the View focus rect\""
    },
    {
      "commit": "dc6f8b2b8ce5024c2009d96c1bf8d908c309342b",
      "tree": "272a21bce8acf3efbf530009838e16fbf8292604",
      "parents": [
        "b06e79d737ffd8ceb6f2865ef0936ce680102712",
        "b33eb4e32a25e28677524c68be02ca7034351bf0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 22 15:34:33 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 22 15:34:33 2012 -0700"
      },
      "message": "Merge \"Deprecate DatabaseUtils.InsertHelper.\""
    },
    {
      "commit": "b33eb4e32a25e28677524c68be02ca7034351bf0",
      "tree": "afcf75f89dfdce4e7f3cdcd7e332c1484a99c29c",
      "parents": [
        "880c5f5aea737aee885bc4abee76c11db565f9d7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 22 13:37:57 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 22 15:24:26 2012 -0700"
      },
      "message": "Deprecate DatabaseUtils.InsertHelper.\n\nThis class does not offer any advantages over SQLiteStatement\nand just makes code more complex and error-prone.\n\nDocumented that the class is not thread-safe.\n\nRemoved a potential deadlock in insert() and replace() caused\nby the insertInternal() method being synchronized in the case\nwhere the class was being used concurrently (woe to you!).\n\nThread A would start a transaction.\nThread B would call insertInternal() and acquire the object monitor,\nbut block because it could not obtain the db connection because\nthread A is holding onto it.\nThread A would call insertInternal() and block because Thread B\nwas holding the object monitor.\nDeadlock.\n\nChanged this code to use a transaction instead of a lock,\nwhich provides the necessary mutual exclusion guarantee without\nthe potential for a deadlock.  Even so, the class really isn\u0027t\nthread safe.\n\nBug: 6625094\nChange-Id: I51d9a15567a6f2bad6f25e550b48f8f6ffcab2a7\n"
    },
    {
      "commit": "bae2fe870af85ced407525735b2849ea0b2a1673",
      "tree": "ee8b012ae14ed9479dfd1baa0596b10d4e5db2c8",
      "parents": [
        "49d03616abef47f08347a58f60b55174a52a469e",
        "0a43f67ef3c2551ae051da7bf2e856ddc051298d"
      ],
      "author": {
        "name": "Chris Wren",
        "email": "cwren@android.com",
        "time": "Thu Jun 21 16:46:14 2012 -0400"
      },
      "committer": {
        "name": "Chris Wren",
        "email": "cwren@android.com",
        "time": "Thu Jun 21 16:46:14 2012 -0400"
      },
      "message": "resolved conflicts for merge of 0a43f67e to master\n\nChange-Id: I072b756bc501c7669593eff012b120905a2fd962\n"
    },
    {
      "commit": "0a43f67ef3c2551ae051da7bf2e856ddc051298d",
      "tree": "5afcc1c039e979de8b0083d7583c2cc6fbec819c",
      "parents": [
        "16613476c80f20736ef6bd3d217ab56aa57b03c9",
        "790024bfe6dd2765dd5e552053797459aab72da1"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Jun 21 11:52:34 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 21 11:52:34 2012 -0700"
      },
      "message": "am 790024bf: Merge \"Unhide new methods on RemoteViews and Notification.\" into jb-dev\n\n* commit \u0027790024bfe6dd2765dd5e552053797459aab72da1\u0027:\n  Unhide new methods on RemoteViews and Notification.\n"
    },
    {
      "commit": "790024bfe6dd2765dd5e552053797459aab72da1",
      "tree": "efb99877caf2206db79035f18543cb27f97bedf3",
      "parents": [
        "0d6f4c06df0b0e35125f088ca028c7226b274dc4",
        "064f9907c98283e76ed03fa65484fc6face22f92"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Jun 21 06:04:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 21 06:04:43 2012 -0700"
      },
      "message": "Merge \"Unhide new methods on RemoteViews and Notification.\" into jb-dev"
    },
    {
      "commit": "a08e6881c58c56aba2ac1f6e02db1529e10f9e6e",
      "tree": "0f65fcff7ce984c832b8b821d59f1a96ea1ad3e2",
      "parents": [
        "3650ce0479b35e2bfdc549cd0c49f041ddbffc56",
        "ed044cda8f6a7600923eecdec682c449f86e0429"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Jun 20 22:45:09 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 20 22:45:09 2012 -0700"
      },
      "message": "am ed044cda: am 09829b71: Merge \"Expand volume APIs for MediaRouter\" into jb-dev\n\n* commit \u0027ed044cda8f6a7600923eecdec682c449f86e0429\u0027:\n  Expand volume APIs for MediaRouter\n"
    },
    {
      "commit": "ed044cda8f6a7600923eecdec682c449f86e0429",
      "tree": "4490dcec1420a23271655221ec11d2c17e174989",
      "parents": [
        "071ed3348739cb3f2bb9ef169067440c8c61b881",
        "09829b71de3a84cb9d1bc0d8aad78dd16daadddf"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Jun 20 22:35:44 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 20 22:35:44 2012 -0700"
      },
      "message": "am 09829b71: Merge \"Expand volume APIs for MediaRouter\" into jb-dev\n\n* commit \u002709829b71de3a84cb9d1bc0d8aad78dd16daadddf\u0027:\n  Expand volume APIs for MediaRouter\n"
    },
    {
      "commit": "8e37a85bf3dc39519942698dc90a3951306b934b",
      "tree": "eb90d07708b259a54106b448edbb5b5d2c78b5b0",
      "parents": [
        "bd6b1820d931ef11fc7fc5b8571a8265c1ed4994"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Jun 20 15:56:39 2012 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Jun 20 22:19:29 2012 -0700"
      },
      "message": "Expand volume APIs for MediaRouter\n\nAllow applications to set a requested volume level on RouteInfo\nobjects. If requested for a user route, the app-supplied callback will\nbe invoked to perform actual volume adjustment.\n\nChange-Id: I856990a0da7292492aa15e6562dbc3d055b848a0\n"
    },
    {
      "commit": "064f9907c98283e76ed03fa65484fc6face22f92",
      "tree": "cc1eaae4b7d69542aef005612b5ef569cc12161e",
      "parents": [
        "7a1a406b24c235ce59c13126d20cfb101c4e2777"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Jun 20 23:43:41 2012 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Jun 21 00:15:01 2012 -0400"
      },
      "message": "Unhide new methods on RemoteViews and Notification.\n\nChange-Id: I0cbc270d9d7e9e728482c3b10650a32589636c9d\n"
    },
    {
      "commit": "ecab2aab19263826447cfed1586232d2e8672139",
      "tree": "be4feb28ea217e80333cf39b2ed859152befebbb",
      "parents": [
        "63258b253ccce8add3fd424c5a05998cdf179c2e",
        "e44440f40c6b005dce2eba1b37b3cabe97133152"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jun 20 16:46:55 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 20 16:46:55 2012 -0700"
      },
      "message": "am e44440f4: am bd6b1820: Merge \"Unhide new API in android.media.MediaRouter for remote playback\" into jb-dev\n\n* commit \u0027e44440f40c6b005dce2eba1b37b3cabe97133152\u0027:\n  Unhide new API in android.media.MediaRouter for remote playback\n"
    },
    {
      "commit": "e44440f40c6b005dce2eba1b37b3cabe97133152",
      "tree": "40413b52fb2c7607129f9cc95c65f782afa9dcd2",
      "parents": [
        "7fe75d9759544d9b2eccac19aacb8c3992dfcc02",
        "bd6b1820d931ef11fc7fc5b8571a8265c1ed4994"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jun 20 16:43:55 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 20 16:43:55 2012 -0700"
      },
      "message": "am bd6b1820: Merge \"Unhide new API in android.media.MediaRouter for remote playback\" into jb-dev\n\n* commit \u0027bd6b1820d931ef11fc7fc5b8571a8265c1ed4994\u0027:\n  Unhide new API in android.media.MediaRouter for remote playback\n"
    },
    {
      "commit": "2cd5d253786b115470adc04a3609358f5eb7eb0a",
      "tree": "c594fece1b63ea1a9f77c1639c528aed10bf9a0a",
      "parents": [
        "f98de1e8dd6dcbd191921b4aa07a1d41b0b9db91"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jun 20 14:34:05 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jun 20 14:36:23 2012 -0700"
      },
      "message": "Unhide new API in android.media.MediaRouter for remote playback\n\nExpose new functionality for handling remote volume in:\n android.media.MediaRouter.RouteInfo\n android.media.MediaRouter.UserRouteInfo\n android.media.MediaRouter.VolumeCallback\n\nChange-Id: I8fd9c92be606364599e65939f318e11c2860bab9\n"
    },
    {
      "commit": "00130f13f0af79dfd9141239bbc034b64e0af359",
      "tree": "4d0aac1acab624ee4fdc872906100a36809d1396",
      "parents": [
        "b10345898c060f7a9b451ec46d7124a6e087ec06"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Tue Jun 19 20:06:25 2012 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Tue Jun 19 20:06:53 2012 -0700"
      },
      "message": "Fix build; un-pin attribute destined for API 17 or later to prevent\nfurther automerge antics.\n\nChange-Id: I547dc0abd8db09e8aefc89123e4fb7f73eea712b\n"
    },
    {
      "commit": "b10345898c060f7a9b451ec46d7124a6e087ec06",
      "tree": "498d6f81eeacf6f6a5d36a4183082111eca18ef7",
      "parents": [
        "e6d2016be01273cb58ea58424596f3aa2b302a74",
        "da8288037cff76367c3088adaa174ddb27bf55c2"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Tue Jun 19 19:22:44 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 19:22:44 2012 -0700"
      },
      "message": "am da828803: am 2dde147b: Merge \"Add an XML attribute for controlling which route types a MediaRouteButton in a layout will alter.\" into jb-dev\n\n* commit \u0027da8288037cff76367c3088adaa174ddb27bf55c2\u0027:\n  Add an XML attribute for controlling which route types a MediaRouteButton in a layout will alter.\n"
    },
    {
      "commit": "da8288037cff76367c3088adaa174ddb27bf55c2",
      "tree": "596674eefde838f76f330b844214b26914c3554d",
      "parents": [
        "b56fe8abf6735337b65e050f44e1baf2f3f813ed",
        "2dde147b28684fc32f03ad748af8eb87d5408c7c"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Tue Jun 19 19:20:05 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 19:20:05 2012 -0700"
      },
      "message": "am 2dde147b: Merge \"Add an XML attribute for controlling which route types a MediaRouteButton in a layout will alter.\" into jb-dev\n\n* commit \u00272dde147b28684fc32f03ad748af8eb87d5408c7c\u0027:\n  Add an XML attribute for controlling which route types a MediaRouteButton in a layout will alter.\n"
    },
    {
      "commit": "1244cdaedd5bb4518fc75c9a25b834190ea31877",
      "tree": "0a84ed4ddf5d3e9627415c6ffe57022041d1ddd6",
      "parents": [
        "880c5f5aea737aee885bc4abee76c11db565f9d7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 19 16:44:46 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 19 18:42:05 2012 -0700"
      },
      "message": "Clean up PowerManager API.\n\nMostly just moved the code around and improved the docs.\n\nFixed a minor inefficiency in WakeLock.setWorkSource() where\nwe would tell the power manager that the work source was changed\neven when the old work source and new work source were both null.\n\nFixed a bug in WakeLock.setWorkSource() where we would not\nnotify the power manager that the work source was changed if\nthere was no work source previously specified.\n\nAdded synchronized to WakeLock.setReferenceCounted.\n\nAdded a checked in WakeLock.acquireLocked() and WakeLock.release()\nto check whether the wake lock is actually not held / held\nbefore performing the corresponding operation.  This change avoids\nmaking redundant calls into the power manager service in the\ncase where the wake lock is not reference counted and acquire()\nor release() have been called multiple times.\n\nMade the PowerManager and WakeLock classes final.  They are not\ndirectly instantiable by applications so this change does not\nbreak the API.\n\nRemoved a little dead code (one private constructor and an\nunused constant).\n\nChange-Id: I4e10cf893506115938a35756136c101256dccf30\n"
    }
  ],
  "next": "849df0b5a7a5ef72610d687a8b1c2f0a23f873ab"
}
