)]}'
{
  "log": [
    {
      "commit": "b967464049d7a75face9237a89903342c4724f8a",
      "tree": "0788336eb05de7ce3aa5e388192974af8a93ee56",
      "parents": [
        "4f8da32ffaf7aaf1f670e74caa7cd8a70ddb63c6",
        "a40627daee4891ab842fa509af254b349bff3a47"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Wed Sep 12 13:25:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 12 13:25:22 2012 -0700"
      },
      "message": "Merge \"Enforce encapsulation for MarginLayoutParams startMargin and endMargin\" into jb-mr1-dev"
    },
    {
      "commit": "4f8da32ffaf7aaf1f670e74caa7cd8a70ddb63c6",
      "tree": "f56bcdf3e87fc143cc9b488fd4f43dd5b5fd2cf9",
      "parents": [
        "743115ffcd5f7b04d8b485bbfc5440216c3aaf4f",
        "e91d5bee241f30513b82263bc71b56abfde8ad8d"
      ],
      "author": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Wed Sep 12 12:48:31 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 12 12:48:32 2012 -0700"
      },
      "message": "Merge \"Make JavascriptInterface annotation public.\" into jb-mr1-dev"
    },
    {
      "commit": "bd0fe8783407bc760b8e9a9952cb96a600d26ea9",
      "tree": "4a3d402b7dd3535dcb9e7f2eb2adcd0c4929a709",
      "parents": [
        "568e3ebb5e7814fb68179a9755a686a0e1deec70",
        "5cc2351ded6a13fadcc3bb14fdaf31ac66c05b2d"
      ],
      "author": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Wed Sep 12 09:34:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 12 09:34:37 2012 -0700"
      },
      "message": "Merge \"Deprecating methods (and a constant) for JB MR1\" into jb-mr1-dev"
    },
    {
      "commit": "e91d5bee241f30513b82263bc71b56abfde8ad8d",
      "tree": "814ab0f83791087776a023f6cdac3cf88f0a2805",
      "parents": [
        "0bb4d078afeadf4996240d0ac41514c28e5f795a"
      ],
      "author": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Tue Sep 11 16:11:22 2012 -0700"
      },
      "committer": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Wed Sep 12 08:04:26 2012 -0700"
      },
      "message": "Make JavascriptInterface annotation public.\n\nBug: 7073422\n\nThis change makes @JavascriptInterface public and it requires\nusing this annotation to allow javascript access to public java\nmethods for API level JELLY_BEAN_MR1 and above. The behavior\ndoes not change for API levels JELLY_BEAN and below.\n\nChange-Id: I4108b17cf71b9ac273d7b61b1c8f7f5581e922ee\n"
    },
    {
      "commit": "a40627daee4891ab842fa509af254b349bff3a47",
      "tree": "fba0f1a50dc3d7d98a4b1e0faa74ffe6585cb21a",
      "parents": [
        "e11dc0ddab438d3b6545bc5d1582e1deddb5d465"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Sep 11 16:47:21 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Sep 11 17:16:36 2012 -0700"
      },
      "message": "Enforce encapsulation for MarginLayoutParams startMargin and endMargin\n\nChange-Id: Ibaf5ade22612dfa52173978e4b520a6407162d13\n"
    },
    {
      "commit": "2071e8408a8fdf87e2cf9a8b881da8c46cf6a737",
      "tree": "fd895e24aad60f5ac62a09c94c854da94fe50c02",
      "parents": [
        "aec914b1301b9608053b77318c8ea86fa162f14d"
      ],
      "author": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Tue Sep 11 13:54:07 2012 -0700"
      },
      "committer": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Tue Sep 11 13:54:07 2012 -0700"
      },
      "message": "Fixing build (update-api)\n\nChange-Id: I78738cc8320dab1fde082bfa9f65d020c6573de7\n"
    },
    {
      "commit": "aec914b1301b9608053b77318c8ea86fa162f14d",
      "tree": "9eb8a821f8fee4f63c05d9a3880179cd2d0feacd",
      "parents": [
        "ea42443e35f04ebd5c8fd6b6b2fc362e2534cb9a",
        "0aa2d42e87e4a1ed5b83f356690e465d6a3587cc"
      ],
      "author": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Tue Sep 11 13:18:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 11 13:18:14 2012 -0700"
      },
      "message": "Merge \"Adding notion of keyguard widgets\" into jb-mr1-dev"
    },
    {
      "commit": "ff5c9146b53d8429f8ee778f193582c12da0d2b3",
      "tree": "ee647683d158da2250f35c6d69761d84a56e25db",
      "parents": [
        "c574fd04cc192fa30af5dd065c5d0cd4c50f8db4",
        "7cfd7d5b65b725d7253295becfe02f03767c71fa"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Sep 11 12:41:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 11 12:41:11 2012 -0700"
      },
      "message": "Merge \"NEW_API: Unhide android.hardware.Camera.Parameters#SCENE_MODE_HDR\" into jb-mr1-dev"
    },
    {
      "commit": "7cfd7d5b65b725d7253295becfe02f03767c71fa",
      "tree": "ee8f0a56e9b2d6772db5507c096130abea82bbd4",
      "parents": [
        "da2f0ea10822628875a956e4bf096066c0debe9f"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Sep 11 11:25:50 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Sep 11 11:34:59 2012 -0700"
      },
      "message": "NEW_API: Unhide android.hardware.Camera.Parameters#SCENE_MODE_HDR\n\nBug: 7054970\n\nChange-Id: I509fa18f1203022bb23cd9ef5c70cb3a3fbb8b77\n"
    },
    {
      "commit": "0aa2d42e87e4a1ed5b83f356690e465d6a3587cc",
      "tree": "ce6f9c5fddd8d6664a8b369b04c7b271a86392a6",
      "parents": [
        "ce3ef0abaa17b12dc0626b06421d58bf06974ae2"
      ],
      "author": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Fri Sep 07 17:37:26 2012 -0700"
      },
      "committer": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Tue Sep 11 10:53:57 2012 -0700"
      },
      "message": "Adding notion of keyguard widgets\n\n-\u003e Persisting certain appwidget options\n-\u003e Adding ability to specify appwidget options on bind\n   so as to avoid AppWidgetProvider update call with no\n   options.\n\nChange-Id: I5631039f19f1822b8e123b559b6353c880c0192e\n"
    },
    {
      "commit": "d7f5a51baf2c46436dc5bac3807fb0d46cbff304",
      "tree": "e58ebfb7e060ecdd1ce769cc3a09f7327d58b762",
      "parents": [
        "e11dc0ddab438d3b6545bc5d1582e1deddb5d465",
        "b38070caa5143ab9fd1883e0c7c879533a480bc7"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Mon Sep 10 14:12:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 10 14:12:48 2012 -0700"
      },
      "message": "Merge \"IME support for trackball and generic motion events\" into jb-mr1-dev"
    },
    {
      "commit": "b38070caa5143ab9fd1883e0c7c879533a480bc7",
      "tree": "ffbed34eefd1fd81a028e1a14820d48953252b29",
      "parents": [
        "37ee53420ce47860807eb8eaeb454c12fa46797b"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Fri Aug 24 13:46:02 2012 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Mon Sep 10 14:01:42 2012 -0700"
      },
      "message": "IME support for trackball and generic motion events\n\nTrackball and generic motion events now pass through the IME in case\nit would like to handle them before passing them on to the view\nhierarchy.\n\nWhile I was at it, I also...\n...fixed the documentation on InputMethodService.onKeyUp()\n...added documentation to InputMethodService.onTrackballEvent()\n...added trackball and generic motion events to the \"input\" command\n...fixed input consistency verification involving ACTION_OUTSIDE\n\nBug: 7050005\nChange-Id: I40ab68df4a9542af6df25de6ec2ec500e4c02902\n"
    },
    {
      "commit": "753e1280cbc3f0006b04f67385f02e1f92019f7d",
      "tree": "ce54912968d860771f437d3e0a70762df0474c92",
      "parents": [
        "799553e02aa3350397d723982d42198a5bab774c",
        "e590dc6f7dfbd00117acfb7aa2ef35bc94e537bd"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Sep 10 00:48:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 10 00:48:26 2012 -0700"
      },
      "message": "Merge \"Unhide INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE.\" into jb-mr1-dev"
    },
    {
      "commit": "1b8ecc5031051b4bba620fac27552e84ca666496",
      "tree": "b4e0c606e9cc3c0cc90b00fb78930af11987f1f3",
      "parents": [
        "add52a975aa78d9e24d3e63a8168c00a9bfb80ec"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Sep 08 17:03:52 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Sep 09 14:41:34 2012 -0700"
      },
      "message": "A little cleanup.\n\nChange-Id: Ie33fd1b02011606e67ce08df3cce887c07680c60\n"
    },
    {
      "commit": "74ee8652e02fc94901177214fc9370659732c921",
      "tree": "d3b5c4848416a4957342f36b326364fb20d8e45e",
      "parents": [
        "d888399ad4a4ec0a08e97518bf22d726a8bd4eaa"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 07 18:33:18 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 07 18:33:18 2012 -0700"
      },
      "message": "Add Binder.getCallingUserHandle().\n\nChange-Id: I2a7eedfdc7baeeb4c2cd2ca0153aa95e0cf0bf45\n"
    },
    {
      "commit": "89b3f48fa3ccaf9a05628f0e540c1f94716809f7",
      "tree": "8a02c1f85bd5268122888e517aa3aaf80062d956",
      "parents": [
        "c0be8c85b09002359adb1fb20f2bf08e6983d146",
        "d15ebf25c595b855f6978d0600218e3ea5f31e92"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Sep 07 14:44:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 14:44:43 2012 -0700"
      },
      "message": "Merge \"Enable changing properties of layer paint\" into jb-mr1-dev"
    },
    {
      "commit": "5e03e2ca7d25b899b129baad2dd5eca6bf99d88a",
      "tree": "10c601a58b0bbeb6902d43e0862c58f3ec121c78",
      "parents": [
        "970683c5d42a1d8588d656d4e570ce4f0f6e0abc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 06 14:21:19 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 07 13:55:23 2012 -0700"
      },
      "message": "More multi-user stuff:\n\n- New (hidden) isUserRunning() API.\n- Maintain LRU list of visited users.\n- New FLAG_IS_DATA_ONLY for ApplicationInfo.\n- Clean up pending intent records when force-stopping a user (or package).\n  (Also fixes bug #6880627: PendingIntent.getService() returns stale\n  intent of force stopped app)\n- Fix force-stopping when installing an app to do the force-stop across\n  all users for that app.\n- When selecting which processes to kill during a force stop, do this\n  based on the actual packages loaded in the process, not just process\n  name matching.\n- You can now use --user option in am when starting activities, services,\n  and instrumentation.\n- The am --user option accepts \"current\" and \"all\" as arguments.\n- The pm uninstall command now uninstalls for all users, so it matches\n  the semantics of the install command.\n- PhoneWindowManager now explicitly says to start home in the current\n  user.\n- Activity manager call to retrieve the MIME type from a content provider\n  now takes a user argument, so it will direct this to the proper user.\n- The package manager uninstall paths are now implemented around\n  PackageSetting, not PackageParser.Package.  This allows them to work\n  even if the application\u0027s apk has been removed (in which case it only\n  exists as a PackageSetting, not the PackageParser.Package parsed from\n  the apk).\n\nChange-Id: I3522f6fcf32603090bd6e01cc90ce70b6c5aae40\n"
    },
    {
      "commit": "d15ebf25c595b855f6978d0600218e3ea5f31e92",
      "tree": "35154bd1ec18cf8299a0d737847291ab28a5c98b",
      "parents": [
        "4db5d23deab9ea8de34cdb1c56af31e6e3cff79b"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Sep 05 11:40:29 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Sep 07 13:27:02 2012 -0700"
      },
      "message": "Enable changing properties of layer paint\n\nPreviously, to draw a layered view with a changed Paint object for the\ndrawLayer operation, you\u0027d have to invalidate the parent view, to get the\nnative DisplayList to pick up the new Paint properties. This change adds\nAPI and functionality so that the developer can call setLayerPaint(), which\ndoes the proper invalidation (lightweight, doesn\u0027t cause redrawing the view).\n\nIssue #6923810 Make it easy to efficiently animate a layer\u0027s Paint\n\nChange-Id: I7fea79788d50f6d9c86dd5e5b2a4490cb95142bb\n"
    },
    {
      "commit": "5cc2351ded6a13fadcc3bb14fdaf31ac66c05b2d",
      "tree": "39e0045d50fd15631ea53a0faafdc93e9380451f",
      "parents": [
        "fb3ec448f1208d75edebff0e93fa97a8913ff29e"
      ],
      "author": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Thu Aug 09 15:33:08 2012 -0400"
      },
      "committer": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Fri Sep 07 15:34:13 2012 -0400"
      },
      "message": "Deprecating methods (and a constant) for JB MR1\n\nChange-Id: I3eb0eaff5ea5d8984ad143f801efa19e25bd0685\n"
    },
    {
      "commit": "e590dc6f7dfbd00117acfb7aa2ef35bc94e537bd",
      "tree": "fdb43cef7e371b5c7958b8b6cbda29dd6f151cb5",
      "parents": [
        "4848f42f65082340b98da2628761e59567d19d9d"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Sep 07 19:02:34 2012 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Sep 07 19:05:41 2012 +0800"
      },
      "message": "Unhide INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE.\n\nbug:7053266\n\nChange-Id: I4e00199598f57f11250abeab4ce17ced18f41f14\n"
    },
    {
      "commit": "01fa888903fecd2e85bdfa9dd0bceebab6244389",
      "tree": "81a1e616a499c2d4723720f83479d28765f30a20",
      "parents": [
        "4b15ab66a064ba4fae3bb1ff474d8b5fc38e5490",
        "eb9862fd4c6ba1745a0f6c997e85643a4ded0643"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 19:43:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 06 19:43:54 2012 -0700"
      },
      "message": "Merge \"Adding FEEDBACK_BRAILLE to AccessibilityServiceInfo.\" into jb-mr1-dev"
    },
    {
      "commit": "eb9862fd4c6ba1745a0f6c997e85643a4ded0643",
      "tree": "694fc7f1593e536dd9da91c095d9e470c4062378",
      "parents": [
        "fa8d83d90444354e8eca6ca0e080bc917e5a1f32"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 19:40:29 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 19:40:34 2012 -0700"
      },
      "message": "Adding FEEDBACK_BRAILLE to AccessibilityServiceInfo.\n\n1. The feedback type provided by braille devices differs from all\n   already predefined types and this change defines braille\n   feedback type. Braille does not fit in the already predefined\n   categories.\n\nbug:6998945\n\nChange-Id: Ide6043bed03fdecd6d2ee45a08762f5bd07a2118\n"
    },
    {
      "commit": "1cf70bbf96930662cab0e699d70b62865766ff52",
      "tree": "2173762d4e4d7be76f5691cebd74e1bd8f2b8543",
      "parents": [
        "fa8d83d90444354e8eca6ca0e080bc917e5a1f32"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 10:53:34 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 18:56:17 2012 -0700"
      },
      "message": "Screen magnification - feature - framework.\n\nThis change is the initial check in of the screen magnification\nfeature. This feature enables magnification of the screen via\nglobal gestures (assuming it has been enabled from settings)\nto allow a low vision user to efficiently use an Android device.\n\nInteraction model:\n\n1. Triple tap toggles permanent screen magnification which is magnifying\n   the area around the location of the triple tap. One can think of the\n   location of the triple tap as the center of the magnified viewport.\n   For example, a triple tap when not magnified would magnify the screen\n   and leave it in a magnified state. A triple tapping when magnified would\n   clear magnification and leave the screen in a not magnified state.\n\n2. Triple tap and hold would magnify the screen if not magnified and enable\n   viewport dragging mode until the finger goes up. One can think of this\n   mode as a way to move the magnified viewport since the area around the\n   moving finger will be magnified to fit the screen. For example, if the\n   screen was not magnified and the user triple taps and holds the screen\n   would magnify and the viewport will follow the user\u0027s finger. When the\n   finger goes up the screen will clear zoom out. If the same user interaction\n   is performed when the screen is magnified, the viewport movement will\n   be the same but when the finger goes up the screen will stay magnified.\n   In other words, the initial magnified state is sticky.\n\n3. Pinching with any number of additional fingers when viewport dragging\n   is enabled, i.e. the user triple tapped and holds, would adjust the\n   magnification scale which will become the current default magnification\n   scale. The next time the user magnifies the same magnification scale\n   would be used.\n\n4. When in a permanent magnified state the user can use two or more fingers\n   to pan the viewport. Note that in this mode the content is panned as\n   opposed to the viewport dragging mode in which the viewport is moved.\n\n5. When in a permanent magnified state the user can use three or more\n   fingers to change the magnification scale which will become the current\n   default magnification scale. The next time the user magnifies the same\n   magnification scale would be used.\n\n6. The magnification scale will be persisted in settings and in the cloud.\n\nNote: Since two fingers are used to pan the content in a permanently magnified\n   state no other two finger gestures in touch exploration or applications\n   will work unless the uses zooms out to normal state where all gestures\n   works as expected. This is an intentional tradeoff to allow efficient\n   panning since in a permanently magnified state this would be the dominant\n   action to be performed.\n\nDesign:\n\n1. The window manager exposes APIs for setting accessibility transformation\n   which is a scale and offsets for X and Y axis. The window manager queries\n   the window policy for which windows will not be magnified. For example,\n   the IME windows and the navigation bar are not magnified including windows\n   that are attached to them.\n\n2. The accessibility features such a screen magnification and touch\n   exploration are now impemented as a sequence of transformations on the\n   event stream. The accessibility manager service may request each\n   of these features or both. The behavior of the features is not changed\n   based on the fact that another one is enabled.\n\n3. The screen magnifier keeps a viewport of the content that is magnified\n   which is surrounded by a glow in a magnified state. Interactions outside\n   of the viewport are delegated directly to the application without\n   interpretation. For example, a triple tap on the letter \u0027a\u0027 of the IME\n   would type three letters instead of toggling magnified state. The viewport\n   is updated on screen rotation and on window transitions. For example,\n   when the IME pops up the viewport shrinks.\n\n4. The glow around the viewport is implemented as a special type of window\n   that does not take input focus, cannot be touched, is laid out in the\n   screen coordiates with width and height matching these of the screen.\n   When the magnified region changes the root view of the window draws the\n   hightlight but the size of the window does not change - unless a rotation\n   happens. All changes in the viewport size or showing or hiding it are\n   animated.\n\n5. The viewport is encapsulated in a class that knows how to show,\n   hide, and resize the viewport - potentially animating that.\n   This class uses the new animation framework for animations.\n\n6. The magnification is handled by a magnification controller that\n   keeps track of the current trnasformation to be applied to the screen\n   content and the desired such. If these two are not the same it is\n   responsibility of the magnification controller to reconcile them by\n   potentially animating the transition from one to the other.\n\n7. A dipslay content observer wathces for winodw transitions, screen\n   rotations, and when a rectange on the screen has been reqeusted. This\n   class is responsible for handling interesting state changes such\n   as changing the viewport bounds on IME pop up or screen rotation,\n   panning the content to make a requested rectangle visible on the\n   screen, etc.\n\n8. To implement viewport updates the window manger was updated with APIs\n   to watch for window transitions and when a rectangle has been requested\n   on the screen. These APIs are protected by a signature level permission.\n   Also a parcelable and poolable window info class has been added with\n   APIs for getting the window info given the window token. This enables\n   getting some useful information about a window. There APIs are also\n   signature protected.\n\nbug:6795382\n\nChange-Id: Iec93da8bf6376beebbd4f5167ab7723dc7d9bd00\n"
    },
    {
      "commit": "06efb530a479ea12398c1b3ee4b80e2ac85a1680",
      "tree": "e0b556042183883b892969b6343c193c15a3e7ce",
      "parents": [
        "9e130e70eff57d15c0888f51c4f1a7cc4cd62573"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Aug 24 15:29:27 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Sep 06 16:39:08 2012 -0700"
      },
      "message": "Per-user settings\n\nEach user has its own Settings.System.* and Settings.Secure.* namespace now.  In\naddition, this CL introduces the new Settings.Global.* namespace, which contains\na number of previously-elsewhere named settings entities; these Global.* entities\nare common to all users.  Because these elements have been moved from their prior\nexistence in the other namespaces, attempts to access them under their old names\nand namespaces are detected and redirected (with appropriate compile-time and\nlogging messages) to their new homes.\n\nThe new Global.* namespace can only be written by system-level code, just like\nthe existing Secure.* namespace.  If an app attempts to write a key that was\npreviously in the System.* namespace but has been moved to the Global.* namespace,\nthen a warning is logged and no write is performed; the action is a no-op.  (The\napp is explicitly not crashed, to avoid breaking well-behaved apps that can\u0027t\nknow any better.)\n\nThere is also now a hidden API for getting/setting settings entities associated\nwith a user other than the caller\u0027s.  Reading/writing data for a user other than\nyourself requires the signature-level INTERACT_ACROSS_USERS_FULL permission.\n\nManipulating data for a different user cannot be done via the ContentProvider\nquery() / insert() APIs; you must use the Settings.get/put APIs for that degree\nof control.  In general, use of the get/set API is *strongly* preferred over\nquery-type access to Settings.\n\nBug 6985398\n\nChange-Id: Ibee54ddff99fb847c8c2479c23b50f1e7524d724\n"
    },
    {
      "commit": "62bea2f1710be0d1a42c07109fd4307ded660d3b",
      "tree": "f772341cd06cd3df43bea1572361d226f4faed2f",
      "parents": [
        "18e876806718e28edaa3cd9bb0262a9b400bc82b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 18:48:15 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 06 11:05:53 2012 -0700"
      },
      "message": "Nested fragments.\n\nChange-Id: I79acc19b391352c16b06afee2ca543223c38e364\n"
    },
    {
      "commit": "0d727c714b75b9d9c927eca83aacba8938b08537",
      "tree": "37077b3466fb75cde12aefdcdd7ed78460a32f96",
      "parents": [
        "b326fa046b64b05b9969e0a6e89cf48577bfdae1",
        "e62e6d8731ab1e02c1632ebc011792d07b902af8"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Tue Sep 04 20:27:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 20:27:50 2012 -0700"
      },
      "message": "Merge \"Add subtypeId for keeping enabled \"InputMethodSubtype\"s even if subtype parameters are changed\" into jb-mr1-dev"
    },
    {
      "commit": "175ae55c0d62b6adbc9b3cc215ad2e65a8b40cc3",
      "tree": "5892f9df667e5fed3fc3f18be7fb075869883632",
      "parents": [
        "690420831c9b60f7fb2f1100aeef67ad79bfd3bb",
        "b8ec470617590fa2025db869e8e80dcce8eaec23"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Tue Sep 04 15:20:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 15:20:42 2012 -0700"
      },
      "message": "Merge \"Update DevicePolicyManager with ability to disable keyguard widgets\" into jb-mr1-dev"
    },
    {
      "commit": "035ce2ca92742894f7f906c93d7d217c647aa19a",
      "tree": "091278302dd86f6009db3d86ff95dd607fef8c11",
      "parents": [
        "167611811d4fd6318bc366128590701274488e84",
        "5f7979993979466c79ab4f38d83c6f2aca361662"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Sep 04 15:01:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 15:01:03 2012 -0700"
      },
      "message": "Merge \"Add support for \"-rtl\" in resources\" into jb-mr1-dev"
    },
    {
      "commit": "b8ec470617590fa2025db869e8e80dcce8eaec23",
      "tree": "d4341cbea549ffbfad089d16a4b337bfca7688ab",
      "parents": [
        "d2a8df9541c198d555ef6a50347acb9160509863"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Fri Aug 31 17:19:10 2012 -0700"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Tue Sep 04 13:52:36 2012 -0700"
      },
      "message": "Update DevicePolicyManager with ability to disable keyguard widgets\n\nChange-Id: I5876e9e180b2a995aaa355fbbb2b67cebb86104d\n"
    },
    {
      "commit": "e62e6d8731ab1e02c1632ebc011792d07b902af8",
      "tree": "179eba3cd548a5c981f95a9c04d3960d546ea2e7",
      "parents": [
        "e94831e5ed4aa3b1ebc5444cc1b16cdab8cb92f8"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Mon Jul 02 18:45:43 2012 +0900"
      },
      "committer": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Tue Sep 04 15:29:03 2012 +0900"
      },
      "message": "Add subtypeId for keeping enabled \"InputMethodSubtype\"s even if subtype parameters are changed\n\nBug: 6752230\nChange-Id: I3a2d512e395fe8645edf6ab82108948b927c629a\n"
    },
    {
      "commit": "f83ec838915c13158ddfda0cf4da5865b260b9c6",
      "tree": "81d0e7f24330cd5a28d5bfd6e899acee6388b562",
      "parents": [
        "3b9a4160c99b2375b4874ccabf92eac68be06af6",
        "4ed8fe75e1dde1a2b9576f3862aecc5a572c56b5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 31 15:49:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 15:49:17 2012 -0700"
      },
      "message": "Merge \"More improvements to the display manager.\" into jb-mr1-dev"
    },
    {
      "commit": "3b9a4160c99b2375b4874ccabf92eac68be06af6",
      "tree": "9fbfa35fdf2c0da50bb8a51e548dfacfeaf604b2",
      "parents": [
        "176d105d2f71198966b566d36d4e856a797695c7",
        "a492c3a7b2c18426fd0cb4d017eacbc368195dc5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 31 15:48:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 15:48:26 2012 -0700"
      },
      "message": "Merge \"Initial draft of high-level multi-display APIs.\" into jb-mr1-dev"
    },
    {
      "commit": "4ed8fe75e1dde1a2b9576f3862aecc5a572c56b5",
      "tree": "d51a8657c4ca101b5a82c2592d89d789643d388f",
      "parents": [
        "a492c3a7b2c18426fd0cb4d017eacbc368195dc5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 30 18:18:29 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 31 15:42:46 2012 -0700"
      },
      "message": "More improvements to the display manager.\n\nAdded more complete support for logical displays with\nsupport for mirroring, rotation and scaling.\n\nImproved the overlay display adapter\u0027s touch interactions.\n\nA big change here is that the display manager no longer relies\non a single-threaded model to maintain its synchronization\ninvariants.  Unfortunately we had to change this so as to play\nnice with the fact that the window manager wants to own\nthe surface flinger transaction around display and surface\nmanipulations.  As a result, the display manager has to be able\nto update displays from the context of any thread.\n\nIt would be nice to make this process more cooperative.\nThere are already several components competing to perform\nsurface flinger transactions including the window manager,\ndisplay manager, electron beam, overlay display window,\nand mouse pointer.  They are not manipulating the same surfaces\nbut they can collide with one another when they make global\nchanges to the displays.\n\nChange-Id: I04f448594241f2004f6f3d1a81ccd12c566bf296\n"
    },
    {
      "commit": "a492c3a7b2c18426fd0cb4d017eacbc368195dc5",
      "tree": "67744a8d91519d997cb761a697600041d74165fa",
      "parents": [
        "00453e7a0182b50cf01e65c97650b526284fe084"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 23 19:48:44 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 31 15:42:45 2012 -0700"
      },
      "message": "Initial draft of high-level multi-display APIs.\n\nThis patch introduces the ability to create a Context that\nis bound to a Display.  The context gets its configuration and\nmetrics from that display and is able to provide a WindowManager\nthat is bound to the display.\n\nTo make it easier to use, we also add a new kind of Dialog\ncalled a Presentation.  Presentation takes care of setting\nup the context as needed and watches for significant changes\nin the display configuration.  If the display is removed,\nthen the presentation simply dismisses itself.\n\nChange-Id: Idc54b4ec84b1ff91505cfb78910cf8cd09696d7d\n"
    },
    {
      "commit": "89bc8636c5aeedd2421ffa4f903e783d4a2a993c",
      "tree": "dd51914a8fc35d453537ab84161b5963f7cc21df",
      "parents": [
        "f4247c250dd0ce50c8fa4e59bad33d0ba9b68692",
        "780c491fb9905adb3782f34886bb23327ed8f456"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Fri Aug 31 11:26:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 11:26:54 2012 -0700"
      },
      "message": "Merge \"Add an OnDismissListener to AutoCompleteTextView\" into jb-mr1-dev"
    },
    {
      "commit": "780c491fb9905adb3782f34886bb23327ed8f456",
      "tree": "9b7375cbc9beb1de4374d0dc573d102c7ab17ecb",
      "parents": [
        "f203aeef993b0f4ce65c9630d06bbd50a504e89f"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Thu Aug 30 17:30:05 2012 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Thu Aug 30 17:46:11 2012 -0700"
      },
      "message": "Add an OnDismissListener to AutoCompleteTextView\n\nBug 4551310\n\nChange-Id: I702301ad3360828ec6637b6c09789e00d9661271\n"
    },
    {
      "commit": "d1b5cfc94ae940f42be352e7ed98c21c973471b2",
      "tree": "17d17b61ad35f94a6a6db81432c271355c204c6b",
      "parents": [
        "0fa814d7e6d16e68fa715175cf3122b19fd9e59c"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Wed Aug 29 14:49:51 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Aug 30 16:00:59 2012 -0700"
      },
      "message": "Notify verifiers that verification is complete\n\nSend the Intent.ACTION_PACKAGE_VERIFIED to all verifiers when\nverification is complete (either one verifier verified the package or a\ntimeout occurred). Details of what occurred is in a new extra,\nPackageManager.EXTRA_VERIFICATION_RESULT.\n\nBug: 7048930\nChange-Id: I4f9855a29b0eb6d77f469891402c69e2e8922945\n"
    },
    {
      "commit": "5ac72a29593ab9a20337a2225df52bdf4754be02",
      "tree": "dc5310e556b3662cb5f097b30e700a26d50a4db5",
      "parents": [
        "e217ee4d7a8223289a1af7363627c69956c46d41"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 29 18:32:08 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 30 14:33:22 2012 -0700"
      },
      "message": "Improve multi-user broadcasts.\n\nYou can now use ALL and CURRENT when sending broadcasts, to specify\nwhere the broadcast goes.\n\nSticky broadcasts are now correctly separated per user, and registered\nreceivers are filtered based on the requested target user.\n\nNew Context APIs for more kinds of sending broadcasts as users.\n\nUpdating a bunch of system code that sends broadcasts to explicitly\nspecify which user the broadcast goes to.\n\nMade a single version of the code for interpreting the requested\ntarget user ID that all entries to activity manager (start activity,\nsend broadcast, start service) use.\n\nChange-Id: Ie29f02dd5242ef8c8fa56c54593a315cd2574e1c\n"
    },
    {
      "commit": "451da77972a4eead1317929e3176a9aa2a2707e9",
      "tree": "d52fc16155d1d6853e62118a8e5f832421435a09",
      "parents": [
        "e671ccec0f4d0fc5fe11ffc9b3b40637e6d2ddda",
        "201501f11e2934f63f9692383ade0620c45febae"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Aug 30 10:30:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 10:30:28 2012 -0700"
      },
      "message": "Merge \"Add getter for animateFirstView property of ViewAnimator\" into jb-mr1-dev"
    },
    {
      "commit": "201501f11e2934f63f9692383ade0620c45febae",
      "tree": "940eded04901289894141b8ee8f76e650c345f86",
      "parents": [
        "71d7c3c628fbce04b8bdb60f127588ada00bae13"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Aug 30 09:51:08 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Aug 30 09:51:08 2012 -0700"
      },
      "message": "Add getter for animateFirstView property of ViewAnimator\n\nTooling for xml properties is easier/better if we can properly reflect the\nxml properties at the Java language API level as well. We had setters/getters\nfor the other properties of ViewAnimator, but only a setter for the\nanimateFirstView property.\n\nIssue #6104327 Inconsistency between XML API and Java API for widgets - ViewAnimator\n\nChange-Id: Iede7231fa433ce14f7a8299da4cedd4720370bc8\n"
    },
    {
      "commit": "bd6e1500aedc5461e832f69e76341bff0e55fa2b",
      "tree": "a7f6e0a3524872002f2904cc43d926166c3c4515",
      "parents": [
        "c53abc4d42a707caddf7ec9bb7d041125a09dbd7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 28 03:27:37 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 29 15:34:17 2012 -0700"
      },
      "message": "Add initial multi-display support.\n\nSplit the DisplayManager into two parts.  One part is bound\nto a Context and takes care of Display compatibility and\ncaching Display objects on behalf of the Context.  The other\npart is global and takes care of communicating with the\nDisplayManagerService, handling callbacks, and caching\nDisplayInfo objects on behalf of the process.\n\nImplemented support for enumerating Displays and getting\ncallbacks when displays are added, removed or changed.\n\nElaborated the roles of DisplayManagerService, DisplayAdapter,\nand DisplayDevice.  We now support having multiple display\nadapters registered, each of which can register multiple display\ndevices and configure them dynamically.\n\nAdded an OverlayDisplayAdapter which is used to simulate\nsecondary displays by means of overlay windows.  Different\nconfigurations of overlays can be selected using a new\nsetting in the Developer Settings panel.  The overlays can\nbe repositioned and resized by the user for convenience.\n\nAt the moment, all displays are mirrors of display 0 and\nno display transformations are applied.  This will be improved\nin future patches.\n\nRefactored the way that the window manager creates its threads.\nThe OverlayDisplayAdapter needs to be able to use hardware\nacceleration so it must share the same UI thread as the Keyguard\nand window manager policy.  We now handle this explicitly as\npart of starting up the system server.  This puts us in a\nbetter position to consider how we might want to share (or not\nshare) Loopers among components.\n\nOverlay displays are disabled when in safe mode or in only-core\nmode to reduce the number of dependencies started in these modes.\n\nChange-Id: Ic2a661d5448dde01b095ab150697cb6791d69bb5\n"
    },
    {
      "commit": "2deaa3698d33d428b527329537440ab65ae8dced",
      "tree": "61269ae429f69cd0e3fcbce298bf2e229c1e5431",
      "parents": [
        "b1a1e5ca7d3a2a93d6741db40aeba1467a8631cb",
        "7e67151b912622f8a279ab1523a9bcf26ebaff3d"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Tue Aug 28 15:14:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 28 15:14:26 2012 -0700"
      },
      "message": "Merge \"Add permission checks for Verification API calls\" into jb-mr1-dev"
    },
    {
      "commit": "7e67151b912622f8a279ab1523a9bcf26ebaff3d",
      "tree": "04e046f659971b2c62115755be7265b8fe0b5521",
      "parents": [
        "ac137b3211818f9e72f9ffbaf541ad8a1ef27eb1"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Mon Aug 27 14:44:16 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Tue Aug 28 14:00:46 2012 -0700"
      },
      "message": "Add permission checks for Verification API calls\n\nEnsure that only applications with\nandroid.Manifest.permission.PACKAGE_VERIFICATION_AGENT can call application\nverification APIs, like PackageManager.verifyPendingInstall and\nPackageManager.extendVerificationTimeout\n\nBug: 7049083\nChange-Id: I5fc28b37e864d67cd319a1ed9d03a90dd15ad052\n"
    },
    {
      "commit": "97d28d92c9a42db71d1855286fdd122e6b19ecef",
      "tree": "d16ae193eb92da32c2db2e22f69847a8431ebe49",
      "parents": [
        "a3b63c001cfd04121708e2bd67af5c8eb855baa1",
        "82e6ee62b2be3c716c215e4ba72c8a12c58620fb"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Tue Aug 28 12:34:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 28 12:34:22 2012 -0700"
      },
      "message": "Merge \"Unhide some CellSignalStrength methods.\" into jb-mr1-dev"
    },
    {
      "commit": "82e6ee62b2be3c716c215e4ba72c8a12c58620fb",
      "tree": "b1663786456859ff485057e3bf73564764c9b166",
      "parents": [
        "af18865486df1e23e2951983fb0d1d4bf17f4f32"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Tue Aug 28 12:05:16 2012 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Tue Aug 28 12:05:16 2012 -0700"
      },
      "message": "Unhide some CellSignalStrength methods.\n\nWhen submitting originally I\u0027d missed unhiding these methods.\n\nChange-Id: I627a5ea0c8c29b6ddfe5b1c49f9c0789d5e86456\n"
    },
    {
      "commit": "da6da0907b28d4704aabbdb1bbeb4300954670d1",
      "tree": "58a2b58cf777d02d0d89cc8f54b0ce5d29a9c5b2",
      "parents": [
        "10a0df8459d22b29fb9163071e8cbc2bb7194393"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Aug 16 12:49:23 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Mon Aug 27 22:27:06 2012 -0700"
      },
      "message": "Captive portal handling\n\nWe now notify the user of a captive portal before switching to the network as default.\nThis allows background applications to continue to work until the user confirms he\nwants to sign in to the captive portal.\n\nAlso, moved out captive portal handling out of wifi as a seperate component.\n\nChange-Id: I7c7507481967e33a1afad0b4961688bd192f0d31\n"
    },
    {
      "commit": "dc7d8008eceb08850142fcd77a97404b4fbe688d",
      "tree": "ec86be2fed3987132c6a7283a5dd10721460e9ef",
      "parents": [
        "ac66d4a8d653331a03c27d5444467fd943503c9b",
        "64a55af0ac700baecb0877235eb42caac59a3560"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 17:16:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 27 17:16:53 2012 -0700"
      },
      "message": "Merge \"Add plumbing for new surface flinger display API.\" into jb-mr1-dev"
    },
    {
      "commit": "64a55af0ac700baecb0877235eb42caac59a3560",
      "tree": "0f3c36ce8204e6cf8eedf04ce9ae24373239ddd8",
      "parents": [
        "0b722fe9ce98d97dbcb6fefd170b85ab7037e528"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 26 02:47:39 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:34:54 2012 -0700"
      },
      "message": "Add plumbing for new surface flinger display API.\n\nCleaned up the implementation of Surface and SurfaceSession\nto use more consistent naming and structure.\n\nAdded JNI for all of the new surface flinger display API calls.\n\nEnforced the requirement that all Surfaces created by\nthe window manager be named.\n\nUpdated the display manager service to use the new methods.\n\nChange-Id: I2a658f1bfd0437e1c6f9d22df8d4ffcce7284ca2\n"
    },
    {
      "commit": "7f02dc5c9c48a01bec459b71ac73a6ad37b9e12c",
      "tree": "e17c0c085dd3d1c5ade990f8e4959b9d594f508a",
      "parents": [
        "e45ca31a613d8692a9db2117be96f442e57abfef"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Mon Aug 27 13:35:16 2012 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Mon Aug 27 13:53:29 2012 -0700"
      },
      "message": "Add setOnDismissListener to AlertDialog.Builder\n\nAdd documentation to setOnCancelListener to clarify that the cancel\nevent plus the events for the various choice buttons are not the\nexhaustive set of ways the dialog can be dismissed, and that a dismiss\nlistener should be used if the app needs to cover all cases of\ndismissal.\n\nChange-Id: I9e9d6f90f6f9ccaeb2c697474ab353e2d78f37b9\n"
    },
    {
      "commit": "2adac496a891ba70cc2797a36aacf642e10b8c8d",
      "tree": "44ddb7a0e03f1919c494c4fafd5c93a2382ac3d3",
      "parents": [
        "d59db50ab0c3c7a232b2a564e763ca46c6f6ebfa"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Aug 26 13:00:30 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Aug 26 14:15:57 2012 -0700"
      },
      "message": "Added some common error codes in MediaPlayer.java\n\no related-to-bug: 6770717\n\nChange-Id: Iea8ba6943755a9af8df5b6e91284c7c1b32c3c6c\n"
    },
    {
      "commit": "7767eac3232ba2fb9828766813cdb481d6a97584",
      "tree": "41cc717fb9f11190e9da3dc12d61faf23a22861d",
      "parents": [
        "1552586283f329253edc4786a6cf40c5bb69ea36"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 23 18:25:40 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 24 13:53:13 2012 -0700"
      },
      "message": "Keep track of whether an app is installed for each user.\n\nThis add a new per-user state for an app, indicating whether\nit is installed for that user.\n\nAll system apps are always installed for all users (we still\nuse disable to \"uninstall\" them).\n\nNow when you call into the package manager to install an app,\nit will only install the app for that user unless you supply\na flag saying to install for all users.  Only being installed\nfor the user is just the normal install state, but all other\nusers have marked in their state for that app that it is not\ninstalled.\n\nWhen you call the package manager APIs for information about\napps, uninstalled apps are treated as really being not visible\n(somewhat more-so than disabled apps), unless you use the\nGET_UNINSTALLED_PACKAGES flag.\n\nIf another user calls to install an app that is already installed,\njust not for them, then the normal install process takes place\nbut in addition that user\u0027s installed state is toggled on.\n\nThe package manager will not send PACKAGE_ADDED, PACKAGE_REMOVED,\nPACKAGE_REPLACED etc broadcasts to users who don\u0027t have a package\ninstalled or not being involved in a change in the install state.\nThere are a few things that are not quite right with this -- for\nexample if you go through a full install (with a new apk) of an\napp for one user who doesn\u0027t have it already installed, you will\nstill get the PACKAGED_REPLACED messages even though this is\ntechnically the first install for your user.  I\u0027m not sure how\nmuch of an issue this is.\n\nWhen you call the existing API to uninstall an app, this toggles\nthe installed state of the app for that user to be off.  Only if\nthat is the last user user that has the app uinstalled will it\nactually be removed from the device.  Again there is a new flag\nyou can pass in to force the app to be uninstalled for all users.\n\nAlso fixed issues with cleaning external storage of apps, which\nwas not dealing with multiple users.  We now keep track of cleaning\neach user for each package.\n\nChange-Id: I00e66452b149defc08c5e0183fa673f532465ed5\n"
    },
    {
      "commit": "e7485cbc45545e5e20e003790468cd2bcd965979",
      "tree": "472b2d2c163770b562a179bc792614ae9b601c13",
      "parents": [
        "7646c773fab6a12b0727c5e25b8d17d6c5263f8e"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Aug 23 16:39:12 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Aug 23 16:39:12 2012 -0700"
      },
      "message": "MAXIMUM_VERIFICATION_TIMEOUT incorrect\n\nMissed a 0.\n\nChange-Id: Ia27d97520ef74cde529fb57ac05e6a37122cd3c2\n"
    },
    {
      "commit": "d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0c",
      "tree": "9b78fc4eb2e237ee7ad49eb70cc558f871ff9a48",
      "parents": [
        "bb121d569cd6bc7bf4018ef12756247009988863"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Wed Aug 22 14:28:05 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Aug 23 15:39:02 2012 -0700"
      },
      "message": "Allow verifiers to extend timeout\n\nCreate a new verifier API to extend the timeout for a giving package,\nincluding the resulting action (allow or deny) upon the timeout occuring.\n\nBug: 6901038\nChange-Id: I351f7944327f863aff1d7dd1227be74652fa1511\n"
    },
    {
      "commit": "5f7979993979466c79ab4f38d83c6f2aca361662",
      "tree": "90c8b098b3c9a53a90c039641b0b7ba379d6b4eb",
      "parents": [
        "5e8e41e41aecd2a4951659a1f3507f3371e0cc47"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Jun 15 20:16:41 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Aug 23 14:55:33 2012 -0700"
      },
      "message": "Add support for \"-rtl\" in resources\n\n- fix bug #7035019 Need to have \"-rtl\" support for Resource\n\nChange-Id: Ic82145c2ac672729d8a6c695a5f343276a1a0a2c\n"
    },
    {
      "commit": "21b53df7c3fc7501c9c9e238eb820a6dcf992650",
      "tree": "7ac7d0f6754bfa8f5429dba64d82ddf853440452",
      "parents": [
        "41d4332ab0641d3f5dd2ad8da7e325cd9f81f3c1",
        "1a868b7981ca5f52e893fdf9f8f538c9d5ce241d"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Thu Aug 23 10:44:04 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 23 10:44:05 2012 -0700"
      },
      "message": "Merge \"Add framework support for multiple dreams.\" into jb-mr1-dev"
    },
    {
      "commit": "1a868b7981ca5f52e893fdf9f8f538c9d5ce241d",
      "tree": "7e47e8cdd2c7330d7f56d7a9c4fed851e53e94c9",
      "parents": [
        "00a8f4ff627584f4d9a8ae0cd83f87786005e16d"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Wed Aug 22 09:56:51 2012 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Wed Aug 22 16:49:20 2012 -0400"
      },
      "message": "Add framework support for multiple dreams.\n\nBug:7028665\nChange-Id: I4fba6b8e39dc07af4490c621ac3bc7b3867371b2\n"
    },
    {
      "commit": "9b90ee2d0bb6fb9147d3fad3a1c60326fd6f0fd4",
      "tree": "abd4d23ebfd44eb06d5171718a9cddd51149c536",
      "parents": [
        "2bd65b61ba6e98496dc574251e06709546d24500",
        "db026710ec0adcf7f72dfb24c65d38a882ee26d8"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 22 08:55:26 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 22 08:55:26 2012 -0700"
      },
      "message": "Merge \"Add KeyPairGenerator for Android keystore\" into jb-mr1-dev"
    },
    {
      "commit": "db026710ec0adcf7f72dfb24c65d38a882ee26d8",
      "tree": "cff080fbecd17c5d6e6a60a7bc2adccbd6761b20",
      "parents": [
        "e29df16cb57b69995df597e8a6d95d986c1c43fc"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 20 10:48:46 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 22 08:52:55 2012 -0700"
      },
      "message": "Add KeyPairGenerator for Android keystore\n\nThis allows end-users to generate keys in the keystore without the\nprivate part of the key ever needing to leave the device. The generation\nprocess also generates a self-signed certificate.\n\nChange-Id: I114ffb8e0cbe3b1edaae7e69e8aa578cb835efc9\n"
    },
    {
      "commit": "572a0859dd258d2d72588bfd22b750a4322d3b23",
      "tree": "f1cc6abf74e9d0affe0b1ea83be4573ce6945948",
      "parents": [
        "f9678070a03ad16d223d26a38b319d38d5943a71",
        "e2c279e8a1abc2cc7bc87b94a514a563b814cdc1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 21 23:15:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 21 23:15:56 2012 -0700"
      },
      "message": "Merge \"Add FloatMath.pow.\" into jb-mr1-dev"
    },
    {
      "commit": "e2c279e8a1abc2cc7bc87b94a514a563b814cdc1",
      "tree": "8f60269c325e4945d8331389c73282eb70f186e1",
      "parents": [
        "5356c7dc72e80bbadd0ffbc69cfe3ea333280785"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 21 19:49:48 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 21 22:27:41 2012 -0700"
      },
      "message": "Add FloatMath.pow.\n\nChange-Id: I5c584f4894caba47fccfa22ba95f8665990d516c\n"
    },
    {
      "commit": "a5d5d608ccd885d8328879dde782a8cc93b7cf4f",
      "tree": "fa07d3db774f101e8f55210c47bf7d1b8232e63b",
      "parents": [
        "33da458dd832996d8b0ae945d6ab2896faff4afa",
        "37a37f445cbcd64376af153dd79ea2a123d9405d"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Mon Aug 20 16:57:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 16:57:14 2012 -0700"
      },
      "message": "Merge \"add wireless charger support\" into jb-mr1-dev"
    },
    {
      "commit": "8756bd1d6b43e1724996897cf4593d5ea5b00213",
      "tree": "d2d323b2919c94c6a106a4a1a51ec1694bc6c2fe",
      "parents": [
        "7b7feee80331deed883602d5861074ca66293e9c",
        "06c43d575c88976f8709ff3fc0bad7117bde23e7"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Aug 20 14:57:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 14:57:14 2012 -0700"
      },
      "message": "Merge \"Revert \"Revert \"Add timestamp in scan results\"\"\" into jb-mr1-dev"
    },
    {
      "commit": "a811e0848dc28f73e31a3f84d8ceca3b1f504b52",
      "tree": "5c854667a4a7da5073bd819b35069402665bc276",
      "parents": [
        "672cfdc5b6194a416eae93f5ebe82cb624e2add6",
        "706e8ba26bf0de19ad5f736516dae40c4c88c2d7"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Mon Aug 20 14:24:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 14:24:49 2012 -0700"
      },
      "message": "Merge \"Pass URLs to package verifiers\" into jb-mr1-dev"
    },
    {
      "commit": "9af67e8f6c7dd98baa6232ff2cda97510b827637",
      "tree": "0f3e974ef4972021c386d1c0c2527451f8597606",
      "parents": [
        "df8ef4b139a8918895f8a5c62536123da06e81fe",
        "9f410c540ad593dd83e34266ccffd70867a600ab"
      ],
      "author": {
        "name": "George Mount",
        "email": "mount@google.com",
        "time": "Mon Aug 20 13:37:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 13:37:55 2012 -0700"
      },
      "message": "Merge \"Add getDefaultUserAgent to WebSettings.\" into jb-mr1-dev"
    },
    {
      "commit": "706e8ba26bf0de19ad5f736516dae40c4c88c2d7",
      "tree": "2c45b61e1420f9a7442de8517b1eca6802d507c0",
      "parents": [
        "99de2459e200e0c86d55d5eee7ea000fd030990f"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Mon Aug 20 13:20:14 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Mon Aug 20 13:20:14 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: I9ebc71bc13f549bd88267e444816151a99bda000\n"
    },
    {
      "commit": "df8ef4b139a8918895f8a5c62536123da06e81fe",
      "tree": "a2069be0733deb854f9cfcbf13777b4c603c7e0b",
      "parents": [
        "6fb73ab83f9c1b745ccff4fb92babb429b9215ee"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Fri Aug 17 15:34:01 2012 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Mon Aug 20 13:17:58 2012 -0700"
      },
      "message": "DO NOT MERGE LocaleSpan makes Han disambiguation easy!\n\nCherry-pick of I7f1b0d49a2ece957a7b9b5d65d48385bf2c2a668 from master.\n\nI\u0027ve also provided TextView.setTextLocale() for use in single-language\nTextViews.\n\nChange-Id: I5692859bfd2aafc284172454d943afc250b22535\n"
    },
    {
      "commit": "06c43d575c88976f8709ff3fc0bad7117bde23e7",
      "tree": "7a1e1079fe571984f46cc4f9c9c87f46bdc0ed59",
      "parents": [
        "578531082b8e8c8aa03868e69591b7613b0e8b8e"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Aug 20 12:52:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 12:52:35 2012 -0700"
      },
      "message": "Revert \"Revert \"Add timestamp in scan results\"\"\n\nWith b/6979211 fixed, we can reinstate timestamps.\n\nThis reverts commit 578531082b8e8c8aa03868e69591b7613b0e8b8e\n\nChange-Id: I5dffc8d9701004f7c6325f21e1e33d1cdd2d05c0\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": "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": "9f410c540ad593dd83e34266ccffd70867a600ab",
      "tree": "b6e31eb8adbb7a76b30a15506639caef6f397ffe",
      "parents": [
        "81c304b99d920e8d66ac16332489d78ff7162e12"
      ],
      "author": {
        "name": "George Mount",
        "email": "mount@google.com",
        "time": "Fri Aug 10 15:29:30 2012 -0700"
      },
      "committer": {
        "name": "George Mount",
        "email": "mount@google.com",
        "time": "Fri Aug 17 15:53:13 2012 -0700"
      },
      "message": "Add getDefaultUserAgent to WebSettings.\n\n Bug 6329117\n Add ability to get the default user-agent without creating\n a WebView. The method is implemented for WebSettingsClassic.\n\nChange-Id: Id15fb57f65875752ccf644481a22b88644635f5d\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"
    }
  ],
  "next": "9c5c65959790bdceda384f87cf457bc7f9c2d433"
}
