)]}'
{
  "log": [
    {
      "commit": "fa25bf5382467b1018bd9af7f1cb30a23d7d59f7",
      "tree": "2b65e9c19319112d1873db55a02303a43d68547a",
      "parents": [
        "bbcb123d4923b0c2f36af7b2ade82f5d7832357d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 23 19:26:30 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 25 18:56:16 2012 -0700"
      },
      "message": "Add display manager skeleton.\n\nThe purpose of this change is to remove direct reliance on\nSurfaceFlinger for describing the size and characteristics of\ndisplays.\n\nThis patch also starts to make a distinction between logical displays\nand physical display devices.  Currently, the window manager owns\nthe concept of a logical display whereas the new display\nmanager owns the concept of a physical display device.\n\nChange-Id: I7e0761f83f033be6c06fd1041280c21500bcabc0\n"
    },
    {
      "commit": "0f42037eb7b5118015c2caca635538324ccf0ccf",
      "tree": "46a7ba36216a2cb617541ec68f18b413419e148f",
      "parents": [
        "919a4c6264b733585152ce1dc6f868c1093d368b"
      ],
      "author": {
        "name": "fredc",
        "email": "fredc@broadcom.com",
        "time": "Thu Apr 12 00:02:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 16 21:20:54 2012 -0700"
      },
      "message": "Non persistent adapter service\n\nChange-Id: Ib13d5c77416e58161df0e04d7a15ec0dddbde8b5\n\nConflicts:\n\n\tcore/java/android/bluetooth/BluetoothInputDevice.java\n\nConflicts:\n\n\tcore/java/com/android/internal/app/ShutdownThread.java\n\tservices/java/com/android/server/SystemServer.java\n\nConflicts:\n\n\tservices/java/com/android/server/SystemServer.java\n\tservices/java/com/android/server/pm/ShutdownThread.java\n"
    },
    {
      "commit": "13450df2b9264ef2220418f308037c19cec739a9",
      "tree": "e03bf038983d2266ef3208dc2cad6b12d809ea33",
      "parents": [
        "bf246ef0abb6ea354fe412b139dec1adb4e5791d"
      ],
      "author": {
        "name": "Matthew Xie",
        "email": "mattx@google.com",
        "time": "Thu Mar 22 17:18:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 16 21:18:56 2012 -0700"
      },
      "message": "Initial Health Profile implementation\n\nChange-Id: I22f35073ceb131d84df6b233d1b63d20fa1b4451\n"
    },
    {
      "commit": "bf246ef0abb6ea354fe412b139dec1adb4e5791d",
      "tree": "1ca63600ac278b55745d308bf6997e2153b9a841",
      "parents": [
        "db44b20fe6aed65d5cd7e1f6d7c52e4322083039"
      ],
      "author": {
        "name": "Matthew Xie",
        "email": "mattx@google.com",
        "time": "Wed Mar 21 23:15:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 16 21:18:36 2012 -0700"
      },
      "message": "Initial implementation of HID, add IBluetoothInputDevice idl\n\nChange-Id: Iadc79a425b4b6e12329d86dd2ac0782adcb0174d\n"
    },
    {
      "commit": "3e8c82edb1feafc796aa52efafedc13f794c4dcd",
      "tree": "028dd66d721e02b558aa185fe84d086b8a81f8f2",
      "parents": [
        "e21a4ac09d2473becaea43a73d19e9e836e7732a"
      ],
      "author": {
        "name": "Matthew Xie",
        "email": "mattx@google.com",
        "time": "Thu Feb 16 16:57:18 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 16 21:17:05 2012 -0700"
      },
      "message": "Framework changes for HFP and A2DP profile implementation of the new stack.\nAdd IBluetoothHeadsetPhone.aidl for a small service in Phone to get\nphone state changes\n\nChange-Id: I1015e4a69720c4e9cd18ae4236ccd0dbff2e1b2c\n"
    },
    {
      "commit": "c9c9a48e7bafae63cb35a9aa69255e80aba83988",
      "tree": "80295bae9e6546d9d7fb604af0fa772ebd18a4fc",
      "parents": [
        "dd0d0ba654cea3051e44ba9ae20ac4b269e123c0"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Jul 16 08:46:07 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Jul 16 08:46:11 2012 -0700"
      },
      "message": "Removing a workaround for incorrect window position on window move.\n\n1. The window manager was not notifying a window when the latter\n   has been moved. This was causing incorrect coordinates of the\n   nodes reported to accessibility services. To workaround that\n   we have carried the correct window location when making a\n   call from the accessibility layer into a window. Now the\n   window manager notifies the window when it is moved and the\n   workaround is no longer needed. This change takes it out.\n\n2. The left and right in the attach info were not updated properly\n   after a report that the window has moved.\n\n3. The accessibility manager service was calling directly methods\n   on the window manager service without going through the interface\n   of the latter. This leads to unnecessary coupling and in the\n   long rung increases system complexity and reduces maintability.\n\nbug:6623031\n\nChange-Id: Iacb734b1bf337a47fad02c827ece45bb2f53a79d\n"
    },
    {
      "commit": "a639b311e93ad14d9ee5c2b2c215ed2d86c32d2a",
      "tree": "8fc3e0698132d5fdba03726a1468fefa18dd2a02",
      "parents": [
        "64ab8fcd6f2011c0d185f2973b9615f155f6d239"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Tue Jul 10 12:37:54 2012 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Wed Jul 11 16:02:08 2012 -0700"
      },
      "message": "Create telephony-common and mms-common\n\nThese have been created to reduce the size and complexity\nof frameworks/base.\n\nmms-common was created by moving all of\n  frameworks/base/core/java/com/google/android/mms\nto:\n   frameworks/opt/mms\n\ntelephony-common was created by moving some of\n   frameworks/base/telephony\nto:\n   frameworks/opt/telephony\n\nChange-Id: If6cb3c6ff952767fc10210f923dc0e4b343cd4ad\n"
    },
    {
      "commit": "a2860267cad115659018d636bf9203a644c680a7",
      "tree": "2e18ce21e74445fc816236ae8c1a9592136eb169",
      "parents": [
        "4dd21c8e77c0d369ee835f50cba1701e76aa18c4"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Jun 21 21:20:42 2012 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Jun 21 21:20:42 2012 -0700"
      },
      "message": "update make file with \u0027since\u0027 tag for api level 16, update version number\n\nChange-Id: I30d04dcde5cd505959d94c274634018b3602cb26\n"
    },
    {
      "commit": "1357012968f9066ea3051d83995e9bac69526c3c",
      "tree": "3f633ea7356eb17d96bfc0f717ad9c38a35196fa",
      "parents": [
        "fe54cb6f3da7fe95d5141d97b0c6780e001ad058"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jun 19 14:03:09 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jun 19 19:41:35 2012 -0700"
      },
      "message": "Remote volume handling in MediaRouter\n\nExtend MediaRouter.UserRouteInfo to enable setting playback\n information, which includes volume. When the user route instance\n has a RemoteControlClient, forward any playback information to it.\n Enable specifying a callback to be notified of volume events\n on the route.\nExtend MediaRouter.RouteInfo to enable retrieving playback\n information.\n\nUpdate RemoteControlClient javadoc to reflect which parts of the\n API are not intended to be made public.\n\nChange-Id: I59d728eb61747af6c8c89d53f0faeb07940594c3\n"
    },
    {
      "commit": "632ca417f0a33e3fa9ccece531afa2db3f0d4a30",
      "tree": "57dc775032f1571f7c57697ab012e14bffd7bdd0",
      "parents": [
        "17b9cec1b6fedd0e54ff61f5a12f0e515add70ab"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 14 19:34:10 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 15 13:15:35 2012 -0700"
      },
      "message": "Add new callback for MediaRouter to found out about device changes.\n\nThe AudioService now has an API to call to get the currently\nconnected devices, and later reports of changes in connection\nstate.  The information includes the name of the bluetooth\ndevice if one is connected for display to the user, and states\nfor all of the pluggable devices.  No longer requires a Bluetooth\npermission to keep the routes updated.\n\nChange-Id: I81ca421c60592fbc1592477d59bf1c9d1b64954a\n"
    },
    {
      "commit": "7b1e0c7046abefc0b40884b36197c8a803d9cf6d",
      "tree": "65033ef86abd0146f183b8ed423081c057fa8a17",
      "parents": [
        "8d8176d41b8b8f08435e727f03e43e27a542dcc2"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Sun May 13 11:57:29 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Sun May 13 12:39:51 2012 -0700"
      },
      "message": "Removing default accessibility gesture handling.\n\n1. The initial design was to have some accessibility gestures\n   being handled by the system if the gesture handling access\n   service does not consume the gesture. However, we are not\n   sure what a good default is and once we add a default handler\n   we cannot remove it since people may rely on it. Thus, we\n   take the simples approach and let the accessibility service\n   handle the gestures. If no gestures are handled the system\n   will work in explore by touch as before.\n\nbug:5932640\n\nChange-Id: I865a83549fa03b0141d27ce9713e9b7bb45a57b4\n"
    },
    {
      "commit": "a7771df3696954f0e279407e8894a916a7cb26cc",
      "tree": "3615be79c515fad41808d2b84ac0221ba5a7e299",
      "parents": [
        "507f5586fb48f59f7b4f2fa0ca5387e4d4f2bd8d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 07 20:06:46 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 07 20:06:46 2012 -0700"
      },
      "message": "Move CancellationSignal to android.os package.\n\nBug: 6427830\nChange-Id: I39451bb1e1d4a8d976ed1c671234f0c8c61658dd\n"
    },
    {
      "commit": "098d580cc2bb6c0891c756a4e5230c6c6b0d2376",
      "tree": "bd5ae0f9e87a5516e8c481cebc54321272152491",
      "parents": [
        "f5d70fd2add31cdb2e4ca1e931b47db95fa4b3e0"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Apr 26 17:30:34 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 27 14:15:05 2012 -0700"
      },
      "message": "Migrate ringtone playback to SystemUI.\n\nIntroduce IRingtonePlayer, which handles playback for both Ringtone\nobjects and Notifications. SystemUI now hosts this player, which it\nregisters with AudioService. It also keeps MediaPlayer instances\nwarm, and cleans them up after stop() or Binder death.\n\nMove both Ringtone and NotificationManagerService to play back audio\nthrough this new interface.\n\nBug: 6376128, 6350773\nChange-Id: I1dcb86d16ee3c4f07cdb2248d33dcff4ead3609a\n"
    },
    {
      "commit": "07b0465095bd9ab3412caefa4fcacbdc3825c64b",
      "tree": "c69073a76d56a988b7574623dc54d2027e9dda37",
      "parents": [
        "f03f64d81036cb453345462714beb4298eac32a9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 15:00:43 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 09:53:14 2012 -0700"
      },
      "message": "Scheduling policy service\n\nChange-Id: I6178b96896ffbb3323210f93784a65d724a3e694\n"
    },
    {
      "commit": "fefd20e927b7252d63acb7bb1852c5188e3c1b2e",
      "tree": "1c61fca48a8221e93aa14f16da9881560be69313",
      "parents": [
        "749e796eb3a42e21613a3b360000373601a8f50d"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 19 21:44:35 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 19 22:08:42 2012 -0700"
      },
      "message": "Adding an opt-in mechanism for gesture detection in AccessibilityService.\n\n1. An accessibility service has to explicitly opt in to be notified\n   for gestures by the system. There is only one accessibility service\n   that handles gestures and in case it does not handle a gesture\n   the system performs default handling. This default handling ensures\n   that we have gesture navigation even if no accessibility service\n   would like to participate/customize the interaction model.\n\nbug:5932640\n\nChange-Id: Id8194293bd94097b455e9388b68134a45dc3b8fa\n"
    },
    {
      "commit": "571db3203c0d47f0b612f194ecfb5bef9d2c09c6",
      "tree": "08cd61ee9953eb258b7a690b071da397f3e3eaa4",
      "parents": [
        "70544533aec6b318ff1687c9eec0cb9e86ce1b1a"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Mon Apr 16 10:13:59 2012 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Mon Apr 16 18:23:19 2012 -0700"
      },
      "message": "Build junit API docs from external/junit.\n\nBug 5826326\n\nChange-Id: I67d18cacf0c4e908ec41dbed483314ece8b72ceb\n"
    },
    {
      "commit": "4213804541a8b05cd0587b138a2fd9a3b7fd9350",
      "tree": "6b19718ddbc60229cd4f2e059feea8021225c5e6",
      "parents": [
        "dbed083ff07f4e6fa727ea22cdd7d758291630c1"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Mar 20 11:51:39 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 13 19:05:24 2012 -0700"
      },
      "message": "Accessibility focus - framework\n\nUsefulness: Keep track of the current user location in the screen when\n            traversing the it. Enabling structural and directional\n            navigation over all elements on the screen. This enables\n            blind users that know the application layout to efficiently\n            locate desired elements as opposed to try touch exploring the\n            region where the the element should be - very tedious.\n\nRationale: There are two ways to implement accessibility focus One is\n           to let accessibility services keep track of it since they\n           have access to the screen content, and another to let the view\n           hierarchy keep track of it. While the first approach would\n           require almost no work on our part it poses several challenges\n           which make it a sub-optimal choice. Having the accessibility focus\n           in the accessibility service would require that service to scrape\n           the window content every time it changes to sync the view tree\n           state and the accessibility focus location. Pretty much the service\n           will have to keep an off screen model of the screen content. This\n           could be quite challenging to get right and would incur performance\n           cost for the multiple IPCs to repeatedly fetch the screen content.\n           Further, keeping virtual accessibility focus (i.e. in the service)\n           would require sync of the input and accessibility focus. This could\n           be challenging to implement right as well. Also, having an unlimited\n           number of accessibility services we cannot guarantee that they will\n           have a proper implementation, if any, to allow users to perform structural\n           navigation of the screen content. Assuming two accessibility\n           services implement structural navigation via accessibility focus,\n           there is not guarantee that they will behave similarly by default,\n           i.e. provide some standard way to navigate the screen content.\n           Also feedback from experienced accessibility researchers, specifically\n           T.V Raman, provides evidence that having virtual accessibility focus\n           creates many issues and it is very hard to get right.\n           Therefore, keeping accessibility focus in the system will avoid\n           keeping an off-screen model in accessibility services, it will always\n           be in sync with the state of the view hierarchy and the input focus.\n           Also this will allow having a default behavior for traversing the\n           screen via this accessibility focus that is consistent in all\n           accessibility services. We provide accessibility services with APIs to\n           override this behavior but all of them will perform screen traversal\n           in a consistent way by default.\n\nBehavior:  If accessibility is enabled the accessibility focus is the leading one\n           and the input follows it. Putting accessibility focus on a view moves\n           the input focus there. Clearing the accessibility focus of a view, clears\n           the input focus of this view. If accessibility focus is on a view that\n           cannot take input focus, then no other view should have input focus.\n           In accessibility mode we initially give accessibility focus to the topmost\n           view and no view has input focus. This ensures consistent behavior accross\n           all apps. Note that accessibility focus can move hierarchically in the\n           view tree and having it at the root is better than putting it where the\n           input focus would be - at the first input focusable which could be at\n           an arbitrary depth in the view tree. By default not all views are reported\n           for accessibility, only the important ones. A view may be explicitly labeled\n           as important or not for accessibility, or the system determines which one\n           is such - default. Important views for accessibility are all views that are\n           not dumb layout managers used only to arrange their chidren. Since the same\n           content arrangement can be obtained via different combintation of layout\n           managers, such managers cannot be used to reliably determine the application\n           structure. For example, a user should see a list as a list view with several\n           list items and each list item as a text view and a button as opposed to seeing\n           all the layout managers used to arrange the list item\u0027s content.\n           By default only important for accessibility views are regared for accessibility\n           purposes. View not regarded for accessibility neither fire accessibility events,\n           nor are reported being on the screen. An accessibility service may request the\n           system to regard all views. If the target SDK of an accessibility services is\n           less than JellyBean, then all views are regarded for accessibility.\n           Note that an accessibility service that requires all view to be ragarded for\n           accessibility may put accessibility focus on any view. Hence, it may implement\n           any navigational paradigm if desired. Especially considering the fact that\n           the system is detecting some standard gestures and delegates their processing\n           to an accessibility service. The default implementation of an accessibility\n           services performs the defualt navigation.\n\nbug:5932640\nbug:5605641\n\nChange-Id: Ieac461d480579d706a847b9325720cb254736ebe\n"
    },
    {
      "commit": "af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78b",
      "tree": "50cf9dd27d673bc5b3f75e6e18e9577873eecd6c",
      "parents": [
        "cc1169831921d9295b2fc01c1eaf7e9b00836f53"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 17:32:48 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 18:54:54 2012 -0700"
      },
      "message": "Notify applications when input devices change.\n\nThis change allows the InputManager to keep track of what input\ndevices are registered with the system and when they change.\nIt needs to do this so that it can properly clear its cache of\ninput device properties (especially the key map!) when changes\noccur.\n\nAdded new API so that applications can register listeners for\ninput device changes.\n\nFixed a minor bug in EventHub where it didn\u0027t handle EPOLLHUP\nproperly so it would spam the log about unsupposed epoll events\nuntil inotify noticed that the device was gone and removed it.\n\nChange-Id: I937d8c601f7185d4299038bce6a2934fe4fdd2b3\n"
    },
    {
      "commit": "7d276c377ce0c56630c06a6da431a6cb9bd76d1e",
      "tree": "b5c96c71988ec1a0f3cbd7f64269651e69c8de92",
      "parents": [
        "63c115c4aa2158ea18338a9fb2c2619755958ddc"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Mon Jan 30 14:33:52 2012 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Mon Apr 09 15:33:26 2012 -0400"
      },
      "message": "New Android Dreams architecture, disabled for now.\n\nRather than normal Activities (which have a host of problems\nwhen used for this purpose), screen savers are now a\nspecial kind of Service that can add views to its own\nspecial window (TYPE_DREAM, in the SCREENSAVER layer).\n\nDreams are now launched by the power manager; whenever it is\nabout to turn the screen off, it asks the window manager if\nit wants to run a screen saver instead. (http://b/5677408)\n\nAlso, the new config_enableDreams bool allows the entire\nfeature to be switched on or off in one place. It is\ncurrently switched off (and the APIs are all @hidden).\n\nChange-Id: Idfe9d430568471d15f4b463cb70586a899a331f7\n"
    },
    {
      "commit": "b52e3e55098c4a6e3dbfe19885895411cfb38911",
      "tree": "2b40b88a64184c36d5a3794b8dab7450cc9d99eb",
      "parents": [
        "5713c9cfa9a0ed7625c8a48925a5c33b2c070460"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 06 11:12:08 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 06 13:38:29 2012 -0700"
      },
      "message": "INetworkStatsSession with lifecycle for caching.\n\nUsers outside system_server now explicitly communicate their\nlifecycle, which keeps a strong-reference chain to any fully loaded\nNetworkStatsCollection histories.\n\nBug: 6236498\nChange-Id: I8e22739b6e89a626b676967a736d7117fd000778\n"
    },
    {
      "commit": "e9bdb31ea1dc3c1c2b1833a4bf0031d85928a45b",
      "tree": "6ce11f382c228c01cc4a12102d2ef6f10c4adc3e",
      "parents": [
        "23b871d7147de910b53646cdb987e28dac0df927",
        "4532e6158474a263d9d26c2b42240bcf7ce9b172"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 05 15:30:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 05 15:30:10 2012 -0700"
      },
      "message": "Merge \"Refactor input system into its own service.\""
    },
    {
      "commit": "4532e6158474a263d9d26c2b42240bcf7ce9b172",
      "tree": "e0055acd68c0a8729077695ac671935aa58a1fad",
      "parents": [
        "9df6e7a926ce480baf70e97ee1b9ea387193f6ad"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 05 14:27:12 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 05 14:42:11 2012 -0700"
      },
      "message": "Refactor input system into its own service.\n\nExtracted the input system from the window manager service into\na new input manager service.  This will make it easier to\noffer new input-related features to applications.\n\nCleaned up the input manager service JNI layer somewhat to get rid\nof all of the unnecessary checks for whether the input manager\nhad been initialized.  Simplified the callback layer as well.\n\nChange-Id: I3175d01307aed1420780d3c093d2694b41edf66e\n"
    },
    {
      "commit": "52c489cd63cca0361f374f7cb392018fabfa8bcc",
      "tree": "7e994b33b5203f2492c0e6eb39a9f139d061b0bf",
      "parents": [
        "7c8fd157da36b68529b08b820051ce775f84a9bf"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Mar 28 11:42:42 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Apr 05 14:03:36 2012 -0700"
      },
      "message": "Lockscreen settings per user\n\nMove all lockscreen related settings to LockSettingsService.\nLockPatternUtils uses this through IPC instead of Secure settings.\nMigrate old settings to new database managed by LockSettingsService.\nPasswords and patterns are stored in a new per-user location, except\n for the primary user, for backward compatibility.\nKeyguardViewMediator and LockPatternKeyguardView listen for changes\nto user and updates the lockscreen.\n\nSettings provider will look for Lock settings in the LockSettings\nservice now for the entries that used to be stored in Settings.\n\nChange-Id: I956cd5b95e2d9d45a6401af7e270e6a5aa2dcc98\n"
    },
    {
      "commit": "7d024d372431effc87168afdc7cbe387680c4935",
      "tree": "2e8a8389c8792db9cce4575e7d6da4d9a870b30d",
      "parents": [
        "26d4452a08813cdbb7280c475fe5527cdc9673a3"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Mar 22 17:01:39 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Wed Apr 04 12:24:56 2012 -0700"
      },
      "message": "Add initial framework for DNS service discovery\n\nChange-Id: I53c0b7ebfd75e520ebb7553612f1aa8413b6b79b\n"
    },
    {
      "commit": "dc4226a5245037bce7b1fcfa1dbb16b7280a1c16",
      "tree": "a44a1b634378a99a3ee96534f8682e86d077ed4f",
      "parents": [
        "61d6c8ca49d4a3d5bf4c961878a3f71145d75058",
        "af71f328e6b03cc6b7111b87b625c3f9cb3987e4"
      ],
      "author": {
        "name": "Tony Chan",
        "email": "htchan@google.com",
        "time": "Sat Mar 31 02:20:37 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Mar 31 02:20:37 2012 -0700"
      },
      "message": "am af71f328: am 2963ae34: am 4ddfaeb5: Merge \"sdk doc change: Added KeyChain API Demo\" into ics-mr1\n\n* commit \u0027af71f328e6b03cc6b7111b87b625c3f9cb3987e4\u0027:\n  sdk doc change: Added KeyChain API Demo\n"
    },
    {
      "commit": "c95a74d301f3f37e6c91edbd8e7c94d1452b6e35",
      "tree": "67fe25bbca6943ad3b6b35d47f9e9870fb87273c",
      "parents": [
        "bd26ba4871078aa85024320040de35995e90924b"
      ],
      "author": {
        "name": "Tony Chan",
        "email": "htchan@google.com",
        "time": "Thu Mar 29 01:33:08 2012 +0800"
      },
      "committer": {
        "name": "Tony Chan",
        "email": "htchan@google.com",
        "time": "Fri Mar 30 11:13:43 2012 +0800"
      },
      "message": "sdk doc change: Added KeyChain API Demo\n\nChange-Id: I8ea879bf30f933c745e33dafa6591fce77251eb6\n"
    },
    {
      "commit": "65953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9",
      "tree": "bfb7ea73b90f23cd135b68b090a72ef8b947ee90",
      "parents": [
        "80e4ee46008d2817dc0496e0cf8c9470c6851755"
      ],
      "author": {
        "name": "Marius Renn",
        "email": "renn@google.com",
        "time": "Tue Mar 27 10:44:45 2012 -0700"
      },
      "committer": {
        "name": "Marius Renn",
        "email": "renn@google.com",
        "time": "Tue Mar 27 10:44:45 2012 -0700"
      },
      "message": "Multi-Project Commit: Move of filterfw out of system/media (2 of 7)\n\nThis is part of the multi-project commit to move the filter-framework\nfrom system/media/mca to frameworks/base/media/mca.\n\nNote that the filter-framework will soon be replaced with a refactored\nversion currently under API review (also to go under frameworks/base).\nThis move is done now to unblock the PDK efforts.\n\nChange-Id: I9f42be5a12a9e8157512be11f04e38e4548970be\n"
    },
    {
      "commit": "8662cab5c6a01ea5c426512e6f6d2cf3e158aea0",
      "tree": "3b59cda27e624d46603427888e906e3686c00379",
      "parents": [
        "c021a119a2b2b274e3a0bc06003e389a00de9112"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 23 14:59:36 2012 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Feb 29 14:05:24 2012 -0800"
      },
      "message": "Merge: Introduce UpdateLocks\n\nAn \"UpdateLock\" works similarly to a wake lock in API: the caller is\nproviding a hint to the OS that now is not a good time to interrupt\nthe user/device in order to do intrusive work like applying OTAs.\nThis is particularly important for headless or kiosk-like products\nwhere ordinarily the update process will be automatically scheduled\nand proceed without user or administrator intervention.\n\nUpdateLocks require that the caller hold the new signatureOrSystem\npermission android.permission.UPDATE_LOCK.  acquire() and release()\nwill throw security exceptions if this is not the case.\n\nThe \"is now convenient?\" state is expressed to interested parties\nby way of a sticky broadcast sent only to registered listeners.  The\nbroadcast is protected; only the system can send it, so listeners\ncan trust it to be accurate.  The broadcast intent also includes a\ntimestamp (System.currentTimeMillis()) to help inform listeners that\nwish to implement scheduling policies based on when the device became\nidle.\n\nThe API change here is a tiny one: a dump(PrintWriter) method has been\nadded to the TokenWatcher class to facilitate getting information out\nof it for dumpsys purposes.  UpdateLock itself is still @hide.\n\nBug 5543442\n\nChange-Id: I3709c831fc1883d7cb753cd2d3ee8e10a61e7e48\n"
    },
    {
      "commit": "1e11c6519a5b657ad6af4369b8580fbe681ebe0e",
      "tree": "7a62970b3781e9ce32691155d7954cd327cda132",
      "parents": [
        "d262744b7e4fd9e01a9a0a5d70927328e9391bf9",
        "b01e8bf57b7492b77e3445db51471edcbadda75e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Feb 10 11:41:41 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 11:41:41 2012 -0800"
      },
      "message": "Merge \"New Serial Manager API:\""
    },
    {
      "commit": "21fbd1f7da53dc044737803dccddf8099f1fc1e9",
      "tree": "e8de991996e1a5df738066683f6c5124efa33a9d",
      "parents": [
        "d10035d52bcd4eed9f83cad580d606cd522dd6c7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 10 10:38:10 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 10 10:54:15 2012 -0800"
      },
      "message": "Some cruft removal.\n\nChange-Id: If4a94bfd4a033748eb13e8f3ff25e24382746778\n"
    },
    {
      "commit": "b01e8bf57b7492b77e3445db51471edcbadda75e",
      "tree": "efbff9d0094660d195d46322a23ce7bbd1a453ad",
      "parents": [
        "341ff2b08380fcab0f2313fb4feca732cf70f840"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Aug 29 20:11:07 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Feb 10 10:51:19 2012 -0800"
      },
      "message": "New Serial Manager API:\n\nSerialManager: provides access to serial ports\nSerialPort: for reading and writing data to and from serial ports\n\nIO with both array based and direct ByteBuffers is supported.\n\nAccessing serial ports requires android.permission.SERIAL_PORT permission\n\nEach platform must configure list of supported serial ports in the\nconfig_serialPorts resource overlay\n(this is needed to prevent apps from accidentally accessing the bluetooth\nor other system UARTs).\n\nIn addition, the platform uevent.rc file must set the owner to the\n/dev/tty* files to \"system\" so the framework can access the port.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "4c1241df8f8b7fd5ec3dff6c7e0f66271248e76e",
      "tree": "36df1bce8fe7295d0ab778ca519232a291a3294f",
      "parents": [
        "8ca8a69d5801ad4b809e7b9dbf53bd728820924b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 02 17:05:00 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 02 18:02:16 2012 -0800"
      },
      "message": "Rename CancellationSignal using preferred spelling.\n\nBug: 5943637\nChange-Id: I12a339f285f4db58e79acb5fd8ec2fc1acda5265\n"
    },
    {
      "commit": "2d2d7d6f42fe22ecc2b1dc8bb96a19e503a61a20",
      "tree": "edae78645ac19facd02fd3c081e34b6444d8d81b",
      "parents": [
        "30c918ce7fbe171944b28fc91b3f22b3d631872d",
        "75ea64fc54f328d37b115cfb1ded1e45c30380ed"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 27 17:37:24 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 17:37:24 2012 -0800"
      },
      "message": "Merge \"Implement a cancelation mechanism for queries.\""
    },
    {
      "commit": "75ea64fc54f328d37b115cfb1ded1e45c30380ed",
      "tree": "4254a5d2d0662de8b606b38fea6987da17c130e3",
      "parents": [
        "ebc016c01ea9d5707287cfc19ccc59b21a486c00"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 25 19:37:13 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 27 17:33:21 2012 -0800"
      },
      "message": "Implement a cancelation mechanism for queries.\n\nAdded new API to enable cancelation of SQLite and content provider\nqueries by means of a CancelationSignal object.  The application\ncreates a CancelationSignal object and passes it as an argument\nto the query.  The cancelation signal can then be used to cancel\nthe query while it is executing.\n\nIf the cancelation signal is raised before the query is executed,\nthen it is immediately terminated.\n\nChange-Id: If2c76e9a7e56ea5e98768b6d4f225f0a1ca61c61\n"
    },
    {
      "commit": "c97a552023c3c71079b39092e80c9b44f25a789b",
      "tree": "639e700cdd538f2ebd080143182fa30bb32fdd2a",
      "parents": [
        "dc828acd5fadb266b13cce459b1cacfad8ef7aef"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Jan 05 15:13:01 2012 +1100"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Wed Jan 25 13:17:19 2012 -0800"
      },
      "message": "Improve NDEF API\u0027s\n\no Add NdefRecord.toMimeType()\n  Maps the record to a MIME type\no Add NdefRecord.toUri()\n  Maps the record to a URI\no Add hidden NfcAdapter.dispatch()\n  Helps test the dispatch path.\no Modify createMime(), createUri() and createExternal():\n  Do not try and strictly follow RFC requirements for URI or MIME content\n  types. This just leads to heartbreak - the RFC requirements are too strict.\n  For example RFC1341 forbids the use of \u0027.\u0027 in a MIME type, however this is in\n  common use in types such as \"application/vnd.companyname\". I think the best\n  approach is to only remove \u0027obvious\u0027 whitespace issues, and to convert\n  uppercase to lowercase as per Android guidelines.\n\nChange-Id: Id686f5f3b05b2dceafad48e1cfcbdb2b3890b854\n"
    },
    {
      "commit": "481cd5a8938b5055942f3a9ccaeb08f373b8a4ea",
      "tree": "211e1b0b2c05362b084def656488fcc0a1dab1e2",
      "parents": [
        "cf927f229f55849caf3461621023b5bd61908334",
        "3d672e1e789e171e913605945efe95a477ab0505"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Dec 15 11:08:51 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 15 11:08:51 2011 -0800"
      },
      "message": "am 3d672e1e: Android U Class: Monetization / Ads without Compromising User Experience\n\n* commit \u00273d672e1e789e171e913605945efe95a477ab0505\u0027:\n  Android U Class: Monetization / Ads without Compromising User Experience\n"
    },
    {
      "commit": "3d672e1e789e171e913605945efe95a477ab0505",
      "tree": "4c420f4a8875f6137d45464b4042a129cdec4d5f",
      "parents": [
        "aed4ced6556383483209f454c9e4872e8ad28ebf"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Dec 15 10:44:11 2011 -0800"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Dec 15 10:44:11 2011 -0800"
      },
      "message": "Android U Class: Monetization / Ads without Compromising User Experience\n\nChange-Id: I1aaddc6bbbc9fc2b53119893f2b70260f1b0d9a7\n"
    },
    {
      "commit": "cf927f229f55849caf3461621023b5bd61908334",
      "tree": "f5280d507cbf7a9a84827438634446bc852765bd",
      "parents": [
        "e4e6c06641a6446c0f26a0ac59c665f34476a6b4",
        "aed4ced6556383483209f454c9e4872e8ad28ebf"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Dec 15 10:41:18 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 15 10:41:18 2011 -0800"
      },
      "message": "am aed4ced6: Android U Class: Developing Android Applications for the Enterprise. This class uses a sample app.\n\n* commit \u0027aed4ced6556383483209f454c9e4872e8ad28ebf\u0027:\n  Android U Class: Developing Android Applications for the Enterprise. This class uses a sample app.\n"
    },
    {
      "commit": "aed4ced6556383483209f454c9e4872e8ad28ebf",
      "tree": "586711224ef5b64c98a84494300275121daa1e54",
      "parents": [
        "f9cca66e8b4acbc8d50713b4ed4b92d8274285c1"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Dec 15 10:25:41 2011 -0800"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Dec 15 10:38:32 2011 -0800"
      },
      "message": "Android U Class: Developing Android Applications for the Enterprise.\nThis class uses a sample app.\n\nChange-Id: I508edbb98c8e9dea1d3ea26c8dcd9da213330d87\n"
    },
    {
      "commit": "9a6b4245c98b0327f6aaeaafc72de86cdc8e3e62",
      "tree": "f000042b12a113f8b05649e86508163eac965274",
      "parents": [
        "2e335cb02891d3653b938340a11698844e2c3d6d"
      ],
      "author": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Mon Dec 12 13:49:31 2011 -0800"
      },
      "committer": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Wed Dec 14 17:17:09 2011 -0800"
      },
      "message": "Doc change: add MR1 API summary and updated highlights.\n\nChange-Id: I9a9b13b9c7b8ae3011772a62735c788762b45f7f\n"
    },
    {
      "commit": "37191e1dc783a5558eb8ee4f096bd8350c34415d",
      "tree": "672016f2b3b8d6843123c8b84099c8536755c010",
      "parents": [
        "3ab630084071eb5dc7f92b4a8a617f8cef10c514",
        "801fda548c719a8618e7f4cd64cad8404b0970b9"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Dec 13 13:10:42 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 13 13:10:42 2011 -0800"
      },
      "message": "am 801fda54: AndroidU lesson on designing for multiple screens.\n\n* commit \u0027801fda548c719a8618e7f4cd64cad8404b0970b9\u0027:\n  AndroidU lesson on designing for multiple screens.\n"
    },
    {
      "commit": "801fda548c719a8618e7f4cd64cad8404b0970b9",
      "tree": "9f3cb3bd6e293d8a5f9371ad9c351161fc4a23b3",
      "parents": [
        "89c3bc38421a3f01b39f0246e53884bdf8b14415"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Dec 09 17:27:21 2011 -0800"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Mon Dec 12 17:13:31 2011 -0800"
      },
      "message": "AndroidU lesson on designing for multiple screens.\n\nThis change adds the text for the AndroidU lesson \"Designing for Multiple\nScreens\", which shows how to write applications that adapt properly\nto screen size, density and orientation for maximum compatibility.\nUpdate makefile and resources-data.js for rendering source in HTML\nAdd ZIP file for sample\n\nChange-Id: I671bb3063d5bf02681bc547ffe5262a9df22037a\n"
    },
    {
      "commit": "25bcbbb5971e2832c3020ee406b27d641d4ca05b",
      "tree": "ce587ad9e55cb61a0a418b88be766a0b0f60cbb2",
      "parents": [
        "6d90c1c6fedc7add177418324ba5e591af543fa4",
        "431c3e4c7e2103865a90501a552b4e5145ed3f35"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Dec 02 12:46:51 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 02 12:46:51 2011 -0800"
      },
      "message": "am 431c3e4c: Merge \"Documentation for the VPN sample for ICS SDK. Staging server: http://fredchung.i:9999/resources/samples/ToyVpn/index.html\" into ics-mr0\n\n* commit \u0027431c3e4c7e2103865a90501a552b4e5145ed3f35\u0027:\n  Documentation for the VPN sample for ICS SDK. Staging server: http://fredchung.i:9999/resources/samples/ToyVpn/index.html\n"
    },
    {
      "commit": "8e076fe774386762da21d78823f905751f2803d9",
      "tree": "c0beacb5b7f8bca1405b5d577f76fd5f4a211c72",
      "parents": [
        "fe464a76d8fc858be971dbb5e67b1d22fd925347"
      ],
      "author": {
        "name": "Fred Chung",
        "email": "fchung@google.com",
        "time": "Mon Nov 28 16:44:13 2011 -0800"
      },
      "committer": {
        "name": "Fred Chung",
        "email": "fchung@google.com",
        "time": "Mon Nov 28 16:44:13 2011 -0800"
      },
      "message": "Documentation for the VPN sample for ICS SDK.\nStaging server: http://fredchung.i:9999/resources/samples/ToyVpn/index.html\n\nChange-Id: I35a17374fc0d9d165cedc9d6e1052eaec0028ace\n"
    },
    {
      "commit": "92f12f5e40019e6e9b8672e8d88f246b8534e003",
      "tree": "ffec83314a38623972ab170b09c40400f3f12d4e",
      "parents": [
        "85c7394836843b2cbfa2b51504448794a6071b3a"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Nov 17 11:53:46 2011 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Nov 17 15:56:13 2011 -0800"
      },
      "message": "Add the support libraries to the platform documentation (build).\n\nUpdated the make file to generate documentation for the support libs.\n\nbug:5629339\n\nChange-Id: I44222f78d002660ad52610083421e4b840ceb541\n"
    },
    {
      "commit": "6cf8f73586f01f93015bd761fcacdecbbf643955",
      "tree": "0487c0846dd789c68eae61c1fbfce3e75304f1fe",
      "parents": [
        "33fe4a36b7d1ef84b13447f2a765db465ef96e56"
      ],
      "author": {
        "name": "Fred Chung",
        "email": "fchung@google.com",
        "time": "Wed Nov 16 15:15:30 2011 -0800"
      },
      "committer": {
        "name": "Fred Chung",
        "email": "fchung@google.com",
        "time": "Wed Nov 16 15:28:35 2011 -0800"
      },
      "message": "Adding missed Android.mk file to the original Bluetooth HDP sample Change-Id: I7035cb13da6f6cd64e63df8a5ccf2391fe41f18e.\n\nChange-Id: I23f7d4ece831ea449ecfc848dbb5733021107350\n"
    },
    {
      "commit": "2d410df1c7852aec4131f276841758d43e9507f1",
      "tree": "b4d9eb4b013145925215a2e9a5feb719ae105b4b",
      "parents": [
        "d28bb28e080f1dcd27f5b4f8b697d77cac09495b"
      ],
      "author": {
        "name": "Fred Chung",
        "email": "fchung@google.com",
        "time": "Mon Nov 14 11:39:23 2011 -0800"
      },
      "committer": {
        "name": "Fred Chung",
        "email": "fchung@google.com",
        "time": "Wed Nov 16 15:24:08 2011 -0800"
      },
      "message": "DO NOT MERGE: Bluetooth HDP sample.\nCherry pick from ics-mr1 Change ID I7035cb13da6f6cd64e63df8a5ccf2391fe41f18e\n\nChange-Id: I6f9bd5fec6e841395b9fc85d419510c81bfb620c\n"
    },
    {
      "commit": "aeb11b598877523fd3c530c7a086c38b4a13c7a1",
      "tree": "15b8ff4a7f6ca1c56353098d9f3ce0f63b64cbea",
      "parents": [
        "50d0511ddbf226255347e95a6382af8b0e7d366b",
        "a840462feb846a5c8d1d7d024562d5739b75e591"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Oct 31 13:28:57 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 31 13:28:57 2011 -0700"
      },
      "message": "Merge \"Folding Accessibility Service sample into ApiDemos.\" into ics-mr0"
    },
    {
      "commit": "a840462feb846a5c8d1d7d024562d5739b75e591",
      "tree": "66eebdf128d07522d1ee487c59932bcbade36058",
      "parents": [
        "4eec98edee3d6eb516e30a7151da13fd726f93a9"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 28 19:16:18 2011 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 28 19:16:24 2011 -0700"
      },
      "message": "Folding Accessibility Service sample into ApiDemos.\n\n1. Moving Accerssibility Service sample into ApiDemos since\n   we are putting all accessibility samples there.\n\nChange-Id: If2deec7f6ad49b0d50112300eda0f7cb48660450\n"
    },
    {
      "commit": "2323e9bcdca521d8b9c3990ebf8c0bf779374de6",
      "tree": "0b9785af56fb29b12a2bffc85016f81017739232",
      "parents": [
        "c1cf3b160b4852e021a45806d496a9f9a76d6683"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Oct 28 15:55:39 2011 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Oct 28 15:55:39 2011 -0700"
      },
      "message": "docs: fix spell checker client location\n\nChange-Id: Ic94eab2720cd96b1130869d2071c635b4acb27f5\n"
    },
    {
      "commit": "182e4ae2f4bbfdd2272f6e425c6f3734b3f157bf",
      "tree": "22f59836a99a6504b565b2881bcc5f5b0528b21f",
      "parents": [
        "28e4f87f38cae799b494e160467d732e988bad89"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Thu Oct 27 19:57:34 2011 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Fri Oct 28 02:27:53 2011 +0900"
      },
      "message": "Add a path to HelloSpellChecker sample application for SDK build\n\nChange-Id: I77e334f8e2b50b8609b1729edb253254d6b7360b\n"
    },
    {
      "commit": "44619d3e087138775fb19fbd5d7b9f497a0805f4",
      "tree": "e381b12fe7767fea1190120dbfdb74bb34561159",
      "parents": [
        "f7613743f29f38cbbaf4ae09996c380845a17daf"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Wed Oct 19 22:46:18 2011 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Wed Oct 19 23:52:03 2011 +0900"
      },
      "message": "Update links for SampleSpellCheckerService for I938ba499\n\nChange-Id: I528fc5ee5f9971ecb3bf47ef1c8b999546724c1f\n"
    },
    {
      "commit": "3087b94f7beafda54d3871e354dcde951b0c52a0",
      "tree": "3f7fedc8c05be52663766d513bb61202569c3374",
      "parents": [
        "202b38cb71d123e4ebc8741643e84fa455ecd002"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Oct 14 14:29:14 2011 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Oct 14 14:29:14 2011 -0700"
      },
      "message": "fix android beam demo path\n\nChange-Id: I16a467155feac54fb14b1b7af034a3854efe1fb7\n"
    },
    {
      "commit": "49eb519696526fa066830bd4a2341b6a105ce5c8",
      "tree": "ab3932196f5ea2e781f8e0d82e41353fbf4cf2d2",
      "parents": [
        "3406886939b0f28c426acefbe9dc77292210d8b4"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Oct 14 01:24:57 2011 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Oct 14 01:24:57 2011 -0700"
      },
      "message": "change android beam sample name\n\nChange-Id: Ic3c1d6d75d06a4de55824e69fa9d4d9564bfdb95\n"
    },
    {
      "commit": "5d0dbea9e9630ff2792a76b00b1016ae8215cdd9",
      "tree": "5df74596cc8eab96a85b9e541ad818841d2294d6",
      "parents": [
        "26ae7db48d94c7247e1faef9cfc08c85097b9ba3"
      ],
      "author": {
        "name": "Anirudh Dewani",
        "email": "anirudhd@google.com",
        "time": "Thu Oct 06 08:03:45 2011 +0530"
      },
      "committer": {
        "name": "Anirudh Dewani",
        "email": "anirudhd@google.com",
        "time": "Thu Oct 06 12:53:47 2011 +0530"
      },
      "message": "Docs changes for WiFiDirect sample\n\nChange-Id: Icfe3cc12c451563792745fc4c326d064cac978c3\n"
    },
    {
      "commit": "f4b2ba18942eb2ae06a8f64dda5c691b2a2a914b",
      "tree": "0e1d85782d97ef5e16c7bc8d4df662a76be137ce",
      "parents": [
        "67f9d32e5ed55b15b84be4d0bdff828d48abe2eb"
      ],
      "author": {
        "name": "Roman Nurik",
        "email": "romannurik@google.com",
        "time": "Fri Sep 30 15:48:34 2011 -0700"
      },
      "committer": {
        "name": "Roman Nurik",
        "email": "romannurik@google.com",
        "time": "Wed Oct 05 15:59:23 2011 -0700"
      },
      "message": "Add ActionBarCompat sample (CL 2 of 2)\n\nChange-Id: Ie64eaad0c5cd148288ee48c524ff3516522fc10f\n"
    },
    {
      "commit": "2950b1b2340292f1dec3165e65da3b635c29d168",
      "tree": "0a5c9b86722bc6aad2352e7b09d97d66cb192ef3",
      "parents": [
        "94d2f366f971bc052da9856e9f8867094e738cd1"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Wed Oct 05 13:08:18 2011 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Wed Oct 05 13:08:18 2011 -0700"
      },
      "message": "add spell checker sample to build\n\nChange-Id: Id03246e140ee6676810fcefebff0ba73115987ec\n"
    },
    {
      "commit": "d8afdb49ffaf727ff5d493854501d42c27faae28",
      "tree": "997008dc163505ca8833a6484f6b2d4895fd6254",
      "parents": [
        "d87448f7a7b6e3b05dc7d4248f79f5a5285a7435"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Oct 04 16:57:09 2011 -0700"
      },
      "committer": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Oct 04 17:07:06 2011 -0700"
      },
      "message": "adding Android Beam sample\n\nChange-Id: I30df24bc41fe61ebaab29f23a8df54f2c9599394\n"
    },
    {
      "commit": "abb06265efad56434ca8dfa73cad9c9a7dff781d",
      "tree": "9aa3104ee738d8576efbb5b293f2e6cf3479bc9e",
      "parents": [
        "04ef5b8dd7262ee90b56df9c992f103695d0a21c"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Wed Sep 21 18:09:25 2011 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Wed Sep 21 18:09:25 2011 -0700"
      },
      "message": "update version codes for doc filtering and footer version name\n\nChange-Id: I63feac1e5dcf7c0f7f2acc3ff23fcd3224a90e14\n"
    },
    {
      "commit": "b1f57728d9b0122abfc1426052a5a1ab464a934e",
      "tree": "4f3571dbdc06423c67572cb6a678dba3de82d809",
      "parents": [
        "cb995121ee4bb4da236e8181fbfbd33bc2f9173a"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu Sep 15 16:16:45 2011 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu Sep 15 16:16:45 2011 -0700"
      },
      "message": "Use the correct dependency\n\n$(LOCAL_BUILT_MODULE) of the module framework points to a\nproduct-specific file (required by dex-preopt), which is nuked by installclean.\nWhile the result of $(java-lib-deps) points to a file in the common\ndirectory.\n\nThis change reduces the incremental build time significantly:\nIt takes around 7 minutes to run \"make instalclean \u0026\u0026 make\" without this\nchange v.s. 3 minutes with this change.\nSo it will save lots of build time when switching between user, userdebug\nand eng builds on the build server.\n\nChange-Id: I832bafca04677af561bb0c28e2e0260f633b96a1\n"
    },
    {
      "commit": "6edf2637e96139735df83907c221cce16d4d7eaa",
      "tree": "9723bbfacee42b9878ecc80dd0dc37c0cc65e825",
      "parents": [
        "a4248f6932750ac8a472a02fb9d3927194ba59b6"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Mon Sep 05 16:03:14 2011 -0700"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Fri Sep 09 00:53:02 2011 -0700"
      },
      "message": "Fix 5185505: Add support for weak biometric sensors to lockscreen.\n\nAdded binder interfaces to the framework.\n\nChange-Id: I7d55b45baa4d1600ebd2a3828e85c3357cfcfb58\n"
    },
    {
      "commit": "4426e42ac6107bf6b09f7c4cdad39eb161d8b9ca",
      "tree": "27528bb34ea1b83f0c798ac975fd27c38f5869c1",
      "parents": [
        "0197d825f15844e51b91a0006d411ecb06350641"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Aug 18 19:16:47 2011 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 23 11:23:22 2011 -0700"
      },
      "message": "Bug 5045498 New implementation of remote control API\n\nRemote control displays expose an IRemoteControlDisplay interface\n which they register through AudioManager.\nRemote control clients create a RemoteControlClient object, which\n implicitely exposes an IRemoteControlClient interface registered\n in AudioService through AudioManager.\nAudioService tells all clients and displays when a new client\n is the one that should be displayed.\nA client\u0027s data gets sent to the display when it is valid, or\n it sets new data (while being valid).\n\nThe implementation for setting metadata and album art is temporary,\n and will migrate to the MetadataEditor API in future CLs.\n\nChange-Id: Ibab6ea1d94c68f32482c760c6ae269541f885548\n"
    },
    {
      "commit": "01675902e0310ad93993e29a5cbf3a3c6c85a25b",
      "tree": "64418aea5434990babe270416617cd4e54334c78",
      "parents": [
        "9f550e91f4d82313135a37a426d563f855a4f6a5",
        "b1dec71a45d980d1ce1bf41411594a1cae400bfc"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 17 17:55:42 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 17 17:55:42 2011 -0700"
      },
      "message": "Merge \"NEW_API: Add real-time Effects.\""
    },
    {
      "commit": "178889eff7fa3361a5cb08d6d43846a1baf5216b",
      "tree": "e4ae523d0c72f27366cbb7b63f8043bb694eb56c",
      "parents": [
        "ed2d658af0856fb800631b9dfbced0ff2b9ca037"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Aug 15 17:17:52 2011 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Aug 17 09:53:12 2011 -0700"
      },
      "message": "Bug 5045498 RemoteControlClient interface\n\nDefine a RemoteControlClient interface that applications must\n implement and register to be displayed on the lockscreen.\n\nChange-Id: I67276ae653f203e76727432231f1d76535c31942\n"
    },
    {
      "commit": "b1dec71a45d980d1ce1bf41411594a1cae400bfc",
      "tree": "31ab545b2f5fd28f13baf61265a764f0b99dace6",
      "parents": [
        "21351d1b440d3665ebedd7736915f5ef88477c42"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Jun 20 12:14:33 2011 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 03 19:27:13 2011 -0700"
      },
      "message": "NEW_API: Add real-time Effects.\n\nAdd simple effects API, based on the mobile filter framework.\n\nBug-Id: 4966161\n\nChange-Id: I1fa8aa6effd0f13029e6dd09d6e0a6c3f29f6cda\n"
    },
    {
      "commit": "4415629112af2a62eb58a4daf1f2533c5089be53",
      "tree": "fddb900a9e70faa07b0390c5fef567b773b76160",
      "parents": [
        "3f76ca47e22a32fa6445120b29891ee4a64a89d0",
        "8f619182cb759718f64ab95fd6d61c16138f6952"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Aug 03 09:09:43 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 03 09:09:43 2011 -0700"
      },
      "message": "Merge \"Remote control display API and implementation\""
    },
    {
      "commit": "8f619182cb759718f64ab95fd6d61c16138f6952",
      "tree": "a6f3824563ebee8f80216f1ec5aafc4eb3d6f03b",
      "parents": [
        "80df829e35d0a97f92e599d36b0b16dcc956130b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jul 21 15:10:10 2011 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 02 17:15:42 2011 -0700"
      },
      "message": "Remote control display API and implementation\n\nExtend the media button event registration AudioManager API to\n enable applications to register as a client of \"remote controls\"\n and let them provide information meant to be displayed\n by the remotes.\nAudioService sends a AudioManager.REMOTE_CONTROL_CLIENT_CHANGED\n intent to let remote controls know when / from whom they can\n retrieve the information to display.\nOnly application that own audio focus, are the currently\n registered media button event receiver, and have registered\n a remote control client, are eligible to appear on the\n remote control.\n\nTo address in future CLs:\n- change how a remote control client forces a refresh\n- rename methods called under lock to ___Locked()\n- make API public\n\nChange-Id: Icca30ab05dac2605ee9246f8acb27a03dcea077a\n"
    },
    {
      "commit": "c3afd39c6722cd57307fd90aee405179aea77f6b",
      "tree": "e6dade096f021ce59a32f2c728ba0c8f39237972",
      "parents": [
        "33e6ad6eed598e4a8f328613d22ef439404373dd"
      ],
      "author": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Wed Jun 29 22:02:42 2011 -0500"
      },
      "committer": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Tue Aug 02 15:30:26 2011 -0500"
      },
      "message": "Remove the binder interface for LLCP.\n\nChange-Id: Idc9631cdbcac1435e285c656948a37315e32515d\n"
    },
    {
      "commit": "5a876b4ce0831bb30c14400424be39a7d68a1011",
      "tree": "55416c19ba86cc1c35843108155962278ca48475",
      "parents": [
        "5465e054d33436fa446465ebcff871f6b7e1e3cc"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Wed Jul 27 18:18:57 2011 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Wed Jul 27 18:18:57 2011 -0700"
      },
      "message": "add since flag for ICS\n\nChange-Id: Id6d82f0ecd9f24af85a0fa7c4e712e4ea8a59bb3\n"
    },
    {
      "commit": "c7bf44d9f752febc8cc5bf42341cc360b0cf5429",
      "tree": "c22b88aab06a6a2a9969c2ef5bc2eb9d7a60ddbb",
      "parents": [
        "ffcbe48d06ec7ae96f0f48bd37bdd141ebf80703"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Mon Jul 18 12:13:24 2011 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Wed Jul 27 12:12:51 2011 -0700"
      },
      "message": "cherrypick Change-Id: Ic41d05c61e7b20d9303384c63528f0a79b22310b\nupdate version code to 3.2 for docs footer\n\nChange-Id: Ia62622383fe73c3e62fa9856ef9742327029be5c\n"
    },
    {
      "commit": "ef2cb7c93a99096799d415e721dda46d1bf7a005",
      "tree": "133fb82001d51efe2ed84e8c17015ada855b99aa",
      "parents": [
        "070ce94b9fd91d1bb22161a85178440cb46d8ece"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumar@google.com",
        "time": "Thu Jul 21 18:13:38 2011 -0700"
      },
      "committer": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumar@google.com",
        "time": "Tue Jul 26 14:49:36 2011 -0700"
      },
      "message": "Add ability to turn BT on / off on a per application basis.\n\nThis changes adds an API for system applications\nto enable bluetooth without all the side effects like\nauto connection to headsets etc.\n\nAlso some tweaks to the adapter state machine\n\nChange-Id: Ib9f22d548a26d72334b300101c8eb0d80f08a4bb\n"
    },
    {
      "commit": "55bc5f3e0408bcb5a39a6732de0b2d1aa99a55be",
      "tree": "1206af1015ea8248a8fefbf2672d8df7bfa56bc8",
      "parents": [
        "895de9269fa125bf3903c21faf5e8d2750bfb000"
      ],
      "author": {
        "name": "repo sync",
        "email": "isheriff@google.com",
        "time": "Fri Jun 24 14:23:07 2011 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Sun Jul 24 10:08:47 2011 -0700"
      },
      "message": "Updated: Wi-Fi p2p framework\n\nFirst stage. Get the bones in right now even though\nwe are not ready on the native side.\n\nOnce, we have things underneath working - we will further update the\nframework\n\nChange-Id: I4a7dab5cd4267373dc5f8989ae4122f91c384ed5\n"
    },
    {
      "commit": "988323c57bd25a58f05dfa492d9b9c8ab62c5153",
      "tree": "ee817ff3950a064cd3546294c9428ec41c8e7cee",
      "parents": [
        "b4cd566767f736e723acb5444cbfb26117a2fbb8"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Wed Jun 22 16:38:13 2011 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Fri Jul 22 14:52:21 2011 +0900"
      },
      "message": "Create TextServiceManager and SpellCheckerService\n\nBug: 4176026\n\nThis CL inherits https://android-git.corp.google.com/g/112600\n\nSpec of TextServiceManager\n- Chooses the most applicable TextService(e.g. SpellCheckerService, WordBreakIteratorService..)\n    for each locale\n\nSpec of SpellCheckerService\n- Returns whether the given string is a correct word or not\n- Returns Suggestions for the given string\n\nChange-Id: Iaa425c7915fe70767ad0b17bf6c6fbcd2a1200b2\n"
    },
    {
      "commit": "6dabb63307a0b63f9386d61e8444aed29db2081e",
      "tree": "61ee416900ae7e91414995e887126ac5591de55c",
      "parents": [
        "221bfab8429b91ddd4f5835f399a1c9628122cbd"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Jul 08 12:13:03 2011 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Jul 08 17:55:25 2011 +0100"
      },
      "message": "Add event-log logging for TTS requests.\n\nChange-Id: I5023194c469a602b85259088a2e59373c96a941e\n"
    },
    {
      "commit": "42de13c3b01daa755cb6b7b83b3429c53238fd4a",
      "tree": "397ca46e155555bdb2a9b4cfdf19209ab0a2f08a",
      "parents": [
        "e074e221a8d80b79ec2e8eca0dc026bfcce87cd2",
        "af1ad3cc2d6152dfe62520a87bf5fa85337ca1ab"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jul 06 02:01:59 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 06 02:01:59 2011 -0700"
      },
      "message": "Merge \"Add a sample app for the TTS engine API\""
    },
    {
      "commit": "44e27b5c74b5f441973561a4f945cb58e0cc45a4",
      "tree": "5c49ca549fb48177ec46e5a2cc4cd5a0e7712486",
      "parents": [
        "0c6bb2737e231c365656befe1d4ce44557de939a"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Sat Jul 02 20:19:26 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Sat Jul 02 20:21:09 2011 -0700"
      },
      "message": "VPN: remove the old VpnService.\n\nNow VPN is (kind of) integrated into ConnectivityService.\n\nChange-Id: If98e456e779f8e97f562d99c57d909b1f5d9db55\n"
    },
    {
      "commit": "c9286ebbf4ee8233908bc6b4c472ed89b0e60228",
      "tree": "fdd71eb73fd8539885974f858186b64b33f4d267",
      "parents": [
        "b0b1b11b965598cb8fb724e636ebb58a77d437b5",
        "2ea1e85dcb57d17f5782dbafa1d25eb51c630e4b"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumar@google.com",
        "time": "Fri Jun 24 11:34:35 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 24 11:34:35 2011 -0700"
      },
      "message": "Merge \"Implement APIs for Bluetooth Health profile.\""
    },
    {
      "commit": "2ea1e85dcb57d17f5782dbafa1d25eb51c630e4b",
      "tree": "490a07dffcd15d712020f52d5e446c2cf58ec929",
      "parents": [
        "7096b660548a15938b2c2fcfda7aa41ec16c4a72"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumar@google.com",
        "time": "Fri Apr 01 16:33:09 2011 -0700"
      },
      "committer": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumar@google.com",
        "time": "Fri Jun 24 11:31:43 2011 -0700"
      },
      "message": "Implement APIs for Bluetooth Health profile.\n\nThis first patch implements all the APIs.\nThe APIs wil be made public soon. The data specification\nAPI will be submited in another patchset.\nChange-Id: I2462683b7e07380e2c42474b0036b34d03b4bed1\n"
    },
    {
      "commit": "3987ea15577aecdb068a22bbdc75fb95c8bfbc14",
      "tree": "afcc960be2dedae2c28d8a7f51f59da58e922eb7",
      "parents": [
        "cf828c41eb704669b15a6c72035aaa5780a5b1d9",
        "a62f707da28226d5c6d160d1f0e21a65dcfba5fc"
      ],
      "author": {
        "name": "Bruno Oliveira",
        "email": "btco@google.com",
        "time": "Thu Jun 23 07:47:39 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 23 07:47:39 2011 -0700"
      },
      "message": "am a62f707d: am f1c71771: am da61eab8: Merge \"Integrating RandomMusicPlayer sample into tree.\" into honeycomb-mr2\n\n* commit \u0027a62f707da28226d5c6d160d1f0e21a65dcfba5fc\u0027:\n  Integrating RandomMusicPlayer sample into tree.\n"
    },
    {
      "commit": "cf828c41eb704669b15a6c72035aaa5780a5b1d9",
      "tree": "980d507765fcdd86f1d4ebbf53360404daea1da8",
      "parents": [
        "e07141a5623bc3d5f34b1de18f52044147bc2ac9",
        "69ff6a47c6e302f1b8aaeccffea3434f1edc4ee6"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Jun 23 07:47:31 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 23 07:47:31 2011 -0700"
      },
      "message": "am 69ff6a47: am a6632992: am 04295266: add api level 13 flag for docs\n\n* commit \u002769ff6a47c6e302f1b8aaeccffea3434f1edc4ee6\u0027:\n  add api level 13 flag for docs\n"
    },
    {
      "commit": "af1ad3cc2d6152dfe62520a87bf5fa85337ca1ab",
      "tree": "20c4653b55b904ad0462a43d19b4d8ebcd984946",
      "parents": [
        "cf559377b750271472aa0a717bf3b7d34abc0b39"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Jun 23 10:43:27 2011 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Jun 23 10:49:22 2011 +0100"
      },
      "message": "Add a sample app for the TTS engine API\n\nChange-Id: I2ab86ca95a11bbc41494454d7dee0f3d87779ac9\n"
    },
    {
      "commit": "8969d9924c662ab4cdacc342bbdc33756db730be",
      "tree": "78c40779921964585644305ef38d17ba8ecf70ee",
      "parents": [
        "f86ee14f6a53d409489261415901c6397877ce3d"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Wed Jun 22 16:41:58 2011 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Wed Jun 22 16:41:58 2011 +0900"
      },
      "message": "Revert \"Create TextServiceManager and SpellCheckerService\"\n\nThis reverts commit eaddb894865a804279659b4aad6364a34ab50beb.\n"
    },
    {
      "commit": "f1c71771a2164ed0009ef9b22f9c03bd3b1af3f9",
      "tree": "b6afb67acea6c64dddcffb4a43df9a616796c32f",
      "parents": [
        "a6632992135cf25b273abf7f239d7d378c936007",
        "da61eab862dabe00f95c784a01c019e4f7776b23"
      ],
      "author": {
        "name": "Bruno Oliveira",
        "email": "btco@google.com",
        "time": "Tue Jun 21 11:11:18 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 21 11:11:18 2011 -0700"
      },
      "message": "am da61eab8: Merge \"Integrating RandomMusicPlayer sample into tree.\" into honeycomb-mr2\n\n* commit \u0027da61eab862dabe00f95c784a01c019e4f7776b23\u0027:\n  Integrating RandomMusicPlayer sample into tree.\n"
    },
    {
      "commit": "da61eab862dabe00f95c784a01c019e4f7776b23",
      "tree": "04cf4ee1f9566f78745bdd4a3c23d4cd8fb6d6b9",
      "parents": [
        "04295266b03f3c588b8be6b6be409d59f757b27b",
        "9e67587d022675f4b6f62e565b23745c4a550ed9"
      ],
      "author": {
        "name": "Bruno Oliveira",
        "email": "btco@google.com",
        "time": "Tue Jun 21 11:07:47 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 21 11:07:47 2011 -0700"
      },
      "message": "Merge \"Integrating RandomMusicPlayer sample into tree.\" into honeycomb-mr2"
    },
    {
      "commit": "a6632992135cf25b273abf7f239d7d378c936007",
      "tree": "77408c227f8bcb2f3c9e8bd1c6d7b0958551a2ef",
      "parents": [
        "e0da3f3bc9aaefbf3e3737b69e91b7823f639751",
        "04295266b03f3c588b8be6b6be409d59f757b27b"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Jun 21 10:31:09 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 21 10:31:09 2011 -0700"
      },
      "message": "am 04295266: add api level 13 flag for docs\n\n* commit \u002704295266b03f3c588b8be6b6be409d59f757b27b\u0027:\n  add api level 13 flag for docs\n"
    },
    {
      "commit": "04295266b03f3c588b8be6b6be409d59f757b27b",
      "tree": "5869de7a949fe9fd77b6e8422aa74b2700a98dbe",
      "parents": [
        "444336dd5f233c59e5a222d366d2498c888664b5"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Jun 21 10:14:44 2011 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Jun 21 10:17:18 2011 -0700"
      },
      "message": "add api level 13 flag for docs\n\nChange-Id: I03a7739c923b1f38de6b4e77374daed438559548\n"
    },
    {
      "commit": "eaddb894865a804279659b4aad6364a34ab50beb",
      "tree": "33477fb0944f391b3f77928111a5876a2727c665",
      "parents": [
        "75a0e9c0f076093368ca50ac7e905a48af919f8b"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Wed Jun 01 19:24:14 2011 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Mon Jun 20 23:00:30 2011 +0900"
      },
      "message": "Create TextServiceManager and SpellCheckerService\n\nBug: 4176026\n\nSpec of TextServiceManager\n- Chooses the most applicable TextService(e.g. SpellCheckerService, WordBreakIteratorService..)\n    for each locale\n\nSpec of SpellCheckerService\n- Returns whether the given string is a correct word or not\n- Returns Suggestions for the given string\n\nChange-Id: Ia25e7b4f308778891929e31b8cbd741f6848cce4\n"
    },
    {
      "commit": "a7f88508d307c7554968ad3d1c1c58895ea3a223",
      "tree": "82d557930c2809300cbad7b97a74351158a6ea94",
      "parents": [
        "9347d9ad92b0467a1ad56423ecfbba39ed66ac5c",
        "872a1e793c2bd218c1ad1f485f3a76974c72a547"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 16 16:01:27 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 16 16:01:27 2011 -0700"
      },
      "message": "resolved conflicts for merge of 872a1e79 to master\n\nChange-Id: I50253b22f181729d4e748970acf1a3ad868ccd74\n"
    },
    {
      "commit": "9a73c4d3a9c7ce02f80b078ca9ba5106234ecd9c",
      "tree": "6f0ad11403cf8381370f9ccc11bdb32486da1666",
      "parents": [
        "f1c5dbbd457bb14d3673508aaba497cdc328a1ef",
        "2f04883ff880966d63d1aa4a1c7b05e497cfcc58"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 16 15:22:10 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 16 15:22:10 2011 -0700"
      },
      "message": "am 2f04883f: SDK only: integrate new sample code, deprecating along the way.\n\n* commit \u00272f04883ff880966d63d1aa4a1c7b05e497cfcc58\u0027:\n  SDK only: integrate new sample code, deprecating along the way.\n"
    },
    {
      "commit": "2f04883ff880966d63d1aa4a1c7b05e497cfcc58",
      "tree": "27f0845ad19db223c02c13f02dfacd680026240a",
      "parents": [
        "abd4dffc86202d48e50bd21807574fa861854dca"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 16 13:31:57 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 16 14:52:00 2011 -0700"
      },
      "message": "SDK only: integrate new sample code, deprecating along the way.\n\nThe new support library features and sample code for switching\nbetween fragments using a TabHost now eliminates the utility of\nthe TabActivity class, so deprecate it.  This also means there is\nno longer any use in ActivityGroup or LocalActivityManager.  Yay.\n\nAlso fix up things so the new support API demos are included in\nthe documentation.\n\nChange-Id: I4f073b82787f32560ba1fa5b6a23746ecc8aecdc\n"
    },
    {
      "commit": "93201f545b67da15cb69830a5988810aef52c0b2",
      "tree": "1386ffcba41a1e94de13ea6920cf11a296b8b9c6",
      "parents": [
        "e1a255a89f64730272a66b93f82ec348989a0899"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 09 15:05:35 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 09 21:11:06 2011 -0700"
      },
      "message": "KeyChain API refinements\n\nChange-Id: I177ab4642e6cd1aa13526c14f0a707175fd79655\n"
    },
    {
      "commit": "9e67587d022675f4b6f62e565b23745c4a550ed9",
      "tree": "365958f1eba6007aba9501ab9a17c55237f089ba",
      "parents": [
        "95f397adb13aa69b15b53bb089078d4dbdb269f1"
      ],
      "author": {
        "name": "Bruno Oliveira",
        "email": "btco@google.com",
        "time": "Tue Jun 07 01:23:02 2011 -0400"
      },
      "committer": {
        "name": "Bruno Oliveira",
        "email": "btco@google.com",
        "time": "Tue Jun 07 01:28:05 2011 -0400"
      },
      "message": "Integrating RandomMusicPlayer sample into tree.\n\nThis is a cherrypick of CL 112174 (originally written for\nhoneycomb-mr1) into the honeycomb-mr2 branch. Original CL:\nhttps://android-git.corp.google.com/g/#change,112174\n\nPatch Set 2: ammending to fix spaces in title (as suggsted by smain@)\n\nChange-Id: I1c6e2f4f3585bb65f9f87342445e21f27bed242d\n"
    },
    {
      "commit": "8643aa0179e598e78d938c59035389054535a229",
      "tree": "c1d0ab0f77329fb34231e45703687d21a601fc88",
      "parents": [
        "219451363d7c9e657cb856bebce34bc29d7876fa"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 20 12:12:33 2011 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Jun 06 18:46:03 2011 -0700"
      },
      "message": "Interrogation of the view hierarchy from an AccessibilityService.\n\n1. Views are represented as AccessibilityNodeInfos to AccessibilityServices.\n\n2. An accessibility service receives AccessibilityEvents and can ask\n   for its source and gets an AccessibilityNodeInfo which can be used\n   to get its parent and children infos and so on.\n\n3. AccessibilityNodeInfo contains some attributes and actions that\n   can be performed on the source.\n\n4. AccessibilityService can request the system to preform an action\n   on the source of an AccessibilityNodeInfo.\n\n5. ViewAncestor provides an interaction connection to the\n   AccessibiltyManagerService and an accessibility service uses\n   its connection to the latter to interact with screen content.\n\n6. AccessibilityService can interact ONLY with the focused window\n   and all calls are routed through the AccessibilityManagerService\n   which imposes security.\n\n7. Hidden APIs on AccessibilityService can find AccessibilityNodeInfos\n   based on some criteria. These API go through the AccessibilityManagerServcie\n   for security check.\n\n8. Some actions are hidden and are exposes only to eng builds for UI testing.\n\nChange-Id: Ie34fa4219f350eb3f4f6f9f45b24f709bd98783c\n"
    },
    {
      "commit": "75279904202357565cf5a1cb11148d01f42b4569",
      "tree": "db3b40af4fdfda1d46d1d4c9e471bf4630656036",
      "parents": [
        "77c1cc0aa4d088f54c3b36a05a19acfa5295c4da"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue May 24 18:39:45 2011 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jun 01 17:44:52 2011 -0700"
      },
      "message": "Collect historical network stats.\n\nPeriodically records delta network traffic into historical buckets to\nsupport other services, such NetworkPolicyManager and Settings UI.\n\nIntroduces NetworkStatsHistory structure which contains sparse, uniform\nbuckets of data usage defined by timestamps.  Service periodically\npolls NetworkStats and records changes into buckets.  It only persists\nto disk when substantial changes have occured.  Current parameters\ncreate 4 buckets each day, and persist for 90 days, resulting in about\n8kB of data per network.\n\nOnly records stats for \"well known\" network interfaces that have been\nclaimed by Telephony or Wi-Fi subsystems.  Historical stats are also\nkeyed off identity (such as IMSI) to support SIM swapping.\n\nChange-Id: Ia27d1289556a2bf9545fbc4f3b789425a01be53a\n"
    },
    {
      "commit": "c006f1aec15454782c35e028ad64d79a5c161cc1",
      "tree": "1cc9ecc18e55fce30c7054b21d7ecb326934e4f6",
      "parents": [
        "b145112effca63e770f52c5573980a204035b23a"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu May 19 17:12:49 2011 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jun 01 17:00:42 2011 -0700"
      },
      "message": "Policy and rules work for ConnectivityManager.\n\nTeach ConnectivityManager about UID-specific rules derived from policy,\nsuch as rejecting network traffic on \"paid\" interfaces.  Calls that\nreturn NetworkInfo now filter based on any REJECT rules in effect for\nthe calling UID.  (Added uid parameter if callers that still want all\ninterfaces.)\n\nChanged NetworkPolicyManager to derive rules based on current policy\ncombined with PowerManager and ActivityManager status, which it passes\nto ConnectivityService for eventual enforcement through netd.  When\nrules change the usability of a NetworkInfo for a specific UID, it also\ndispatches CONNECTIVITY_ACTION broadcasts to that UID.  Combined paid\nand background policy together to match current working definition.\n\nChange-Id: I797ea49439fcc487cfe2cbc16703d4b91ceb9af6\n"
    },
    {
      "commit": "31beb6db09174da843a4af243842c0d265f02402",
      "tree": "22da4120d4f1d657f75c702a00bbd049433b4de2",
      "parents": [
        "8c1132e3ceed8e1a8c696e2afe0e6fe456ccd7ef",
        "acd6f5fcfae019f7bd1fdb47b42c7771049df645"
      ],
      "author": {
        "name": "Debashish Chatterjee",
        "email": "debashishc@google.com",
        "time": "Thu May 26 07:45:28 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 26 07:45:28 2011 -0700"
      },
      "message": "Merge \"framework/base changes to add new voicemail provider sample.\""
    },
    {
      "commit": "ba1a667b1d6c95050f6c88316ac58fe9e0ff878b",
      "tree": "c045f3673f7471659f20899f94338da3e45a0d69",
      "parents": [
        "f8355d5489a52dcdd904afb48c0f170886becdae"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 24 21:54:37 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed May 25 10:27:46 2011 -0700"
      },
      "message": "Remove need for onActivityResult from KeyChain API\n\nChange-Id: I97bb9db06978f6dc039d22bfee116671d7b3e336\n"
    },
    {
      "commit": "8f40e5871213afb63ae4b68a44dd09e0a014e417",
      "tree": "fb0d8341fe80dd6be29ee8a7bf61ea1a0d2ff51a",
      "parents": [
        "dfe1645c2293db7d574473139aec6d5ce69efe0b",
        "65ee22aa01c038fbcf656748ba7655c17df3ea61"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 24 16:27:17 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 24 16:27:17 2011 -0700"
      },
      "message": "Merge \"Fix intermediate src dir for framework.jar\""
    },
    {
      "commit": "01425365a85e605139f612502f68954cad869e5b",
      "tree": "d4d6527b7c0bba01c64a1df2a57aed24469e0cd7",
      "parents": [
        "1ff04d8e567c03f697d99027e64ea31f5043fba7"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Tue May 24 02:57:37 2011 -0700"
      },
      "committer": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Tue May 24 15:22:07 2011 -0500"
      },
      "message": "Add public API to do NDEF push.\n\nChange-Id: I102da9bbc6d78577a26fa03ee363a60abc389d6c\n"
    },
    {
      "commit": "a4620793038b9a9163b26c6ece882cb454fcbf87",
      "tree": "450e8f355658bcc56bf19dc00f8c63d3464cb69f",
      "parents": [
        "442fa21e98835ceb966f196906907eb236d38d65"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri May 20 15:29:23 2011 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon May 23 18:39:56 2011 -0700"
      },
      "message": "Observe screen on/off events in NetworkPolicy.\n\nThe POLICY_REJECT_BACKGROUND policy requires that network traffic be\nblocked when a UID goes into the background.  Even if the UID has an\nactivity in the foreground, it\u0027s considered \"background\" if the screen\nis turned off.\n\nThis changes watches for SCREEN_ON/OFF broadcasts, and rule generation\nnow observes screen state.  It also introduces an observer pattern so\nthat ActivityManager doesn\u0027t directly know about NetworkPolicy, and\nmoves the service management into SystemServer.\n\nChange-Id: Ie7a84929d3ca60ae4578d47e19d5a8da10fd8d58\n"
    }
  ],
  "next": "acd6f5fcfae019f7bd1fdb47b42c7771049df645"
}
