)]}'
{
  "log": [
    {
      "commit": "b3038ec7cfc5d26eb0be18ae65c62825556bca0f",
      "tree": "ab8f2079344900661bc32101b3abe3ed22ffe8f4",
      "parents": [
        "7379a95a0bb6bf430eaf3b84ddb94e4172dd0eea"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 13 14:39:30 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 15 11:04:11 2013 -0800"
      },
      "message": "Adding idle maintenance service.\n\nIt is beneficial that there is a mechanism on the platform\nto notify applications whether it is safe to perform somehow\nexpensive operations while the user is not using the device.\nThus, user experience will not be degraded. An example is\ndiscarding of unused blocks on a mounted file system instead\nof doing this on every write operation.\n\nbug:8056794\n\nChange-Id: I708bad9d3ce6c8f1d5a1c05c0abf46f81a3d464b\n"
    },
    {
      "commit": "7379a95a0bb6bf430eaf3b84ddb94e4172dd0eea",
      "tree": "44e6a2db6f5df3eebb390a579ca30c48d15e3390",
      "parents": [
        "0726843ea088e7c6754fe6ac410749a852316aac"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 13 15:47:29 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 13 15:47:32 2013 -0800"
      },
      "message": "Proper clean up when Ui test automation service is unregistered or dies.\n\nThe UI test automation service was not removed from the list of\nenabled and installed service where it was explicitly added on\nregistration. This was leaving the accessibility manager service\nin an inconsistent state.\n\nbug:8185435\n\nChange-Id: Ice17cdef361fe98ce34f8dd01ec11dbad6c4d0c2\n"
    },
    {
      "commit": "0726843ea088e7c6754fe6ac410749a852316aac",
      "tree": "98468eedc4784fd2b3df155d37705c642c8e7600",
      "parents": [
        "fd0fa65eeae00f58863af060950e10f20971726b"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 13 14:55:19 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 13 14:59:00 2013 -0800"
      },
      "message": "Fixing a NPE in accessibility manager service.\n\nThere was a missing null checks as a result of a recent\nrefactoring.\n\nbug:8185435\n\nChange-Id: I3a1e256b434755b3a27f609dd2b6aeec31aa9a4f\n"
    },
    {
      "commit": "769a5b72dc076facae20154bf5d55b9810322b87",
      "tree": "840fb829430c7744bbe0713463dbfdb9ba600e9a",
      "parents": [
        "0888a06762fb55d48646c86c6a0184a0b96cdc24",
        "30e2d72810e699d7a61277b7ba1b6cace26b84aa"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 13 19:44:35 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 19:44:35 2013 +0000"
      },
      "message": "Merge \"Replace access to mAppTokens with AppTokenIterator\""
    },
    {
      "commit": "eff99182297f1c762789237a7d66c9bef754a3d7",
      "tree": "17e6e4857c458e635877b3ac44703380f034947a",
      "parents": [
        "93799ba01b5f2902d7120db8416a1e15103286e8",
        "0c232f5a99b0fafb7ef188ae54c400d8811d471b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 13 19:29:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 19:29:58 2013 +0000"
      },
      "message": "Merge \"Escape arguments before passing to netd.\""
    },
    {
      "commit": "0c232f5a99b0fafb7ef188ae54c400d8811d471b",
      "tree": "730b93e387e8e74fc1f5077ed4185b96d743d691",
      "parents": [
        "ea2f802928297c199c7b94dbbba867a8544e14ac"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 13 11:27:24 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 13 11:27:24 2013 -0800"
      },
      "message": "Escape arguments before passing to netd.\n\nChange-Id: I70bb0cb1e90abd490f8893365c6bdf1844b01d18\n"
    },
    {
      "commit": "30e2d72810e699d7a61277b7ba1b6cace26b84aa",
      "tree": "89011de6d793c94d9503642c6ec9d0b8fcd41e67",
      "parents": [
        "7f03185fbe4ac066ffa7f6e3d29b531a9c43c29f"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 12 11:30:16 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 12 16:03:29 2013 -0800"
      },
      "message": "Replace access to mAppTokens with AppTokenIterator\n\nMore switching from Activity-based to Task-based control.\n\nChange-Id: Ida47d71a52b875a6a6bd77cb62911053f942da15\n"
    },
    {
      "commit": "7f03185fbe4ac066ffa7f6e3d29b531a9c43c29f",
      "tree": "d0f56c04c77cd03c89ddad36db59c628fab1c442",
      "parents": [
        "bea3b60ed1ecf1cc2a9a6b1fe550f8af7392c721",
        "e45e45e37e4ded9a70c7e6c7f4fdf39c35e38fd4"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Feb 13 00:00:22 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 00:01:47 2013 +0000"
      },
      "message": "Merge \"Hacks to fix lockdown\""
    },
    {
      "commit": "e45e45e37e4ded9a70c7e6c7f4fdf39c35e38fd4",
      "tree": "516319ced590b2f5485619e046cb79b598ef83b2",
      "parents": [
        "b47e6c77b34da8bde5d706e5a25a413b8cc2e0ba"
      ],
      "author": {
        "name": "Geoffrey Borggaard",
        "email": "geoffreyb@google.com",
        "time": "Thu Jan 24 10:03:20 2013 -0500"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 23:57:20 2013 +0000"
      },
      "message": "Hacks to fix lockdown\n\nChange-Id: Icf715e84ac7f8bd12eabd01f35860c36a60a8caf\n"
    },
    {
      "commit": "bea3b60ed1ecf1cc2a9a6b1fe550f8af7392c721",
      "tree": "97fcfefc3e51ac5991b274508ff7f9905df79ff8",
      "parents": [
        "b47e6c77b34da8bde5d706e5a25a413b8cc2e0ba",
        "05d6272bad2d707b488a6f8784ce8aea5e25b110"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 12 23:57:09 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 23:57:09 2013 +0000"
      },
      "message": "Merge \"Add AppWindowTokens to TaskList.\""
    },
    {
      "commit": "559c654801bba35c184f3ed517040305a94fb4d3",
      "tree": "c75416f5faecf322245a5f2a69c1ee9e6085bd8c",
      "parents": [
        "6b2c7600e946b4130585f8665f9720d09feb6411"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 12 14:57:04 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 12 14:57:04 2013 -0800"
      },
      "message": "For now enable backup/restore DEBUG logs\n\nChange-Id: I5733251f1e11c8eedb0601ae6751a35134d6419d\n"
    },
    {
      "commit": "1dba35d62d0b41652a103913296373cc5ead8bff",
      "tree": "0052acd51dd0939d604c7db9b7f2ec8528f82a0e",
      "parents": [
        "1af81b6bdc589c9fc77c51d29c204eaf64e4ff13",
        "78d0d25dca42fcde5dcea98ab74bfc7f5c8e1114"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Feb 12 19:59:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 20:01:02 2013 +0000"
      },
      "message": "Merge \"Historical notification access API.\""
    },
    {
      "commit": "78d0d25dca42fcde5dcea98ab74bfc7f5c8e1114",
      "tree": "5f4c34562b2e6e632a418d3f4a65dce1b63b97d5",
      "parents": [
        "bde3104ddce09d03255ff481dfb13bc9e67119e8"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Feb 12 08:14:52 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Feb 12 14:33:24 2013 -0500"
      },
      "message": "Historical notification access API.\n\nSimilar to getActiveNotifications(),\ngetHistoricalNotifications() returns a list of all\nnotifications that have been posted, in\nreverse-chronological order. It currently includes duplicate\nentries for notifications that have been updated (so it\nreally is tracking every notification that has been posted\nto the system).\n\nChange-Id: Icce8d6f96bbe76710c989fd0068ff971c6498605\n"
    },
    {
      "commit": "05d6272bad2d707b488a6f8784ce8aea5e25b110",
      "tree": "6774cfb3e73de09a67864419085ecbf04eb50382",
      "parents": [
        "72baa8fbb2d117e885022e736e91ec231e809264"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Feb 11 09:39:27 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 12 10:52:55 2013 -0800"
      },
      "message": "Add AppWindowTokens to TaskList.\n\n- Add/remove/move TaskLists from ActivityStack.\n- Further isolate mHistory.\n- Cleanup warnings by parameterizing ArrayList.\n- Fix previous bugs.\n\nChange-Id: Ife8c7b7347479c70f10467cc384283456149ac50\n"
    },
    {
      "commit": "b6b23ecdfc262097eaf7afa611e9f22cc543806f",
      "tree": "dc64fa819791b61c99743d4a38825410824b7a00",
      "parents": [
        "702b42dd7415a88e876d4bacb1b543579548c607"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 11 19:29:06 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 12 10:40:16 2013 -0800"
      },
      "message": "App ops: the draw on top op now actually controls what is drawn.\n\nChange-Id: Iccfc0723a0f92108a4f7d631d74efe21dbc6f157\n"
    },
    {
      "commit": "1d3079cb8d477b50d5873e571695d938a6cb4712",
      "tree": "bcf599658217a9eddea3ef53d06d32e5b1b0ffd6",
      "parents": [
        "72baa8fbb2d117e885022e736e91ec231e809264",
        "514074fae81028937eda29e782c92e8ea78d85d2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 12 00:40:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 00:41:07 2013 +0000"
      },
      "message": "Merge \"App ops: cleanup, handle root and shell, perms.\""
    },
    {
      "commit": "72baa8fbb2d117e885022e736e91ec231e809264",
      "tree": "f2271538d0e02ebe937516274ce713b63e28f4ed",
      "parents": [
        "20949a76fee62e89d7dc22858a74469efa14f61d",
        "0dd19a8394dea139804fea126ce9ba7539a3724d"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Mon Feb 11 23:57:39 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 11 23:57:47 2013 +0000"
      },
      "message": "Merge \"Reintroduce the net.dns system properties \u003cTEMP\u003e\""
    },
    {
      "commit": "514074fae81028937eda29e782c92e8ea78d85d2",
      "tree": "063f29c329837834d3f60400899ea883322fa02e",
      "parents": [
        "de1fadfb7f70d464382e518c7f3390faf82f81f2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 11 10:52:46 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 11 15:33:48 2013 -0800"
      },
      "message": "App ops: cleanup, handle root and shell, perms.\n\nRework how the shell user is defined so that it is\nassociated with an actual apk, instead of being a free\nroaming uid with special permissions assigned to it.\nThis allows us to correctly account for its operations\nin app ops.\n\nImplement a special case for the root user in app ops --\nit is always allowed, always with the package name \"root\".\n\nAdd various code to take care of cleaning up package state\nfrom app ops -- when packages are uninstalled, and during\nboot if any packages currently being stored no longer exist.\n\nAlso fix a bug in the activity manager to correctly grant\npermissions in all cases when onNewIntent() is being called.\n\nChange-Id: Iae9f6d793ee48b93518c984ad957e46ae4582581\n"
    },
    {
      "commit": "0dd19a8394dea139804fea126ce9ba7539a3724d",
      "tree": "4d61ca13b1811ccca61a9b8f135080cc0144e924",
      "parents": [
        "e2237ce8ad228bdba8d3026beab3b04d794203e9"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Mon Feb 11 15:25:10 2013 -0800"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Mon Feb 11 15:25:10 2013 -0800"
      },
      "message": "Reintroduce the net.dns system properties \u003cTEMP\u003e\n\nRemoving these properties broke video playback as they used\na custom dns resolver.  We\u0027ll work together to resolve our\nresolver issues in the future, but this was the easy fix to\nget things working again.\n\nbug:8173236\nChange-Id: I687dae59eda4fc449efc34eed11c3dc88a110ad0\n"
    },
    {
      "commit": "636c61ed41f08b4a8de11ab9146903a8125a4aa0",
      "tree": "57a29f36e488bcac257a8e5851b07093f92cfcce",
      "parents": [
        "e63fb8f1f92bcae3be2bcb6d521b351dda0f0ae2",
        "e4cf73437a18c1444055f88a1fcc0d146ec23ac5"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Feb 11 23:16:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 11 23:17:07 2013 +0000"
      },
      "message": "Merge \"Starting point for User Restrictions API\""
    },
    {
      "commit": "e2237ce8ad228bdba8d3026beab3b04d794203e9",
      "tree": "b213673bdebea01d9000d5e523f20e471dc86ccd",
      "parents": [
        "981e60edc3ed91ea8b5e1dae98669b88b175e19b",
        "cae015fea398e1d99c0b538991535330f31fe543"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Feb 11 22:13:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 11 22:13:48 2013 +0000"
      },
      "message": "Merge \"Make ActivityStack.mHistory private.\""
    },
    {
      "commit": "981e60edc3ed91ea8b5e1dae98669b88b175e19b",
      "tree": "1b8d493ad9678307fa462fd4abf2ccb08c214ba3",
      "parents": [
        "d21267a26845c36842990e0705a470b92caa7628",
        "57bf88508e0491caced22c4c592d33aba6d88129"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Feb 11 21:03:08 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 11 21:03:37 2013 +0000"
      },
      "message": "Merge \"Refactoring of the Accessibility.\""
    },
    {
      "commit": "57bf88508e0491caced22c4c592d33aba6d88129",
      "tree": "75acdacb7a8f6f5fc7c463debf6ae6426e814849",
      "parents": [
        "3c6721899ea903ed278feac1e76a97137fa9d0c3"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Feb 07 19:21:42 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Feb 11 13:02:42 2013 -0800"
      },
      "message": "Refactoring of the Accessibility.\n\n1. The accessibility manager service updates its internal state\n   based on which settings are enabled, what accessibility services\n   are installed and what features are requested by the enabled\n   services. It was trying to do the minimal amount of work to\n   react to contextual changes like these which resulted in missed\n   cases and complex code. Now there is a single method that reads\n   the contextual information and single method that reacts to\n   contextual changes. This makes the code much easier to maintain.\n\n2. The accessibility manager service was not updating its internal\n   state when requested features from accessibility services change.\n   It was relying on changing system settings and reacting to the\n   settings change. This is problematic since the internal state is\n   not updated atomically which leads to race condition bugs. For\n   example, if touch exploration is enabled and a service requests\n   it is disabled, the internal state will not be updated but a\n   request for a settings change will be made. Now while the settings\n   change is propagating another request form the same service\n   comes to enable touch exploration but the system incorrectly\n   thinks touch exploration is enabled. At the end the feature is\n   disabled even though it was requested.\n\n3. Fixed a potential NPE if the accessibility input filter\u0027s event\n   handler was nullified between processing two event batches.\n\n4. Fixed a bug where, if magnification is enabled, it does not work\n   on the settings screen since the magnified bounds are not pushed\n   from the window manager to the accessibility manager.\n\nChange-Id: Idf629a06480e12f0d88372762df6c024fe0d7856\n"
    },
    {
      "commit": "e4cf73437a18c1444055f88a1fcc0d146ec23ac5",
      "tree": "04e5ae7765f4177fde594ec37fa65fc00b3cb507",
      "parents": [
        "64d41d7391e57886978e94e86cf01a167226dbfe"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Dec 17 11:12:09 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Feb 08 15:52:47 2013 -0800"
      },
      "message": "Starting point for User Restrictions API\n\nRestrictions saved as key/value pairs, mostly booleans right now\nbut might be expanded to other types later.\n\nSave and restore restrictions in the user manager service.\nEnforce some of the restrictions at the framework level. Some\nare enforced (also) at the app level, such as in Settings.\n\nChange-Id: Id11ffe129cb6a177e094edf79635727388c26f40\n"
    },
    {
      "commit": "cae015fea398e1d99c0b538991535330f31fe543",
      "tree": "9fea143039d131f6a591241f405815f1da5ce0a7",
      "parents": [
        "2ceb08150512ca121acc474d94f84357f0bf0bbf"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Feb 08 14:31:27 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Feb 08 14:31:27 2013 -0800"
      },
      "message": "Make ActivityStack.mHistory private.\n\nIsolate the Activity history for later conversion to Task-based\nmanagement.\n\nChange-Id: I4b6bf22de035c768aa705df0cc4f84486e8ede56\n"
    },
    {
      "commit": "fde19b106b2b77bc3540b04445357870caf878b5",
      "tree": "9da09568807fde393a99095921e308b8293d71e3",
      "parents": [
        "da8d8b9699fe8e9557389465007e333d3f03dcc1"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Jan 17 00:21:05 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Feb 07 15:43:02 2013 -0500"
      },
      "message": "New API to request a list of current notifications.\n\nThe ACCESS_NOTIFICATIONS permission is signature|system only.\n\nChange-Id: I41338230aee9611117cbdac251c1b6b6c3cebf00\n"
    },
    {
      "commit": "e11f058ee0c04be308126bb4fbc0c8e9901164c5",
      "tree": "8b1d08185ac77998091623dea1ad2aa287b0a102",
      "parents": [
        "034170cd4ca17bdda2d0baae5f438f2786805147",
        "d080bb07c88ca5ccf99f326789ed472448b50832"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumarg@android.com",
        "time": "Thu Feb 07 11:19:59 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 07 11:19:59 2013 -0800"
      },
      "message": "am d080bb07: am b9620a89: am 9434c112: Merge \"Services: Adding HSPAP info in Android\"\n\n# By Arun Ravindran\n# Via Android Git Automerger (2) and others\n* commit \u0027d080bb07c88ca5ccf99f326789ed472448b50832\u0027:\n  Services: Adding HSPAP info in Android\n"
    },
    {
      "commit": "034170cd4ca17bdda2d0baae5f438f2786805147",
      "tree": "4b5d21d7da58083e34045f4e1729a8a3963d91d0",
      "parents": [
        "2ceb08150512ca121acc474d94f84357f0bf0bbf",
        "8b47b3601f82f299bb8c135af0639b72b67230e6"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Thu Feb 07 19:02:47 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 19:02:47 2013 +0000"
      },
      "message": "Merge \"Second pass tying into dns cache per interface\""
    },
    {
      "commit": "2ceb08150512ca121acc474d94f84357f0bf0bbf",
      "tree": "8c6922150040d8529f79b6fdf535d9f080ae1b10",
      "parents": [
        "64d41d7391e57886978e94e86cf01a167226dbfe",
        "b1fd65c0ff5784b90d765edb7e3c3115d767dff0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 07 18:50:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 18:50:52 2013 +0000"
      },
      "message": "Merge \"Migrate AppWindowToken lists into DisplayContent.\""
    },
    {
      "commit": "b9620a89bd734d749cd162cbcda4699474bbf57a",
      "tree": "ee017315f765fec74ee04dc7ce4968d56c789409",
      "parents": [
        "1fd774709790b220bb780e95db7275d60a1eae57",
        "9434c112d1fef52ade78d7ef818daf981bf63bef"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumarg@android.com",
        "time": "Thu Feb 07 10:46:10 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 07 10:46:10 2013 -0800"
      },
      "message": "am 9434c112: Merge \"Services: Adding HSPAP info in Android\"\n\n# By Arun Ravindran\n# Via Gerrit Code Review (1) and Shuo Gao (1)\n* commit \u00279434c112d1fef52ade78d7ef818daf981bf63bef\u0027:\n  Services: Adding HSPAP info in Android\n"
    },
    {
      "commit": "9434c112d1fef52ade78d7ef818daf981bf63bef",
      "tree": "7aaeb4943d54a29ea162ff0c0cb9151c093ca76a",
      "parents": [
        "1a1e9b317ac2d737ad92a35c4d806f0fda1ede70",
        "58d46126e4d11e0cc5f6a1192829511bd5850ce2"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumarg@android.com",
        "time": "Thu Feb 07 17:54:41 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 07 17:54:41 2013 +0000"
      },
      "message": "Merge \"Services: Adding HSPAP info in Android\""
    },
    {
      "commit": "64d41d7391e57886978e94e86cf01a167226dbfe",
      "tree": "41c3a06aa71068e89912021e8c820e4973f16d2a",
      "parents": [
        "34e0b05e28b25dbe20c819ad4fa923c716c37e5f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 07 00:33:31 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 07 00:33:31 2013 -0800"
      },
      "message": "Fix build, conflict with another change.\n\nChange-Id: If4d7b6c814d946806838cee7dcaccba4c65c3d0f\n"
    },
    {
      "commit": "34e0b05e28b25dbe20c819ad4fa923c716c37e5f",
      "tree": "0f58340c8cb0326b225748fa700c88cc1ffb0cd9",
      "parents": [
        "8949b2480b8d4c99aa7d20508522a42421a9acef",
        "c2293025a25e04b26bf53713d71f85fd9ca5e8e9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 07 08:03:13 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 08:03:14 2013 +0000"
      },
      "message": "Merge \"App ops: track system windows, monitoring changes.\""
    },
    {
      "commit": "c2293025a25e04b26bf53713d71f85fd9ca5e8e9",
      "tree": "0a29790db261fd32404ea9aecfba5bc53e81fe57",
      "parents": [
        "0984780bc7aed76018b9f88c0d9c3ce300bde39a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Feb 06 23:14:49 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Feb 06 23:59:56 2013 -0800"
      },
      "message": "App ops: track system windows, monitoring changes.\n\nChange-Id: I273e82bdad66ada3bf0f7ec9176bc304b9ee1ee8\n"
    },
    {
      "commit": "8b47b3601f82f299bb8c135af0639b72b67230e6",
      "tree": "4173efedd4513a3ed40d2314db9ab7946d9ae316",
      "parents": [
        "9c4012b31b0c09cb14689bd96a71aae42c8a00cd"
      ],
      "author": {
        "name": "Mattias Falk",
        "email": "mattias.falk@sonyericsson.com",
        "time": "Tue Aug 23 14:15:13 2011 +0200"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Wed Feb 06 17:43:28 2013 -0800"
      },
      "message": "Second pass tying into dns cache per interface\n\nSet dns servers for secondary nets and attach the\nprocesses (pids) that are using the secondary nets\nto the secondary nets associated dns cache.\n\nbug:5465296\nChange-Id: I1eaf92d5c6b81d287e9fb2763b3d972d9de34395\n"
    },
    {
      "commit": "08d11e1fa939ecdda1ecc8bda750c07e924f06aa",
      "tree": "64722e6894c12c2572cc37262ab4774407e0bae7",
      "parents": [
        "511afdd3ac55ba27c5882cbe189d89a2942420b1",
        "b932319bff5d0d29a287bcc7bd0b594685a83036"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 06 23:57:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 06 23:57:44 2013 +0000"
      },
      "message": "Merge \"Require that bugreport requesters have DUMP.\""
    },
    {
      "commit": "f21f175369783d9a77f1e580b42ef9b3e918c2af",
      "tree": "dc02f01ba79432081b5fcb3cdbbe10431860da90",
      "parents": [
        "150edcaf8b7eeeba8a4753eb0f6b9855ad1e1eb1",
        "09eeaecf7440ff63c937337bb2f50079ebbbf9a2"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Wed Feb 06 17:50:49 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 06 17:51:09 2013 +0000"
      },
      "message": "Merge \"refactor isAllowedBySettingsLocked()\""
    },
    {
      "commit": "91641ec5538aa3b9872f24c43f811bffbcd12368",
      "tree": "c49a0f1ddd73f2727f8b88eeb9e4d456e4738ed6",
      "parents": [
        "23e500d168e8d649305445f6c1d2b49d8d2c00fd",
        "3d5173deea9d74b0476739c7108f9b77bcd8a495"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Wed Feb 06 17:01:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 06 17:01:56 2013 +0000"
      },
      "message": "Merge \"Fix addGpsStatusListener\""
    },
    {
      "commit": "0984780bc7aed76018b9f88c0d9c3ce300bde39a",
      "tree": "d44903b402d5c21c5cc7eec5c53a274bf0a60b32",
      "parents": [
        "33c239f74816449979456e8535b8e058057373d7",
        "961321fe4ed4431a6362d729d9e4ea26bdecde61"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Feb 06 01:34:40 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 06 01:34:40 2013 +0000"
      },
      "message": "Merge \"App ops: add op for writing settings.\""
    },
    {
      "commit": "961321fe4ed4431a6362d729d9e4ea26bdecde61",
      "tree": "0ddcc0f94b7840ce752fd10a9e57b55c3f2c4d9b",
      "parents": [
        "f51f61269aacdfcf737b2c32b6b216c48ab61e65"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 05 17:22:41 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 05 17:22:41 2013 -0800"
      },
      "message": "App ops: add op for writing settings.\n\nAlso fix a build.\n\nAnd fix a bug that I think was introduced in the multi-user work\nthat removed the permission check for writing to settings...!\n\nChange-Id: I5945682faa789ffc78fd3546c0df7d03693f106d\n"
    },
    {
      "commit": "b1fd65c0ff5784b90d765edb7e3c3115d767dff0",
      "tree": "83e907e408d2667911eb74e1adc445fa574c1fbd",
      "parents": [
        "93f770b59fa1bd0f2a5c18fcfaffd2a1fc54f585"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 05 13:34:57 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 05 17:08:10 2013 -0800"
      },
      "message": "Migrate AppWindowToken lists into DisplayContent.\n\nIn preparation for converting ActivityManager control to a task-based\ninterface the AppWindowTokens are being stored per-display.\n\nChange-Id: Ie5e355219554523f5e56eaef138d382975cf1682\n"
    },
    {
      "commit": "3d5173deea9d74b0476739c7108f9b77bcd8a495",
      "tree": "e4e7445e0f8c4c6fe563d1557df3468746fd1139",
      "parents": [
        "080df3f38fc47f15ad321fff00689dcd07e1d075"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Feb 05 16:07:32 2013 -0800"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Feb 05 16:09:41 2013 -0800"
      },
      "message": "Fix addGpsStatusListener\n\n.detrevni saw tset ()sseccAnoitacoLkcehc eht smees tI\n\nBug: 8131283\nChange-Id: I91ded29338c93aa7ab35d849fc5338b3f6d6590b\n"
    },
    {
      "commit": "506f65c3043e98ef598f1329eaf55add01cc8675",
      "tree": "7231da27d659deb0b57144ef03ce2f1e3bf8c26c",
      "parents": [
        "dc3edbb0e5573231fedead8de8898d4111790ea7",
        "213c13aadd5bd4fd3876528f17f179379ca1c1f6"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Feb 05 22:34:36 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 05 22:35:02 2013 +0000"
      },
      "message": "Merge \"Ensure touch explorer and magnifier get a well-formed event stream.\""
    },
    {
      "commit": "a61bb2375c4133852ade5774c5c1e7bd39cc1407",
      "tree": "77d3f81cb13e673d8bb2a52e3af11dfdec0264ad",
      "parents": [
        "da27e5a2c491955bea897ee5826fe6d3e9c7553b",
        "f79811e7b9611066b3ca2df3ceea07bdd99597e9"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Tue Feb 05 21:41:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 05 21:41:07 2013 +0000"
      },
      "message": "Merge \"LocationManagerService: Add debug flag lookup from properties\""
    },
    {
      "commit": "b932319bff5d0d29a287bcc7bd0b594685a83036",
      "tree": "0d68873d9c303062afeb95e8b782b4af61ed8eb1",
      "parents": [
        "cd80392fe706e0b419a3e655702006a25d397243"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 05 13:32:18 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 05 13:32:18 2013 -0800"
      },
      "message": "Require that bugreport requesters have DUMP.\n\nBug: 8139970\nChange-Id: I055855fa5450521122e54ed39df5981190b401bd\n"
    },
    {
      "commit": "f51f61269aacdfcf737b2c32b6b216c48ab61e65",
      "tree": "33839b315b97323df81f9638c8bb085241f017cc",
      "parents": [
        "b86147910877f1aae0733f05a9a93b91101e67e2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 04 18:23:34 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 05 11:56:12 2013 -0800"
      },
      "message": "App ops: new operations for SMS.\n\nImplementation required a new framework feature\nto associate an app op with a broadcast.\n\nChange-Id: I4ff41a52f7ad4ee8fd80cbf7b394f04d6c4315b3\n"
    },
    {
      "commit": "09eeaecf7440ff63c937337bb2f50079ebbbf9a2",
      "tree": "319d427bbb894159214a1bc72e604bef8a2be44c",
      "parents": [
        "080df3f38fc47f15ad321fff00689dcd07e1d075"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Feb 05 11:34:13 2013 -0800"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Feb 05 11:34:13 2013 -0800"
      },
      "message": "refactor isAllowedBySettingsLocked()\n\nThis commit splits LocationManagerService.isAllowedBySettingsLocked()\ninto isAllowedByUserSettingsRogkei(), which takes a UID argument, and\nisAllowedByCurrentUserSettingsLocked(), which does not. This removes\nthe need to generate synthetic UIDs with arbitrary application IDs\nand makes more explicit when LocationManagerService is acting on\nbehalf of a caller and when it is acting on behalf of the device\u0027s\ncurrent active user.\n\nChange-Id: I2cb8fb52687d2629848e5a4b66a4bda8f0f66fe1\n"
    },
    {
      "commit": "080df3f38fc47f15ad321fff00689dcd07e1d075",
      "tree": "43730a23908ca28c01655afe632ff1cb4753eec2",
      "parents": [
        "2d6ef86241e981bff217891e52f2b689dae9a6c1",
        "03cdd3d275499df3ef1059905899dcc5aaf2ab01"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Feb 05 17:38:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 05 17:38:48 2013 +0000"
      },
      "message": "Merge \"dual-mode switching single/multiuser ServiceWatcher\""
    },
    {
      "commit": "213c13aadd5bd4fd3876528f17f179379ca1c1f6",
      "tree": "e2abfb94926ec60e5aa1245af10984e3a1292ac0",
      "parents": [
        "3b53da493440efbacd147d1aedcea8679c3a642b"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Feb 04 14:26:58 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Feb 04 14:34:40 2013 -0800"
      },
      "message": "Ensure touch explorer and magnifier get a well-formed event stream.\n\nWe use an input filter to manipulate the event stream in accessibility\nmode. Some input events, i.e. touch and hover events, are delivered\nto a touch explorer, if touch exploration is enabled, and to a magnifier,\nif screen magnification is enabled. It is possible that at the moment\neach of these features is enabled we are in the middle of a touch or\nhover gesture. The touch explorer and screen magnifier expect to receive\nan event stream that starts with an event that denotes the stream start.\nThis change ensures that hover or touch events are dispatched to the\ntouch explorer and the magnifier only after the start of the first\nwell-formed hover or touch sequence.\n\nChange-Id: I8cd0ad8e1844c59fd55cf1dfacfb79af6a8916df\n"
    },
    {
      "commit": "f79811e7b9611066b3ca2df3ceea07bdd99597e9",
      "tree": "b4ef0d5584642221e5fc7d82fae186ea68ecbdba",
      "parents": [
        "88a23f2f70222459f057ec8a6bbe8eccc8a7b549"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Fri Feb 01 18:45:05 2013 -0800"
      },
      "committer": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Fri Feb 01 18:47:22 2013 -0800"
      },
      "message": "LocationManagerService: Add debug flag lookup from properties\n\nInstead of hardcoding true/false in the code:\n setprop log.LocationManagerService DEBUG\nworks just fine. Or the reboot-proof version in userdebug/eng builds:\ncat \u003e /data/local.prop \u003c\u003ceof\nlog.tag.LocationManagerService\u003dDEBUG\neof\n\nChange-Id: If4efad1c3adc401c0cb5d1a3cc449b53224ead08\n"
    },
    {
      "commit": "923bd98f67d36cbafa58941fce5952fafd09de4b",
      "tree": "6bb02001d54805c4881b85c7b11526c56fc8a086",
      "parents": [
        "4843993e6fbe6429221cd0e9ed72861f5cff46cf",
        "cd7a17c645761ac0b64c75346b159dd30cbcb01c"
      ],
      "author": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Sat Feb 02 01:56:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 02 01:56:49 2013 +0000"
      },
      "message": "Merge \"UsbDebuggingManager: Add interface to clear secure adb keys\""
    },
    {
      "commit": "03cdd3d275499df3ef1059905899dcc5aaf2ab01",
      "tree": "92b7d65eb267d61d621696a431fa83277139e691",
      "parents": [
        "f48a2d30c5d5f7c167310ff9ca1cd2310121be7c"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Fri Feb 01 15:15:54 2013 -0800"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Fri Feb 01 16:00:20 2013 -0800"
      },
      "message": "dual-mode switching single/multiuser ServiceWatcher\n\nThis changelist revises LocationManager\u0027s previous multiuser system.\n\nLocation provider services that are not multiuser-aware continue to\nrun as before: ServiceWatcher binds to location provider services as\nthe current active user. When the device switches from one user to\nanother, ServiceWatcher unbinds from the old user\u0027s location provider\nservice and binds to the new user\u0027s instance.\n\nNow, location provider services that are multiuser-aware or\nuser-agnostic can declare \"serviceIsMultiuser\" metadata in their\nAndroidManifest.xml to prevent ServiceWatcher from performing this\nswitching. These services will run as singleton services and will be\nexpected to handle user switches on their own.\n\nWith this feature in, I was able to switch FusedLocationProvider to\nrun in multiuser mode, sharing the system_server process instead of\nrunning in its own process. The NetworkLocationProvider is unchanged,\nstill running in singleuser mode, cheerfully oblivious to the\npossibility that there might be any user on the device besides the\none it services.\n\nBug: 8028045\nChange-Id: I1a5bd032918419bab6edb46c62ff8c6811170654\n"
    },
    {
      "commit": "1782468c8867292995cf4199afa6e8e7ae118bef",
      "tree": "d1ee633f0005dbc4ffad5f2603ed95e357d16244",
      "parents": [
        "f265ea9d8307282ff1da3915978625a94fc2859e",
        "03ce76081c29ecd30697fbb827ed45444b4a5f38"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Feb 01 23:31:31 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 23:31:48 2013 +0000"
      },
      "message": "Merge \"EntropyMixer: add ro.build.fingerprint to the mix\""
    },
    {
      "commit": "03ce76081c29ecd30697fbb827ed45444b4a5f38",
      "tree": "577f70bb021baf0cba30c7195bfee896ebca884a",
      "parents": [
        "1b0e29aec6a9401c224f3fa3a5e05abc487e2e79"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Feb 01 15:21:50 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Feb 01 15:21:50 2013 -0800"
      },
      "message": "EntropyMixer: add ro.build.fingerprint to the mix\n\nChange-Id: I001d337f61fef9667dd3289461bbafe574652232\n"
    },
    {
      "commit": "f265ea9d8307282ff1da3915978625a94fc2859e",
      "tree": "4e92b5de30239c1808a395cb49c9b17fe28ccffb",
      "parents": [
        "7a4ecc957d437ad4914988edc7593570f1e43f79"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 31 15:00:51 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 01 15:14:29 2013 -0800"
      },
      "message": "App ops: vibration, neighboring cells, dialing, etc.\n\nImprove handling of vibration op, so that apps are\nbetter blamed (there is now a hidden vibrator API that\nsupplies the app to blame, and the system now uses this\nwhen vibrating on behalf of an app).\n\nAdd operation for retrieving neighboring cell information.\n\nAdd a new op for calling a phone number.  This required\nplumbing information about the launching package name through\nthe activity manager, which required changing the internal\nstartActivity class, which required hitting a ton of code that\nuses those internal APIs.\n\nChange-Id: I3f8015634fdb296558f07fe654fb8d53e5c94d07\n"
    },
    {
      "commit": "447d94684ee73046d769649d8247aacd581bd6e3",
      "tree": "e06e136d19aee8777457233c7994c4b5c4b9c365",
      "parents": [
        "0214f205f619ebc23b5069880afdb09259b0ced7"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 01 19:46:20 2013 +0000"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 01 12:24:42 2013 -0800"
      },
      "message": "\"Fixing backwards cmpatibility for enabling explore by touch\"\"\n\nThis reverts commit d1ed3cea37e4156eab14b7dc8207a520c9eab700\n\nChange-Id: I622ef034526f8f006a5a233e72487b062020e4f6\n"
    },
    {
      "commit": "0214f205f619ebc23b5069880afdb09259b0ced7",
      "tree": "0d7638b896b38de4c06a73655c447cc3fea4daec",
      "parents": [
        "9b4a2858bdd206d67d77c80b383bfd776dc88e71",
        "d1ed3cea37e4156eab14b7dc8207a520c9eab700"
      ],
      "author": {
        "name": "Mike Cleron",
        "email": "mcleron@google.com",
        "time": "Fri Feb 01 18:57:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 18:57:23 2013 +0000"
      },
      "message": "Merge \"Revert \"Fixing backwards cmpatibility for enabling explore by touch\"\""
    },
    {
      "commit": "d1ed3cea37e4156eab14b7dc8207a520c9eab700",
      "tree": "cdc028be2b0ce578141384b6fe5c3b1b457ce078",
      "parents": [
        "0a9c7c144671f70f5f1af222050bd3ec6b11fe41"
      ],
      "author": {
        "name": "Mike Cleron",
        "email": "mcleron@google.com",
        "time": "Fri Feb 01 18:36:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 18:36:41 2013 +0000"
      },
      "message": "Revert \"Fixing backwards cmpatibility for enabling explore by touch\"\n\nThis reverts commit 0a9c7c144671f70f5f1af222050bd3ec6b11fe41\n\nChange-Id: I8da530a6d0a57163522d5a63326e787a8d22ecbf\n"
    },
    {
      "commit": "4a900acdef4559f9f84ca7e2bce45485215fc130",
      "tree": "d347a3b48ddbcc137c68db83cc9d1d358a2169e1",
      "parents": [
        "97273d50ce5b5689a1c787ebfed2ba3927de085a"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Jan 30 14:04:10 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Feb 01 13:26:17 2013 -0500"
      },
      "message": "Migrate package notification restrictions to AppOps.\n\nChange-Id: I23064ce3014d2446d009bbdff92b301280e8b989\n"
    },
    {
      "commit": "97273d50ce5b5689a1c787ebfed2ba3927de085a",
      "tree": "f395b1d5fc19604326a4531dffe5b3ff17fba995",
      "parents": [
        "c580168011334db756f5e68aa005d20bace69171",
        "0a9c7c144671f70f5f1af222050bd3ec6b11fe41"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 01 08:53:10 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 08:53:24 2013 +0000"
      },
      "message": "Merge \"Fixing backwards cmpatibility for enabling explore by touch\""
    },
    {
      "commit": "0a9c7c144671f70f5f1af222050bd3ec6b11fe41",
      "tree": "9f2062e418e4427a22a70d00f127046b87202704",
      "parents": [
        "0ec0418c6eac5076774a74855725d9df53141907"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 01 00:47:29 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 01 00:47:29 2013 -0800"
      },
      "message": "Fixing backwards cmpatibility for enabling explore by touch\n\nChange-Id: I8cbc4f03223d289547e3f3f6d1f528ad5b4f6f72\n"
    },
    {
      "commit": "d4b1d9cf9cee4bd4f234e30069996dc7e449f0e7",
      "tree": "df5fe22e7235676504fd57ef33103192c60f4a39",
      "parents": [
        "f48a2d30c5d5f7c167310ff9ca1cd2310121be7c",
        "78a4c718e30b6af69fafa6c017af3b2719868631"
      ],
      "author": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Thu Jan 31 19:24:40 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 31 19:24:42 2013 +0000"
      },
      "message": "Merge changes I4859c8db,I7643024d\n\n* changes:\n  Add the TZInfo updater and relevant intent.\n  Fix ConfigUpdater for binary files.\n"
    },
    {
      "commit": "f48a2d30c5d5f7c167310ff9ca1cd2310121be7c",
      "tree": "1ea858e5f14a80afcc4d9b58ca5c6f6c8ca0b09e",
      "parents": [
        "ec695824af7ab263eaae613b87f2c0b24f176f91",
        "7c51284d8019ed04ab296be84839d8a90ac042fa"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jan 31 07:53:43 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 31 07:53:43 2013 +0000"
      },
      "message": "Merge \"Add accessibility actions for text editing.\""
    },
    {
      "commit": "7c51284d8019ed04ab296be84839d8a90ac042fa",
      "tree": "54a952cca4a44f64918ecdcbd4f5c7f2f778f7c6",
      "parents": [
        "8c47e856b067057b5fcbb6eccfc79d1da4cff8f1"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jan 30 23:02:08 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jan 30 23:47:17 2013 -0800"
      },
      "message": "Add accessibility actions for text editing.\n\nCurrently text editing is pretty hard (certain operations even\nimpossible) for a blind person. To address the issue this change\nadds APIs that enable an accessibility service to perform basic\ntext editing operations such as copy, paste, cut, set selection,\nextend selection while moving at a given granularity.\n\nThe new APIs enable an accessibility service to expose a gesture\ndriven efficient text editing facility.\n\nbug:8098384\n\nChange-Id: I82b200138a3fdf4c0c316b774fc08a096ced29d0\n"
    },
    {
      "commit": "ec695824af7ab263eaae613b87f2c0b24f176f91",
      "tree": "6bd7205d726a1bdc98023002914559bc0c3d6141",
      "parents": [
        "c5401d4451dfb5edb627a35c1d3ad90cbcef77a1",
        "3822896e226567c6cd3ef84518d318abd33a7624"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jan 31 03:16:59 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 31 03:16:59 2013 +0000"
      },
      "message": "Merge \"Remove \"enhance web scripts\" from settings and make it requested by plug-ins.\""
    },
    {
      "commit": "78a4c718e30b6af69fafa6c017af3b2719868631",
      "tree": "b3ceb86141263f564bfe046db955fbed516609e6",
      "parents": [
        "ad462d2d1652eb9940aa95d1c4d757734aef508b"
      ],
      "author": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Wed Jan 30 11:20:26 2013 -0800"
      },
      "committer": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Wed Jan 30 17:11:44 2013 -0800"
      },
      "message": "Add the TZInfo updater and relevant intent.\n\nAlso add a hook for ConfigUpdateInstallReciever subclasses to\nchange the delivery of data- in this case, from raw text to\nb64 encoded binary.\n\nChange-Id: I4859c8db1cc97c2427310a108b2fef03975df2b4\n"
    },
    {
      "commit": "75d880dfb0bb1342bce0b0337c7ae752d75ff1b6",
      "tree": "cbb65ae87771ae5749e62966a04700b699598f72",
      "parents": [
        "984add522ed1b2ce351fc2ee5a9d478d9ee9312f",
        "5b7573e8352d945572a92b364e709bce5a9b7860"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Jan 31 00:32:36 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 31 00:32:36 2013 +0000"
      },
      "message": "Merge \"Revert \"Clean up published network condition reporting.\"\""
    },
    {
      "commit": "5b7573e8352d945572a92b364e709bce5a9b7860",
      "tree": "93547179c8847f8d16fe051b2deae8f462327903",
      "parents": [
        "82413d0b2acad73b9a008e0c53392a54f9555cf8"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Jan 31 00:30:13 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 31 00:30:13 2013 +0000"
      },
      "message": "Revert \"Clean up published network condition reporting.\"\n\nIn some cases causes grey ICON\u0027s.\n\nThis reverts commit 82413d0b2acad73b9a008e0c53392a54f9555cf8\n\nChange-Id: I09f893d03651c3fb9fcb88ee9e5ac7ce6cb6e273\n"
    },
    {
      "commit": "ad462d2d1652eb9940aa95d1c4d757734aef508b",
      "tree": "b8cbd6172a8aa8bd2268f3f7423ac337eab0a9c2",
      "parents": [
        "90a318aadc68e4cd650064af1cca43664d46eeee"
      ],
      "author": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Wed Jan 30 11:19:54 2013 -0800"
      },
      "committer": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Wed Jan 30 11:26:49 2013 -0800"
      },
      "message": "Fix ConfigUpdater for binary files.\n\nChange-Id: I7643024d5d59dcb6c867ad80d32e24e8da83ba0d\n"
    },
    {
      "commit": "da01da176d4798d293c90d6280ddc59c780baaa3",
      "tree": "f02457ba35c612de390b0c40968c8336a485e592",
      "parents": [
        "f5f8502271b04d63c518e3aecfd5eaf557904e72",
        "f1367b7e903a2a69a8f833bb272e91d77abd57c6"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Wed Jan 30 02:41:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 30 02:41:47 2013 +0000"
      },
      "message": "Merge \"Do not turn on imes unexpectedly with unit tests\""
    },
    {
      "commit": "d4d9364019ed071509213b9ce772f4a5904d2847",
      "tree": "e1b998350f4dcf680c1c981ca019acad6793e4d2",
      "parents": [
        "e8ae8b8982da37ca77bbaed8e98349d51dec824a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 29 16:12:48 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 29 16:12:48 2013 -0800"
      },
      "message": "Maybe fix build.\n\nChange-Id: Ibad8edb15e7cc332d6c29958a386d32a96f4e755\n"
    },
    {
      "commit": "7f54ffd0296ce6008b5ea949796e60248a85e2d8",
      "tree": "d47c55d8bf290d6624b5a19fcba6df42b6cc4478",
      "parents": [
        "6fc736971a66eb4b461931a5e972d51b65bfa68f",
        "8a2ed1d7c0c4f6476e39cc37d9ebd29c7562ce01"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 29 23:42:11 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 29 23:43:20 2013 +0000"
      },
      "message": "Merge \"Improve configuration of default preferred apps.\""
    },
    {
      "commit": "8a2ed1d7c0c4f6476e39cc37d9ebd29c7562ce01",
      "tree": "7e05d0d286de56965fcb0ead8c27bd568f26bbe9",
      "parents": [
        "93f770b59fa1bd0f2a5c18fcfaffd2a1fc54f585"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 29 15:18:29 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 29 15:18:29 2013 -0800"
      },
      "message": "Improve configuration of default preferred apps.\n\nThe file that defines default preferred apps is now more\nrobust.  It is no longer a raw dump of the package\nmanager settings, but instead a more general list of a\ntarget activity and filter.  When reading it, the remaining\ninformation (match value, set of potential matches) is\ndetermined dynamically.\n\nChange-Id: I0edc6e0d2ed3dd2a6e2238992f18f7fc1f51d8d4\n"
    },
    {
      "commit": "3822896e226567c6cd3ef84518d318abd33a7624",
      "tree": "6e755134d69f6b6ecac12d0ee949124e42ed43a3",
      "parents": [
        "8c47e856b067057b5fcbb6eccfc79d1da4cff8f1"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 29 01:04:35 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 29 13:56:22 2013 -0800"
      },
      "message": "Remove \"enhance web scripts\" from settings and make it requested by plug-ins.\n\nCurrently we have an \"enhance web accessibility\" setting that has to be\nenabled to make sure web content is accessible. We added the setting to\nget user consent because we are injecting JavaScript-based screen-reader\npulled from the Google infrastructure. However, many users do not know\nthat and (as expected) do not read the user documentation, resulting in\ncritique for lacking accessibility support in WebViews with JavaScript\nenabled (Browser, Gmail, etc).\n\nTo smoothen the user experience now \"enhance web accessibility\" is a\nfeature an accessibility plug-in can request, similarly to explore by\ntouch. Now a user does not need to know that she has to explicitly\nenable the setting and web accessibility will work out-of-the-box.\n\nBefore we were showing a dialog when a plug-in tries to put the device\nin a touch exploration mode. However, now that we have one more feature\na plug-in can request, showing two dialogs (assume a plug-in wants both\nfeatures) will mean that a user should potentially deal with three\ndialogs, one for enabling the service, and one for each feature. We\ncould merge the dialogs but still the user has to poke two dialogs.\n\nIt seems that the permission mechanism is a perfect fit for getting\nuser permission for an app to do something, in this case to enable\nan accessibility feature. We need a separate permission for explore\nby touch and enhance web accessibility since the former changes the\ninteraction model and the latter injects JavaScript in web pages. It\nis critical to get user consent for the script injection part so we\nneed a well-documented permission rather a vague umbrella permission\nfor poking accessibility features. To allow better grouping of the\naccessibility permissions this patch adds a permission group as well.\n\nbug:8089372\n\nChange-Id: Ic125514c34f191aea0416a469e4b3481ab3200b9\n"
    },
    {
      "commit": "91488eed1745ea0426a73306f133e02d62580f1a",
      "tree": "3a7bc2fd2bc7d192c87c9740029ea3a8fd4d6a94",
      "parents": [
        "d0fd54648ca6249f56cf469c57181b5a7bbb71d0",
        "f7e50993edfbbe4bc84e60cea84d18b935d0ad0d"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 29 03:19:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 29 03:21:12 2013 +0000"
      },
      "message": "Merge changes Ie674e8b2,I0b9448c8\n\n* changes:\n  AccessibilityNodeINfo cache not cleared when accessibility is disabled.\n  Display magnifier does not release its surface on destroy.\n"
    },
    {
      "commit": "d0fd54648ca6249f56cf469c57181b5a7bbb71d0",
      "tree": "4c710f5a98e913d87290a312b89a46370847ed60",
      "parents": [
        "5924dc4d7a42d04011d2e67aa3f9e28b7d940681",
        "80943d8daa6ab31ab5c486d57aea406aa0730d58"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 29 03:16:40 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 29 03:16:40 2013 +0000"
      },
      "message": "Merge \"Adding UI test automation APIs.\""
    },
    {
      "commit": "cd7a17c645761ac0b64c75346b159dd30cbcb01c",
      "tree": "6448cea70f29002a373b40cd101e06e760ae865f",
      "parents": [
        "5924dc4d7a42d04011d2e67aa3f9e28b7d940681"
      ],
      "author": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Fri Dec 21 16:44:50 2012 -0800"
      },
      "committer": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Mon Jan 28 19:15:30 2013 -0800"
      },
      "message": "UsbDebuggingManager: Add interface to clear secure adb keys\n\nThis is called from Settings that has a button to clear secure\nadb public keys installed on the device.\n\nChange-Id: I63ef499c049766ef13ea6cb0594ed6719f35e5f3\n"
    },
    {
      "commit": "4daf9b1ba5d898ac874197543dbd949360edcc45",
      "tree": "b1895be0b706874d0336b95229c5bd2f0f7a55f2",
      "parents": [
        "5988335aacdbea5b60b597fa2c52583bc655e30f",
        "78a9687fc2eab03b9d764cd27eaa1d56c66960be"
      ],
      "author": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Tue Jan 29 02:33:27 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 29 02:33:44 2013 +0000"
      },
      "message": "Merge \"UsbDeviceManager: Don\u0027t start UsbDebuggingManager when data is encrypted\""
    },
    {
      "commit": "93f770b59fa1bd0f2a5c18fcfaffd2a1fc54f585",
      "tree": "e0f65902782d568b864500a672ab653149b77224",
      "parents": [
        "96bf00fe92d824b1da4619b875ed779ed283d11d",
        "0798149082a22ac16ee1d44ee88779716cb96784"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jan 28 20:35:47 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 28 20:36:59 2013 +0000"
      },
      "message": "Merge \"Fix bug where we could get stuck repeatedly launching an activity.\""
    },
    {
      "commit": "0798149082a22ac16ee1d44ee88779716cb96784",
      "tree": "d796ad5febcdd2475701c9dec79303f17b4ed436",
      "parents": [
        "b9781fe08c5b1afba086857aa18b46862550ae88"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jan 28 11:36:23 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jan 28 11:38:26 2013 -0800"
      },
      "message": "Fix bug where we could get stuck repeatedly launching an activity.\n\nA previous change to avoid losing activities if their process\nhappens to be gone at the point of launch (by counting that\nactivity as having its state saved) has resulted in a problem\nwhere an activity that crashes during launch will be repeatedly\nrelaunched.\n\nThis is fixed here by explicitly keeping track of our attempts\nto launch the activity since it was last able to save its state,\nand not keeping it around if it looks like the launch is\nrepeatedly failing.\n\nChange-Id: Icefd952443b7eb1222f233db95e0157fc3dd72d1\n"
    },
    {
      "commit": "de07d41f6396f9f040fed2b6780932d8e5dbb482",
      "tree": "9ffe4379de57a1630ca6d7043e860bfac30f27da",
      "parents": [
        "e6a6d83845d40526cab2d91d0c92b32d4267f5e1",
        "54ca7aef2e12b240caa6fb1a1e65abd234bea337"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Mon Jan 28 17:07:39 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 28 17:07:39 2013 +0000"
      },
      "message": "Merge \"Annotate Locations coming from mock providers\""
    },
    {
      "commit": "f1367b7e903a2a69a8f833bb272e91d77abd57c6",
      "tree": "dd09abe39190b51206928704efa2dcdd9b40ae70",
      "parents": [
        "526603b1d8404432256b03507187f50c6b21b31d"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Fri Jan 25 17:20:12 2013 +0900"
      },
      "committer": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Mon Jan 28 19:25:55 2013 +0900"
      },
      "message": "Do not turn on imes unexpectedly with unit tests\n\nBug: 7872918\n\nChange-Id: Ie1d74c9fac27de140e7aa85f2eaefcb89aa06ea7\n"
    },
    {
      "commit": "78a9687fc2eab03b9d764cd27eaa1d56c66960be",
      "tree": "e318b9bfa639e9fbf1ca0fa2893a22118f020a4c",
      "parents": [
        "b9781fe08c5b1afba086857aa18b46862550ae88"
      ],
      "author": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Fri Jan 25 16:58:13 2013 -0800"
      },
      "committer": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Fri Jan 25 16:58:13 2013 -0800"
      },
      "message": "UsbDeviceManager: Don\u0027t start UsbDebuggingManager when data is encrypted\n\nThis avoids showing the confirmation dialog from the decryption screen\n\nBug: 8019508\nChange-Id: I7ff364437f6b8aeea26fa8308aa4fe35b7ede5d7\n"
    },
    {
      "commit": "b9781fe08c5b1afba086857aa18b46862550ae88",
      "tree": "844f0c2260640afb4245acf91a11ed88aa85cb57",
      "parents": [
        "1c2df38242c29cd7f359a6fb13dc13b387264310",
        "5e45ee6752528791deb66b83d76250685de15d47"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jan 25 19:32:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 25 19:33:11 2013 +0000"
      },
      "message": "Merge \"App ops: you can now turn off operations.\""
    },
    {
      "commit": "5e45ee6752528791deb66b83d76250685de15d47",
      "tree": "d60220c4aa9feae8b5b3a45946b88f46865ab5ff",
      "parents": [
        "d8ba6cc9217e2e042106870e9d2e70cfd80426d6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 24 19:13:44 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jan 25 11:25:48 2013 -0800"
      },
      "message": "App ops: you can now turn off operations.\n\nAlso add new ops for calendar and wi-fi scans, finish\nimplementing rejection of content provider calls, fix\nissues with rejecting location calls, fix bug in the\nnew pm call to retrieve apps with permissions.\n\nChange-Id: I29d9f8600bfbbf6561abf6d491907e2bbf6af417\n"
    },
    {
      "commit": "377fc095e142b160b5093ed1d3717d0b18aff0f9",
      "tree": "1ca3e0cca27b21397b0b5b35ee8e2eb9cf88191a",
      "parents": [
        "de71ce1ab3cda6030b5838f4cadb4fe974d522c2",
        "7b5aeca50b3069b1f8bd4db0317a3829c4b540a2"
      ],
      "author": {
        "name": "Laurent Tu",
        "email": "laurentt@google.com",
        "time": "Thu Jan 24 23:42:03 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 24 23:42:03 2013 +0000"
      },
      "message": "Merge \"Fix GpsLocationProvider.enable/disable/isEnabled\""
    },
    {
      "commit": "7b5aeca50b3069b1f8bd4db0317a3829c4b540a2",
      "tree": "dc55c2f8ef45200acdc09d75164a21c2f226e107",
      "parents": [
        "00dcbf8f58c36e3e8803336aa947a333411f43d0"
      ],
      "author": {
        "name": "Laurent Tu",
        "email": "laurentt@google.com",
        "time": "Thu Jan 24 15:10:24 2013 -0800"
      },
      "committer": {
        "name": "Laurent Tu",
        "email": "laurentt@google.com",
        "time": "Thu Jan 24 15:26:02 2013 -0800"
      },
      "message": "Fix GpsLocationProvider.enable/disable/isEnabled\n\nFix the issue where GpsLocationProvider.isEnabled() returns true when it\nis really false (and the other way around), when the handler hasn\u0027t\nprocessed the enable/disable messages yet.\n\nThis can be systematically reproduced when the caller code is using the\nsame thread as the thread of the handler in GpsLocationProvider.\n\nFor example, this was happening in LocationManagerService.switchUser().\nIt would start by disabling all the providers (with\nupdateProviderListenersLocked()), then re-enable them in\nupdateProvidersLocked() only when isEnalbed()\u003d\u003dfalse, which was in the\nwrong state since the GpsLocationProvider.ENABLE message hadn\u0027t been\nprocessed yet. As a result, the GpsLocationProvider was disabled upon\nstartup of the phone.\n\nThis is a slight problem for the enable() contract, which specifies that\ngetStatus() must be handled, getStatus() will be handled but might have\nslighty not-up-to-date info in this case.\n\nBug: 8028017\n\nChange-Id: Iff91a11cc150e9029a6db85b64a10a926e12b0ba\n"
    },
    {
      "commit": "d8ba6cc9217e2e042106870e9d2e70cfd80426d6",
      "tree": "005a8e898ee1a6561ad80294ec0306fb4e23b830",
      "parents": [
        "51ff575d1bd0337a68ae173ee699ff8298ddb703",
        "f9c5e0fe837a3090820da502ecaabc5accc00ace"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 23 22:47:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 23 22:47:57 2013 +0000"
      },
      "message": "Merge \"Add new API to propagate contextual data to the assist action\""
    },
    {
      "commit": "51ff575d1bd0337a68ae173ee699ff8298ddb703",
      "tree": "0e423b22a15483c44dcc7800860c855d1cbc61b1",
      "parents": [
        "846dda3fa7a194b57acdb977e443c93c7cddcea1",
        "c4d27a7d55760d7897352906abe1e2c579283f5e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 23 22:45:51 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 23 22:46:01 2013 +0000"
      },
      "message": "Merge \"Fix issue #7649720: ANR occur when OTA with lower version...\""
    },
    {
      "commit": "846dda3fa7a194b57acdb977e443c93c7cddcea1",
      "tree": "d924a9451f3be63d2b8bd5012933b4fef4419f36",
      "parents": [
        "00dcbf8f58c36e3e8803336aa947a333411f43d0",
        "fd7adedebf88427162a3ce27fcc9cfd3893c869d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 23 22:43:11 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 23 22:43:11 2013 +0000"
      },
      "message": "Merge \"Add new disabled state for \"optional\" built-in apps.\""
    },
    {
      "commit": "f9c5e0fe837a3090820da502ecaabc5accc00ace",
      "tree": "bbc72079c958f69d9906f4a4ae803dd88fcf8083",
      "parents": [
        "cc7433470f00fac3bbe7835de3ded4b9bf121244"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 23 14:39:13 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 23 14:39:13 2013 -0800"
      },
      "message": "Add new API to propagate contextual data to the assist action\n\nWhen launching an assist, we have a new API allowing the\ncurrent foreground activity/application to provide additional\narbitrary contextual information that is stuffed in the\nassist intent before it is launched.\n\nChange-Id: I0b2a6f5a266dc42cc0175327fa76774f814af3b4\n"
    },
    {
      "commit": "c4d27a7d55760d7897352906abe1e2c579283f5e",
      "tree": "ccdce74d424b7dbaa8efedb5ab3062758d2b7662",
      "parents": [
        "cc7433470f00fac3bbe7835de3ded4b9bf121244"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 22 18:30:17 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 22 18:30:17 2013 -0800"
      },
      "message": "Fix issue #7649720: ANR occur when OTA with lower version...\n\n...of Play Store is included\n\nThe issue is that the name of the play store apk on the system\nimage has changed, and the package manager has a bug when this\nhappens and it is being hidden by an updated version of the\napplication that is still a newer version.  In this case it\ndoesn\u0027t do the normal scan of the system apk, but just leaves\nits old disabled state.  However if the code path has changed,\nthis will trip up other code that thinks the system apk has\ndisappeared (since when it checks for the existence of the apk\nwith the stored code path, it doesn\u0027t find anything).\n\nThe fix here is to add a special case to make sure the code\npath is updated even if we are otherwise ignoring the hidden\nsystem image package data.\n\nChange-Id: Ic5118f94c078da7a30b53b9cadf7c9844f7ba866\n"
    },
    {
      "commit": "cb9a61bdc40b9215e614ea26df6bb58e2de7d764",
      "tree": "bf1de5d6bd22a29d74fc5a997b6eaf2f5ec4c3f2",
      "parents": [
        "80943d8daa6ab31ab5c486d57aea406aa0730d58"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 22 18:11:42 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 22 18:11:42 2013 -0800"
      },
      "message": "Display magnifier does not release its surface on destroy.\n\nChange-Id: I0b9448c8859b0167632652060b08072dc8c9c0a5\n"
    },
    {
      "commit": "80943d8daa6ab31ab5c486d57aea406aa0730d58",
      "tree": "cb7738eff465941484aac3eb6ba15ba365aea576",
      "parents": [
        "64cae1a608c196c2bd1d9e7cfd2a1632fd0e5b83"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jan 02 10:25:37 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 22 17:56:53 2013 -0800"
      },
      "message": "Adding UI test automation APIs.\n\nThis change adds APIs support for implementing UI tests. Such tests do\nnot rely on internal application structure and can span across application\nboundaries. UI automation APIs are encapsulated in the UiAutomation object\nthat is provided by an Instrumentation object. It is initialized by the\nsystem and can be used for both introspecting the screen and performing\ninteractions simulating a user. UI test are normal instrumentation tests\nand are executed on the device.\n\nUiAutomation uses the accessibility APIs to introspect the screen and\na special delegate object to perform privileged operations such as\ninjecting input events. Since instrumentation tests are invoked by a shell\ncommand, the shell program launching the tests creates a delegate object and\npasses it as an argument to started instrumentation. This delegate\nallows the APK that runs the tests to access some privileged operations\nprotected by a signature level permissions which are explicitly granted\nto the shell user.\n\nThe UiAutomation object also supports running tests in the legacy way\nwhere the tests are run as a Java shell program. This enables existing\nUiAutomator tests to keep working while the new ones should be implemented\nusing the new APIs. The UiAutomation object exposes lower level APIs which\nallow simulation of arbitrary user interactions and writing complete UI test\ncases. Clients, such as UiAutomator, are encouraged to implement higher-\nlevel APIs which minimize development effort and can be used as a helper\nlibrary by the test developer.\n\nThe benefit of this change is decoupling UiAutomator from the system\nsince the former was calling hidden APIs which required that it is\nbundled in the system image. This prevented UiAutomator from being\nevolved separately from the system. Also UiAutomator was creating\nadditional API surface in the system image. Another benefit of the new\ndesign is that now test cases have access to a context and can use\npublic platform APIs in addition to the UiAutomator ones. Further,\nthird-parties can develop their own higher level test APIs on top\nof the lower level ones exposes by UiAutomation.\n\nbug:8028258\n\nAlso this change adds the fully qualified resource name of the view\u0027s\nid in the emitted AccessibilityNodeInfo if a special flag is set while\nconfiguring the accessibility service. Also added is API for looking\nup node infos by this id. The id resource name is relatively more stable\ncompared to the generaed id number which may change from one build to\nanother. This API facilitate reuing the already defined ids for UI\nautomation.\n\nbug:7678973\n\nChange-Id: I589ad14790320dec8a33095953926c2a2dd0228b\n"
    },
    {
      "commit": "fd7adedebf88427162a3ce27fcc9cfd3893c869d",
      "tree": "d9dfb04e5d0972a6ae7bf92431b0d48925e97b48",
      "parents": [
        "cc7433470f00fac3bbe7835de3ded4b9bf121244"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 22 17:10:23 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 22 17:10:23 2013 -0800"
      },
      "message": "Add new disabled state for \"optional\" built-in apps.\n\nThe disabled state allows you to make an app disabled\nexcept for whatever parts of the system still want to\nprovide access to them and automatically enable them\nif the user want to use it.\n\nCurrently the input method manager service is the only\npart of the system that supports this, so you can put\nan IME in this state and it will generally look disabled\nbut still be available in the IME list and once selected\nswitched to the enabled state.\n\nChange-Id: I77f01c70610d82ce9070d4aabbadec8ae2cff2a3\n"
    },
    {
      "commit": "172175fea9f2c1d2967b53944e33b2f03c021875",
      "tree": "1ee1629d2cb30eb2d54058b0c06c8cee48651bf5",
      "parents": [
        "806f133e418e65ad321950877ab9e9133b6a4a69",
        "05f1f0ece8f39e77c96825fb2e3451ebd388adad"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Jan 22 15:51:14 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 22 15:51:14 2013 -0800"
      },
      "message": "am 05f1f0ec: am 555b07df: am 2c64b539: am 596532d9: Properly initialize recognition service if the recognizer component changed.\n\n* commit \u002705f1f0ece8f39e77c96825fb2e3451ebd388adad\u0027:\n  Properly initialize recognition service if the recognizer component changed.\n"
    },
    {
      "commit": "05f1f0ece8f39e77c96825fb2e3451ebd388adad",
      "tree": "4860647575300552158bbe03aa71976489824337",
      "parents": [
        "58fb00025daa78360a3d033b223d15364d49086f",
        "555b07df08dd4c2472374d0767926ebab928dede"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Jan 22 15:48:10 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 22 15:48:10 2013 -0800"
      },
      "message": "am 555b07df: am 2c64b539: am 596532d9: Properly initialize recognition service if the recognizer component changed.\n\n* commit \u0027555b07df08dd4c2472374d0767926ebab928dede\u0027:\n  Properly initialize recognition service if the recognizer component changed.\n"
    },
    {
      "commit": "555b07df08dd4c2472374d0767926ebab928dede",
      "tree": "22b12944168677bcd43dc810bc18455d08abb395",
      "parents": [
        "fe88f1be3d197987a874f6c29fefdeb11db183f6",
        "2c64b53976a99f28bc7c0612648581f9b93bf8b0"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Jan 22 15:46:25 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 22 15:46:25 2013 -0800"
      },
      "message": "am 2c64b539: am 596532d9: Properly initialize recognition service if the recognizer component changed.\n\n* commit \u00272c64b53976a99f28bc7c0612648581f9b93bf8b0\u0027:\n  Properly initialize recognition service if the recognizer component changed.\n"
    },
    {
      "commit": "2c64b53976a99f28bc7c0612648581f9b93bf8b0",
      "tree": "60dcf119d719633677055cf8004d5b03e7ca39c6",
      "parents": [
        "3599f0a02129c238177806ce3d6db20853230d4d",
        "596532d9dbea3460dbc989b0316c721ca69f4915"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Jan 22 15:43:53 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 22 15:43:53 2013 -0800"
      },
      "message": "am 596532d9: Properly initialize recognition service if the recognizer component changed.\n\n* commit \u0027596532d9dbea3460dbc989b0316c721ca69f4915\u0027:\n  Properly initialize recognition service if the recognizer component changed.\n"
    },
    {
      "commit": "596532d9dbea3460dbc989b0316c721ca69f4915",
      "tree": "6d55cb09d7ab6342ab3e001cdabd2f9c613da324",
      "parents": [
        "0cf97d32178b689184866e731c0a4105d8223d80"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Jan 18 11:04:09 2013 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Jan 22 15:35:49 2013 -0800"
      },
      "message": "Properly initialize recognition service if the recognizer component changed.\n\nThe getServiceInfo() call directly to IPackageManager does not throw an exception.\nThe return value needed to be checked for null.\n\nBug: 8031032\nChange-Id: I701b9e8cf3b2406a3b35a486183330489b3d46f5\n"
    }
  ],
  "next": "54ca7aef2e12b240caa6fb1a1e65abd234bea337"
}
