)]}'
{
  "log": [
    {
      "commit": "c28867a1d67121ce5963de135e3ae2b1dbd9a33d",
      "tree": "95da9070093882f0b95ee197f45f5b4a5e348d96",
      "parents": [
        "37f180b4a52e4c1d0b6a7b400b6579b7ff25f307"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 26 15:42:39 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 26 15:42:39 2013 -0700"
      },
      "message": "Use input transport for communications between app and IME.\n\nThe input method manager service now supplies an input channel for\ncommunication while creating an IME session on behalf of the\napplication.\n\nThis change significanly reduces the overhead of IME event dispatch\nby using a standard input channel to send input events rather than\nusing binder.  This results in fewer thread context switches\nand fewer object allocations.\n\nWhat\u0027s more, the IME may perform additional batching of the motion\nevents that it receives which may help it catch up if it is\ngetting behind while processing them.\n\nBug: 7984576\nBug: 8473020\nChange-Id: Ibe26311edd0060cdcae80194f1753482e635786f\n"
    },
    {
      "commit": "52a53526265c801b70eaf6dab1acf5c3f628f8a6",
      "tree": "37e128cc5a301edb375a4c106a28634b7f8d69a1",
      "parents": [
        "95ae9429ee3555f4a1f396da423413ba496bdf33"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Mar 14 10:59:38 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Mar 21 17:47:40 2013 -0700"
      },
      "message": "Separate sessionCreated and finishedEvents callbacks\n\nBug: 8276952\nChange-Id: If7051086c060fcce5d1e958ebbddec0784c851da\n"
    },
    {
      "commit": "294b512ecaa98a6a8ef12285ad14e7a4091b5d57",
      "tree": "d89983eed02f4cc3fc48fb50cd0d779ff345752b",
      "parents": [
        "2042cc403a6eba2de1c5220e8402b045bdf24192"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 19 14:08:59 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Mar 08 15:08:10 2013 -0800"
      },
      "message": "DO NOT MERGE - Full backup/restore now handles OBBs sensibly\n\nOBB backup/ restore is no longer handled within the target app\nprocess.  This is done to avoid having to require that OBB-using\napps have full read/write permission for external storage.\n\nThe new OBB backup service is a new component running in the\nsame app as the already-existing shared storage backup agent.\nThe backup infrastructure delegates backup/restore of apps\u0027\nOBB contents to this component (because the system process\nmay not itself read/write external storage).\n\nFrom the command line, OBB backup is enabled by using new\n-obb / -noobb flags with adb backup.  The default is noobb.\n\nFinally, a couple of nit fixes:\n\n- buffer-size mismatch between the writer and reader of chunked\n  file data has been corrected; now the reading side won\u0027t be\n  issuing an extra pipe read per chunk.\n\n- bu now explicitly closes the transport socket fd after\n  adopting it. This was benign but triggered a logged\n  warning about leaked fds.\n\n(Cherrypicked)\n\nChange-Id: I471f6348abcccb7bf1e1710b7beda9f23de53e14\n"
    },
    {
      "commit": "e3f23a36d86fedf6c8c6503378cd6d2190c5ab23",
      "tree": "cb4cb3a9598cd94d320203f7f1ba34842599b435",
      "parents": [
        "7be6d4c421cfa6f93079517d3ee54024c8049ae5"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 01 13:25:35 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 05 09:33:48 2013 -0800"
      },
      "message": "Add new WindowId for cross-process monitoring of focus.\n\nThis is a class representing a window and providing limited\ninteraction with it, which can be handed across processes.\n\nChange-Id: I22885f2064a9cc8c68d690a5858c2e28bbb6a0f3\n"
    },
    {
      "commit": "9908112fd085d8b0d91e0562d32eebd1884f09a5",
      "tree": "6e2d696a2a3f642f5317fa6be82913246c6864b1",
      "parents": [
        "35cd94ab97ac95401bafef8237d74e91d81ef08d"
      ],
      "author": {
        "name": "Ganesh Ganapathi Batta",
        "email": "ganeshg@broadcom.com",
        "time": "Tue Feb 05 15:28:33 2013 -0800"
      },
      "committer": {
        "name": "Matthew Xie",
        "email": "mattx@google.com",
        "time": "Wed Feb 27 18:08:14 2013 -0800"
      },
      "message": "Initial version of BLE support for Bluedroid\n\nThe API classes are hidden for now. Will unhide after API console\napproval.\nChange-Id: I8283dd562fd6189fdd15c866ef2efb8bbdbc4109\n"
    },
    {
      "commit": "09a247e9a86df068422cbe8b60430fb6583c028c",
      "tree": "d6f63d7f593bb9d062ff47ed655e0c73a1ba5893",
      "parents": [
        "5acb33af357b56fffb055997718b1e4aa97f53fc"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Feb 14 10:24:17 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Feb 19 15:26:37 2013 -0500"
      },
      "message": "New INotificationListener interface.\n\nUse with INotificationManager.registerListener(). Limited to\nsystem only right now.\n\nChange-Id: I65b6a8778267022cdc5e58eb75ae607a54b1cc52\n"
    },
    {
      "commit": "4c818473d43e0d3dcc325365221b26f48951bcdd",
      "tree": "d943152d7e8f3b8d1ed9e9dc8702b0364f3fdc9a",
      "parents": [
        "35185a9ccf016f1d5fbe055e89a6c4c79a247981"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Feb 12 17:18:44 2013 -0800"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Feb 12 17:18:44 2013 -0800"
      },
      "message": "Remove the unnecessary framework-res-package-target\n\nNow the dependency should be correctly established by\nframework_docs_LOCAL_JAVA_LIBRARIES.\n\nChange-Id: I4c0ed2d3fb2855539027c7a0eb663f5747ae3ebd\n"
    },
    {
      "commit": "6b2c7600e946b4130585f8665f9720d09feb6411",
      "tree": "e0472dad7ccbef7ae71fef4e7e3aed722b79af53",
      "parents": [
        "0b0952f24b804e0a6c6a20a0d36dde14c60913d2",
        "e47033f9294056ab54c63608ab0a46de995fae63"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Feb 12 13:58:44 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 12 13:58:44 2013 -0800"
      },
      "message": "am e47033f9: am 4d9aa17a: am 87db373a: am 2328a779: am 9eb66b2d: Merge \"Revert \"makefile changes for gcm javadocs\"\" into jb-mr1-dev\n\n# Via Android Git Automerger (4) and Android (Google) Code Review (2)\n* commit \u0027e47033f9294056ab54c63608ab0a46de995fae63\u0027:\n  Revert \"makefile changes for gcm javadocs\"\n"
    },
    {
      "commit": "2328a77980a8e4aa2dafac1b9a8e228877a7425c",
      "tree": "87b3e5d89ed51a09738b2ac4b77c6da1f1b84ba7",
      "parents": [
        "a95a64ddd6155e90308aa1368e2c8098d86e677f",
        "9eb66b2db4724da7a2d6575fee29840004f1a5df"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Feb 12 13:49:44 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 12 13:49:44 2013 -0800"
      },
      "message": "am 9eb66b2d: Merge \"Revert \"makefile changes for gcm javadocs\"\" into jb-mr1-dev\n\n# Via Android (Google) Code Review\n* commit \u00279eb66b2db4724da7a2d6575fee29840004f1a5df\u0027:\n  Revert \"makefile changes for gcm javadocs\"\n"
    },
    {
      "commit": "d3b50de375fd251e471aa0549e7677b4cf50e139",
      "tree": "d79cfd3359de6663bfd9f07ceaabfb37477cda93",
      "parents": [
        "5f9922d7c3bce158e4c7a58929d4075e7c91e32e"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Feb 12 21:39:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 21:39:28 2013 +0000"
      },
      "message": "Revert \"makefile changes for gcm javadocs\"\n\nThis reverts commit 5f9922d7c3bce158e4c7a58929d4075e7c91e32e\n\nChange-Id: I310f27b231c6d64d6d407ae451b189a6ecf6b34f\n"
    },
    {
      "commit": "590aaea06d25f22275b14630091451cc624b2c7d",
      "tree": "e7e4e190d4d27affc458e170929d9cec932e671c",
      "parents": [
        "d1a84242a7ba807310d8f8d389796c7163cb97a0",
        "6db87978270815b94280f0714b85389bb67c4a73"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Feb 12 10:55:43 2013 -0800"
      },
      "committer": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Feb 12 10:55:43 2013 -0800"
      },
      "message": "resolved conflicts for merge of 6db87978 to master\n\nChange-Id: If439f5730e32fb2044a1e464fab0f6afb6bf1d08\n"
    },
    {
      "commit": "a95a64ddd6155e90308aa1368e2c8098d86e677f",
      "tree": "012e91cd93323ee94b396be126c7fb3d3a7408ad",
      "parents": [
        "7209135504313c27da4f277235e00db6851b9577",
        "dc8ee2066a45adc6a57157c550e65317c8650ca0"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Feb 12 10:41:20 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 12 10:41:20 2013 -0800"
      },
      "message": "am dc8ee206: Merge \"Revert \"makefile changes for s.a.c\"\" into jb-mr1-dev\n\n# Via Android (Google) Code Review\n* commit \u0027dc8ee2066a45adc6a57157c550e65317c8650ca0\u0027:\n  Revert \"makefile changes for s.a.c\"\n"
    },
    {
      "commit": "343a89c2cd2bf4458eb24662010693ac590657b1",
      "tree": "e40487a2a80034fd66e6837c05018d29a1d41951",
      "parents": [
        "4c01047ec7b06aabeeae273c7871caa6c3029b84"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Feb 12 18:29:10 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 18:29:10 2013 +0000"
      },
      "message": "Revert \"makefile changes for s.a.c\"\n\nThis reverts commit 4c01047ec7b06aabeeae273c7871caa6c3029b84\n\nChange-Id: I4465cfa678717ff7c202347ae6ad36d12d5393bc\n"
    },
    {
      "commit": "f065d0f024c389aa76d2c1f4a47667634d456972",
      "tree": "de66d344e95592c24a6d1b991f71616910152f39",
      "parents": [
        "ae16a9b2cae5c2f750151a2f6e9e7f62efb38d66"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Mon Feb 11 20:58:43 2013 -0800"
      },
      "committer": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Mon Feb 11 20:58:43 2013 -0800"
      },
      "message": "remove sac make target to fix build\n\nChange-Id: I44c51e12225cd0b1d82bfb70129fefa8ba66e8b4\n"
    },
    {
      "commit": "e68cb0acd4f87f989250b2983f48f206e475a86e",
      "tree": "0917da3875ca9f9756f112c5556acb41c3a5f4f4",
      "parents": [
        "22f0d8c949b41c1494a4c6ca530853163fa86706",
        "a578ade219c07a04f7e8374939734de6ca7cc478"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Mon Feb 11 18:14:45 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 11 18:14:45 2013 -0800"
      },
      "message": "am a578ade2: am 1c4311cc: am 4af36f4e: am 96b1b403: am 4c01047e: makefile changes for s.a.c\n\n# Via Android Git Automerger (4) and Robert Ly (1)\n* commit \u0027a578ade219c07a04f7e8374939734de6ca7cc478\u0027:\n  makefile changes for s.a.c\n"
    },
    {
      "commit": "96b1b403b6ecf0daa2d7d0a8475e0d087790e457",
      "tree": "1f9d4a843d667126b06300cf1492e617f33e021a",
      "parents": [
        "337d3e3240e52ca5321029fdd23d2f2a3e1201d8",
        "4c01047ec7b06aabeeae273c7871caa6c3029b84"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Mon Feb 11 14:10:00 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 11 14:10:00 2013 -0800"
      },
      "message": "am 4c01047e: makefile changes for s.a.c\n\n# Via Robert Ly\n* commit \u00274c01047ec7b06aabeeae273c7871caa6c3029b84\u0027:\n  makefile changes for s.a.c\n"
    },
    {
      "commit": "4c01047ec7b06aabeeae273c7871caa6c3029b84",
      "tree": "fa8aca734349757249d94d58b2b38e740dc4b69d",
      "parents": [
        "7d8494913292dcdbe25d046cbef6e349d904b41c"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Fri Feb 08 14:37:13 2013 -0800"
      },
      "committer": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Mon Feb 11 13:38:31 2013 -0800"
      },
      "message": "makefile changes for s.a.c\n\nChange-Id: I501cc140994b2822c3df1f00639076f17765f256\n"
    },
    {
      "commit": "48e9219e6b0606aa04bcbdd3c9f1c6a72e9cd53e",
      "tree": "712b877ec8789d5b305473d714e8f0103951e34b",
      "parents": [
        "d68c0964765b48934f528600ba5fe51b45cb8ae1",
        "74e8693d310d75e98c5cf62340612d474f6f197b"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Thu Feb 07 18:03:20 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 07 18:03:20 2013 -0800"
      },
      "message": "am 74e8693d: am ddc0a7bd: am 11fa4460: am 9da9a7cd: am e60b6023: Merge \"makefile changes for gcm javadocs\" into jb-mr1-dev\n\n# Via Android Git Automerger (4) and others\n* commit \u002774e8693d310d75e98c5cf62340612d474f6f197b\u0027:\n  makefile changes for gcm javadocs\n"
    },
    {
      "commit": "9da9a7cda27a9b9a3a08e64e81d0ca10ac4c4ec1",
      "tree": "418d4d1ffaf4a4f22ec31fde1ce82ef684aa7a12",
      "parents": [
        "b68702eb0526633e51d9dbfe6fc971c168e1274a",
        "e60b6023ae4fdea932d0effc553dddc38117d235"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Thu Feb 07 17:53:29 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 07 17:53:29 2013 -0800"
      },
      "message": "am e60b6023: Merge \"makefile changes for gcm javadocs\" into jb-mr1-dev\n\n# Via Android (Google) Code Review (1) and Robert Ly (1)\n* commit \u0027e60b6023ae4fdea932d0effc553dddc38117d235\u0027:\n  makefile changes for gcm javadocs\n"
    },
    {
      "commit": "17cccb8ccbfb077334dcf37d9e93ec614ff8761e",
      "tree": "8ef0cb73060403ae9c8525d2d0f9141d159388f5",
      "parents": [
        "5ef8f22d71256e4db795796f7b88e5c4d7ee2843",
        "5a72553ef991d4821fcab4feaa3c1b23faca8724"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Fri Feb 08 01:06:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 08 01:06:10 2013 +0000"
      },
      "message": "Merge \"Move a few files from frameworks/opt/telephony to frameworks/base.\""
    },
    {
      "commit": "5a72553ef991d4821fcab4feaa3c1b23faca8724",
      "tree": "f97e7fbbe3777c306d531573144cfbb17e52bba2",
      "parents": [
        "484f3bdcd663d4ddc9521e788c45338b34a1691d"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Feb 07 17:03:05 2013 -0800"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Feb 07 17:03:05 2013 -0800"
      },
      "message": "Move a few files from frameworks/opt/telephony to frameworks/base.\n\nBecause ISms.aidl imports PendingIntent we couldn\u0027t easily\nmake opt/telephony part of the PDK. So this change moves\nISms.aidl and SmsRawData.*, which ISms.aidl also imports,\nback to frameworks/base.\n\nChange-Id: Ia64c6e771d5a292d9bfebb413a43f3745df55c85\n"
    },
    {
      "commit": "5f9922d7c3bce158e4c7a58929d4075e7c91e32e",
      "tree": "4650a457f02650e4ff1c937ba9c67d974bf24fe0",
      "parents": [
        "00f490844d89b146e5490204a5a483834950c489"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Dec 04 17:01:46 2012 -0800"
      },
      "committer": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Thu Feb 07 11:08:44 2013 -0800"
      },
      "message": "makefile changes for gcm javadocs\n\nChange-Id: I5653eb710f13f0a097cb1cf447469c4da7342fe2\n"
    },
    {
      "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": "feda56f2fbbb980f074bce4444578238544aefe1",
      "tree": "a73b7f8d4ce5ac85bc27990a1655dff19b49d9ad",
      "parents": [
        "1ea5c76050e2c3667cfb93863e3a493d681e7014",
        "25f97435302d8468afeb4ade9f00d5243b393082"
      ],
      "author": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Mon Feb 04 13:17:32 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 04 13:17:32 2013 -0800"
      },
      "message": "am 25f97435: am 5fca0efa: am 6cb87b08: am 65fd9811: am 2aa47b33: Merge \"Doc change: remove htmlified samples from docs build for now. Samples are still downloadable thorugh SDK Manager.\" into jb-mr1-dev\n\n# Via Android Git Automerger (4) and others\n* commit \u002725f97435302d8468afeb4ade9f00d5243b393082\u0027:\n  Doc change: remove htmlified samples from docs build for now. Samples are still downloadable thorugh SDK Manager.\n"
    },
    {
      "commit": "d8a6100208c277e131e94df314b84e41b067ad7a",
      "tree": "3adcb3e8159885d73d10876c9939ad54ca4cc70c",
      "parents": [
        "4dfff520362bdd6b3f661e3aa371b2efa527fc64",
        "9dbf24797b82f4c70a75051050f32e53d1c35fe6"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Mon Feb 04 13:17:21 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 04 13:17:21 2013 -0800"
      },
      "message": "am 9dbf2479: am 960deffd: am 78bf7c9c: am 1e7e1104: am 4b7161cb: docs: switch devsite doc build to use templates-sdk\n\n# Via Android Git Automerger (4) and Scott Main (1)\n* commit \u00279dbf24797b82f4c70a75051050f32e53d1c35fe6\u0027:\n  docs: switch devsite doc build to use templates-sdk\n"
    },
    {
      "commit": "4dfff520362bdd6b3f661e3aa371b2efa527fc64",
      "tree": "aad5f208f132ef21f016d670270eeb3610d0c96a",
      "parents": [
        "a6d9990fba38022073b0f1c1b156f16a4fe2dffd",
        "0dd750349004579ca3356a155eb8a86994a45df2"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Mon Feb 04 13:17:16 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 04 13:17:16 2013 -0800"
      },
      "message": "am 0dd75034: am d4f5ce03: am 6dfb4d0a: am 5c37151c: am e75cd4bf: docs: add hdf bool for deviste, used to change aspects of the templates\n\n# Via Android Git Automerger (4) and Scott Main (1)\n* commit \u00270dd750349004579ca3356a155eb8a86994a45df2\u0027:\n  docs: add hdf bool for deviste, used to change aspects of the templates\n"
    },
    {
      "commit": "3256aeed5fc85a1bfcaf5c9a6236519b96e908af",
      "tree": "bc66f867c200c63a694c5319765ec160f095f3a2",
      "parents": [
        "db911cf4098213777e738b05995f26833a9f493c",
        "61101eee367be6f3bae5974b05c4c3ae912bddaa"
      ],
      "author": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Mon Feb 04 13:17:08 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 04 13:17:08 2013 -0800"
      },
      "message": "am 61101eee: am e27f64b0: am 1417357e: am f8a9c509: am 7b32d32b: Merge \"Add build rule for ds (devsite) online docs.\" into jb-mr1-dev\n\n# Via Android Git Automerger (4) and others\n* commit \u002761101eee367be6f3bae5974b05c4c3ae912bddaa\u0027:\n  Add build rule for ds (devsite) online docs.\n"
    },
    {
      "commit": "65fd9811d3b00698ab25233543c2e49ef22c634b",
      "tree": "95149376e52a2001fffd660f21f6aa1a886d26c7",
      "parents": [
        "01084b96a15885698d602ee563dc8e18bf52acfa",
        "2aa47b336227a5d2bd1ee91f8fb4bd84be7e97f0"
      ],
      "author": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Fri Feb 01 13:28:08 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 01 13:28:08 2013 -0800"
      },
      "message": "am 2aa47b33: Merge \"Doc change: remove htmlified samples from docs build for now. Samples are still downloadable thorugh SDK Manager.\" into jb-mr1-dev\n\n# Via Android (Google) Code Review (1) and Dirk Dougherty (1)\n* commit \u00272aa47b336227a5d2bd1ee91f8fb4bd84be7e97f0\u0027:\n  Doc change: remove htmlified samples from docs build for now. Samples are still downloadable thorugh SDK Manager.\n"
    },
    {
      "commit": "1e7e1104c422d89393565bba591479c1ccbae06d",
      "tree": "a257123fafeb3db0a4ef4a74ac10dfffdadddb92",
      "parents": [
        "5c37151cb07519affba8e20018e0f0069d426527",
        "4b7161cbd44f64537d2c661e87868ea2689dd126"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Feb 01 13:28:01 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 01 13:28:01 2013 -0800"
      },
      "message": "am 4b7161cb: docs: switch devsite doc build to use templates-sdk\n\n# Via Scott Main\n* commit \u00274b7161cbd44f64537d2c661e87868ea2689dd126\u0027:\n  docs: switch devsite doc build to use templates-sdk\n"
    },
    {
      "commit": "5c37151cb07519affba8e20018e0f0069d426527",
      "tree": "85a8cd5bd6a146de0f7af005602741b09be32a18",
      "parents": [
        "68d0f32c09063e4ede569e84f8726dc1e96ab044",
        "e75cd4bfd176fbb1483ec5e17edfbd993adce40f"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Feb 01 13:27:57 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 01 13:27:57 2013 -0800"
      },
      "message": "am e75cd4bf: docs: add hdf bool for deviste, used to change aspects of the templates\n\n# Via Scott Main\n* commit \u0027e75cd4bfd176fbb1483ec5e17edfbd993adce40f\u0027:\n  docs: add hdf bool for deviste, used to change aspects of the templates\n"
    },
    {
      "commit": "f8a9c5090c7b9e4cfd27bf65093939381746e638",
      "tree": "413e144dc9a38b3bfe6387ee64bcf4de586c0cc9",
      "parents": [
        "d6e176c807d503beb1241ba73355a73ceca47e3e",
        "7b32d32bd38b423dd141e7ead89205b9b7929497"
      ],
      "author": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Fri Feb 01 13:27:48 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 01 13:27:48 2013 -0800"
      },
      "message": "am 7b32d32b: Merge \"Add build rule for ds (devsite) online docs.\" into jb-mr1-dev\n\n# Via Android (Google) Code Review (1) and Dirk Dougherty (1)\n* commit \u00277b32d32bd38b423dd141e7ead89205b9b7929497\u0027:\n  Add build rule for ds (devsite) online docs.\n"
    },
    {
      "commit": "2aa47b336227a5d2bd1ee91f8fb4bd84be7e97f0",
      "tree": "a3da70af0a1516cd0d8cea0d7d9cd96e7a3b0b35",
      "parents": [
        "3b4b067baec59207640d534be86c7c6c12b06678",
        "9cab5c01168ed96e718fa80e9dd05e04c5d3678c"
      ],
      "author": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Tue Jan 29 23:40:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 29 23:40:01 2013 +0000"
      },
      "message": "Merge \"Doc change: remove htmlified samples from docs build for now. Samples are still downloadable thorugh SDK Manager.\" into jb-mr1-dev"
    },
    {
      "commit": "9cab5c01168ed96e718fa80e9dd05e04c5d3678c",
      "tree": "25487fb1c29f96789c5c622958d1efa0e3cc13f9",
      "parents": [
        "e75cd4bfd176fbb1483ec5e17edfbd993adce40f"
      ],
      "author": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Tue Jan 29 15:00:04 2013 -0800"
      },
      "committer": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Tue Jan 29 15:21:20 2013 -0800"
      },
      "message": "Doc change: remove htmlified samples from docs build for now. Samples are still downloadable thorugh SDK Manager.\n\nChange-Id: I9cfa53e605f476daf6cf914f256df600e1d77f89\n"
    },
    {
      "commit": "4b7161cbd44f64537d2c661e87868ea2689dd126",
      "tree": "30fe4bd859cde4f5724f6182620278d582b95e57",
      "parents": [
        "e75cd4bfd176fbb1483ec5e17edfbd993adce40f"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Jan 29 14:20:13 2013 -0800"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Jan 29 14:20:13 2013 -0800"
      },
      "message": "docs: switch devsite doc build to use templates-sdk\n\nChange-Id: I933cbafa0712de47b4bcf72d2a7c4f99bf18f930\n"
    },
    {
      "commit": "e75cd4bfd176fbb1483ec5e17edfbd993adce40f",
      "tree": "14af677f817ffea8262c3c498abdf883b408d2c2",
      "parents": [
        "48f9f83ba27bf3a5cac224e30821836b3956c87c"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Jan 29 08:29:40 2013 -0800"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Jan 29 08:29:40 2013 -0800"
      },
      "message": "docs: add hdf bool for deviste, used to change aspects of the templates\n\nChange-Id: I6ad24252f10211a88d1f98e356bc9da97442f91c\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": "289ad99c17bd4eda0d2c153732e755a8a956609e",
      "tree": "0a4f35579ebc64ce256de5f9eee572d548134abf",
      "parents": [
        "df9fa4c602e986495fe8795fb800858b48693040"
      ],
      "author": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Mon Jan 28 15:43:49 2013 -0800"
      },
      "committer": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Mon Jan 28 15:43:49 2013 -0800"
      },
      "message": "Add build rule for ds (devsite) online docs.\n\nChange-Id: I4f1d099995402613f58401a506ba272abfb563ba\n"
    },
    {
      "commit": "cbb2a2a207796a68eff26be001af2797594d3b3c",
      "tree": "ae7d166136064ba408035fa741bb944441fddb47",
      "parents": [
        "29e4aa7abe6b0c62f31fb23b8572cd5b91f08f5c"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Mon Jan 28 15:27:47 2013 -0800"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Mon Jan 28 15:27:47 2013 -0800"
      },
      "message": "Delete frameworks/base/voip use voip-common from frameworks/opt/net/voip\n\nChange-Id: Ieaba759a0f69b45c4b8839cbed1fe757cdf190c5\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": "ca6486e7f579fa885b6213513f26ce2ca49f873b",
      "tree": "2bd8579677f10c991538b1dd3ab9dea656b1dff2",
      "parents": [
        "707a71e39e8e3bf284422265b680b73a7c63debf"
      ],
      "author": {
        "name": "Sasha Levitskiy",
        "email": "sanek@google.com",
        "time": "Mon Jan 14 16:59:33 2013 -0800"
      },
      "committer": {
        "name": "Sasha Levitskiy",
        "email": "sanek@google.com",
        "time": "Mon Jan 14 16:59:33 2013 -0800"
      },
      "message": "Removed Throttle Manager as obsolete\n\nChange-Id: I63e8514f34c880d0badaab33a347f54a80c84da6\n"
    },
    {
      "commit": "a06de0f29b58df9246779cc4bfd8f06f7205ddb6",
      "tree": "c8ecd3323c1112dd46a9470600eab5df022ca85c",
      "parents": [
        "2e9f65f978397d112dbfb134d374588515bb644a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 11 16:34:47 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 09 12:47:47 2013 -0800"
      },
      "message": "New \"app ops\" service.\n\nInitial implementation, tracking use of the vibrator, GPS,\nand location reports.\n\nAlso includes an update to battery stats to also keep track of\nvibrator usage (since I had to be in the vibrator code anyway\nto instrument it).\n\nThe service itself is only half-done.  Currently no API to\nretrieve the data (which once there will allow us to show you\nwhich apps are currently causing the GPS to run and who has\nrecently accessed your location), it doesn\u0027t persist its data\nlike it should, and no way to tell it to reject app requests\nfor various operations.\n\nBut hey, it\u0027s a start!\n\nChange-Id: I05b8d76cc4a4f7f37bc758c1701f51f9e0550e15\n"
    },
    {
      "commit": "545252f4fde6fbb70b07e97a120c7d1405758017",
      "tree": "e3238e5262e77cd91751c2302c30d828c539c55c",
      "parents": [
        "224333c03f1a9e14fce09207dc15d06365bf917b"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Dec 10 18:29:24 2012 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Dec 14 16:27:27 2012 -0800"
      },
      "message": "Refactoring of the screen magnification feature.\n\n1. This patch takes care of the case where a magnified window is covering an unmagnigied\n   one. One example is a dialog that covers the IME window.\n\nbug:7634430\n\n2. Ensuring that the UI automator tool can connect and correctly dump the screen.\n\nbug:7694696\n\n3. Removed the partial implementation for multi display magnification. It adds\n   unnecessary complexity since it cannot be implemented without support for\n   input from multiple screens. We will revisit when necessary.\n\n4. Moved the magnified border window as a surface in the window manager.\n\n5. Moved the mediator APIs on the window manager and the policy methods on the\n   WindowManagerPolicy.\n\n6. Implemented batch event processing for the accessibility input filter.\n\nChange-Id: I4ebf68b94fb07201e124794f69611ece388ec116\n"
    },
    {
      "commit": "f74f0deb298550307677c1abd27202e3debd02eb",
      "tree": "a89d1f97e0bb13a7c264c2b7d041558a61bfaa7d",
      "parents": [
        "39ec1ec187c3b27f2819aaf5a3a47819af56e44d"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Dec 04 15:12:49 2012 -0800"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Dec 04 15:12:49 2012 -0800"
      },
      "message": "Move numeric api files from frameworks/base to prebuilts/sdk\n\nSo they can be used in unbundled builds.\n\nBug: 7296240\n\nChange-Id: Ib0ba88387cb45ff795a4e8e3a836cf670d5016b7\n"
    },
    {
      "commit": "152e9bb81aa5b2ab4637f4b2dae04b3ce89fa891",
      "tree": "8e955c6db3279776dc6795e125513c4f2877ea44",
      "parents": [
        "4d58730ff587645778636e87312b1b17846fcac9"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Oct 12 20:15:29 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Dec 03 10:38:48 2012 -0800"
      },
      "message": "Refactoring of the screen magnification feature.\n\n1. The screen magnification feature was implemented entirely as a part of the accessibility\n   manager. To achieve that the window manager had to implement a bunch of hooks for an\n   external client to observe its internal state. This was problematic since it dilutes\n   the window manager interface and allows code that is deeply coupled with the window\n   manager to reside outside of it. Also the observer callbacks were IPCs which cannot\n   be called with the window manager\u0027s lock held. To avoid that the window manager had\n   to post messages requesting notification of interested parties which makes the code\n   consuming the callbacks to run asynchronously of the window manager. This causes timing\n   issues and adds unnecessary complexity.\n\n   Now the magnification logic is split in two halves. The first half that is responsible\n   to track the magnified portion of the screen and serve as a policy which windows can be\n   magnified and it is a part of the window manager. This part exposes higher level APIs\n   allowing interested parties with the right permissions to control the magnification\n   of a given display. The APIs also allow a client to be registered for callbacks on\n   interesting changes such as resize of the magnified region, etc. This part servers\n   as a mediator between magnification controllers and the window manager.\n\n   The second half is a controller that is responsible to drive the magnification\n   state based on touch interactions. It also presents a highlight when magnified to\n   suggest the magnified potion of the screen. The controller is responsible for auto\n   zooming out in case the user context changes - rotation, new actitivity. The controller\n   also auto pans if a dialog appears and it does not interesect the magnified frame.\n\nbug:7410464\n\n2. By design screen magnification and touch exploration work separately and together. If\n   magnification is enabled the user sees a larger version of the widgets and a sub section\n   of the screen content. Accessibility services use the introspection APIs to \"see\" what\n   is on the screen so they can speak it, navigate to the next item in response to a\n   gesture, etc. Hence, the information returned to accessibility services has to reflect\n   what a sighted user would see on the screen. Therefore, if the screen is magnified\n   we need to adjust the bounds and position of the infos describing views in a magnified\n   window such that the info bounds are equivalent to what the user sees.\n\n   To improve performance we keep accessibility node info caches in the client process.\n   However, when magnification state changes we have to clear these caches since the\n   bounds of the cached infos no longer reflect the screen content which just got smaller\n   or larger.\n\n   This patch propagates not only the window scale as before but also the X/Y pan and the\n   bounds of the magnified portion of the screen to the introspected app. This information\n   is used to adjust the bounds of the node infos coming from this window such that the\n   reported bounds are the same as the user sees not as the app thinks they are. Note that\n   if magnification is enabled we zoom the content and pan it along the X and Y axis. Also\n   recomputed is the isVisibleToUser property of the reported info since in a magnified\n   state the user sees a subset of the window content and the views not in the magnified\n   viewport should be reported as not visible to the user.\n\nbug:7344059\n\nChange-Id: I6f7832c7a6a65c5368b390eb1f1518d0c7afd7d2\n"
    },
    {
      "commit": "aeb3751559dc6a8ed71a9463700941303cf44ba0",
      "tree": "23b68899cfdf803e673339edf166775223df250f",
      "parents": [
        "38ddedc8adfc4d58f4bebe4a51149e4768d42f70",
        "9cd8c711a7ed0690e268fc930e6f8d0d594c17e5"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Fri Nov 30 10:05:20 2012 -0800"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Fri Nov 30 10:05:20 2012 -0800"
      },
      "message": "resolved conflicts for merge of 9cd8c711 to master\n\nChange-Id: I5e2d13c44f6a0589648e5934c8c36790da85e828\n"
    },
    {
      "commit": "1b86d75d312996133bc0c74fcb1f2c9f2a83fba0",
      "tree": "2ca0db119fb2d3644a919ac66642cba8f775a71f",
      "parents": [
        "71175f727bc1e094e72a410aca62392badffbf11"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu Nov 29 11:05:42 2012 -0800"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu Nov 29 12:52:51 2012 -0800"
      },
      "message": "Remove unused IExtendedNetworkService\n\nIt was used in the cupcake era for docomo.  Is not used anymore.\n\nBug 7633569\n\nChange-Id: I2ec826fc9a70d261a340957a937ed4c9f8e67c5c\n"
    },
    {
      "commit": "b2e14e0081202acb1462f1bb2058a245a2b6550a",
      "tree": "f37c81f9363a1fa6031608800619dadc267f0c3c",
      "parents": [
        "c30a8eae5ae5341c44c4f785b2e13ab458f5f22a"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Oct 09 11:12:32 2012 -0700"
      },
      "committer": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Oct 09 11:22:44 2012 -0700"
      },
      "message": "update pdk docs build target\n\nChange-Id: Ic7ecbc8cf582460112d63d365c0cfb824478fff1\n"
    },
    {
      "commit": "ea7e44f91b4855cce408911a8f943c66239a3489",
      "tree": "5f3a2962cf18db010c527c844548b6826739f35c",
      "parents": [
        "a59dc5ad25180eb93bf5747d986ea580803470a8",
        "33a436da507e77d5c106f8ffe5dea07f429cf270"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Fri Sep 28 16:01:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 28 16:01:44 2012 -0700"
      },
      "message": "Merge \"Run doc-comment-check only for checkbuild.\""
    },
    {
      "commit": "33a436da507e77d5c106f8ffe5dea07f429cf270",
      "tree": "2084fd3502c29c12aaea0b7990090c7f54eaedfb",
      "parents": [
        "5827b5f7b07bbdd53b53ba1494b93dad3761851e"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu Sep 27 17:09:53 2012 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Fri Sep 28 15:04:52 2012 -0700"
      },
      "message": "Run doc-comment-check only for checkbuild.\n\nCurrently doc-comment-check is the single longest-running process during\nthe make process. It usually takes 300-400s to finish on my Z600.\nWhat\u0027s worse, it\u0027s usually the last straggler build job.\nNot running this by default can save big build time.\n\nBug: 7253452\nChange-Id: Idc868197b59e42c6b583c66f13a0e6a1bc8d5d4e\n"
    },
    {
      "commit": "20828c1b3d3d21414a90195e7d12bfa42fdfb145",
      "tree": "1d48bda9ed09b4bdc44831f1b905f61d8f823181",
      "parents": [
        "7ed9bf58fab78776f0f80cfc90b217e4d109ef62",
        "43a903c763916dccdd4052037cf64774eeb7582a"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Sep 28 13:07:05 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 28 13:07:05 2012 -0700"
      },
      "message": "am 43a903c7: am 053644db: Merge \"add api level 17 to javadoc filter and update version number\" into jb-mr1-dev\n\n* commit \u002743a903c763916dccdd4052037cf64774eeb7582a\u0027:\n  add api level 17 to javadoc filter and update version number\n"
    },
    {
      "commit": "1134de0f1223d93f84b4475e74e934f1bd68f634",
      "tree": "33829ed151a26f653c05c03995f6f33f62ef78e4",
      "parents": [
        "10a2979e551243f337e4ae1a2951c282546c7433"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Sep 28 12:09:59 2012 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Sep 28 12:12:59 2012 -0700"
      },
      "message": "add api level 17 to javadoc filter and update version number\n\nChange-Id: I278f796b3390e57f4309f215e4f37359a80f0e83\n"
    },
    {
      "commit": "397c1d8467fa5ab64341a8edf37256572adda8c4",
      "tree": "cfb935cdec1062a5196c17f01564063e21af446a",
      "parents": [
        "c2ce8863392db86e3aa04cf2e65930901710ee3c",
        "0fd909bad1151cc39061abb52ae5b8be090e05dd"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 17 14:44:10 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 17 14:44:10 2012 -0700"
      },
      "message": "am 0fd909ba: am d65afc65: Merge \"More multi-user stuff.\" into jb-mr1-dev\n\n* commit \u00270fd909bad1151cc39061abb52ae5b8be090e05dd\u0027:\n  More multi-user stuff.\n"
    },
    {
      "commit": "5dc5a00e7ebadc085ded7e29feacd17e53698486",
      "tree": "8ab1c5a18136c424da04509b8274e581fe1f0edc",
      "parents": [
        "494ac35c27a0960f57b00bf8457f1956ecf149a2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Sep 15 19:33:48 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Sep 15 23:58:55 2012 -0700"
      },
      "message": "More multi-user stuff.\n\n- New public APIs to find out when a user goes to the foreground,\n  background, and is first initializing.\n- New activity manager callback to be involved in the user switch\n  process, allowing other services to let it know when it is safe\n  to stop freezing the screen.\n- Wallpaper service now implements this to handle its user switch,\n  telling the activity manager when it is done.  (Currently this is\n  only handling the old wallpaper going away, we need a little more\n  work to correctly wait for the new wallpaper to get added.)\n- Lock screen now implements the callback to do its user switch.  It\n  also now locks itself when this happens, instead of relying on\n  some other entity making sure it is locked.\n- Pre-boot broadcasts now go to all users.\n- WallpaperManager now has an API to find out if a named wallpaper is\n  in use by any users.\n\nChange-Id: I27877aef1d82126c0a1428c3d1861619ee5f8653\n"
    },
    {
      "commit": "9f8b2cbec7ab7de1d4a846480ffebae6e30c7b16",
      "tree": "e31e8de385baedeb1a876b461b367fdd8182d12e",
      "parents": [
        "a9fb5695648e58fdb117a91187f907b04f1554d2",
        "b15a6363f7e6df41614a5f4c3d12281844deea82"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 19:02:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 06 19:02:56 2012 -0700"
      },
      "message": "am b15a6363: am 6da58271: Merge \"Screen magnification - feature - framework.\" into jb-mr1-dev\n\n* commit \u0027b15a6363f7e6df41614a5f4c3d12281844deea82\u0027:\n  Screen magnification - feature - framework.\n"
    },
    {
      "commit": "1cf70bbf96930662cab0e699d70b62865766ff52",
      "tree": "2173762d4e4d7be76f5691cebd74e1bd8f2b8543",
      "parents": [
        "fa8d83d90444354e8eca6ca0e080bc917e5a1f32"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 10:53:34 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 18:56:17 2012 -0700"
      },
      "message": "Screen magnification - feature - framework.\n\nThis change is the initial check in of the screen magnification\nfeature. This feature enables magnification of the screen via\nglobal gestures (assuming it has been enabled from settings)\nto allow a low vision user to efficiently use an Android device.\n\nInteraction model:\n\n1. Triple tap toggles permanent screen magnification which is magnifying\n   the area around the location of the triple tap. One can think of the\n   location of the triple tap as the center of the magnified viewport.\n   For example, a triple tap when not magnified would magnify the screen\n   and leave it in a magnified state. A triple tapping when magnified would\n   clear magnification and leave the screen in a not magnified state.\n\n2. Triple tap and hold would magnify the screen if not magnified and enable\n   viewport dragging mode until the finger goes up. One can think of this\n   mode as a way to move the magnified viewport since the area around the\n   moving finger will be magnified to fit the screen. For example, if the\n   screen was not magnified and the user triple taps and holds the screen\n   would magnify and the viewport will follow the user\u0027s finger. When the\n   finger goes up the screen will clear zoom out. If the same user interaction\n   is performed when the screen is magnified, the viewport movement will\n   be the same but when the finger goes up the screen will stay magnified.\n   In other words, the initial magnified state is sticky.\n\n3. Pinching with any number of additional fingers when viewport dragging\n   is enabled, i.e. the user triple tapped and holds, would adjust the\n   magnification scale which will become the current default magnification\n   scale. The next time the user magnifies the same magnification scale\n   would be used.\n\n4. When in a permanent magnified state the user can use two or more fingers\n   to pan the viewport. Note that in this mode the content is panned as\n   opposed to the viewport dragging mode in which the viewport is moved.\n\n5. When in a permanent magnified state the user can use three or more\n   fingers to change the magnification scale which will become the current\n   default magnification scale. The next time the user magnifies the same\n   magnification scale would be used.\n\n6. The magnification scale will be persisted in settings and in the cloud.\n\nNote: Since two fingers are used to pan the content in a permanently magnified\n   state no other two finger gestures in touch exploration or applications\n   will work unless the uses zooms out to normal state where all gestures\n   works as expected. This is an intentional tradeoff to allow efficient\n   panning since in a permanently magnified state this would be the dominant\n   action to be performed.\n\nDesign:\n\n1. The window manager exposes APIs for setting accessibility transformation\n   which is a scale and offsets for X and Y axis. The window manager queries\n   the window policy for which windows will not be magnified. For example,\n   the IME windows and the navigation bar are not magnified including windows\n   that are attached to them.\n\n2. The accessibility features such a screen magnification and touch\n   exploration are now impemented as a sequence of transformations on the\n   event stream. The accessibility manager service may request each\n   of these features or both. The behavior of the features is not changed\n   based on the fact that another one is enabled.\n\n3. The screen magnifier keeps a viewport of the content that is magnified\n   which is surrounded by a glow in a magnified state. Interactions outside\n   of the viewport are delegated directly to the application without\n   interpretation. For example, a triple tap on the letter \u0027a\u0027 of the IME\n   would type three letters instead of toggling magnified state. The viewport\n   is updated on screen rotation and on window transitions. For example,\n   when the IME pops up the viewport shrinks.\n\n4. The glow around the viewport is implemented as a special type of window\n   that does not take input focus, cannot be touched, is laid out in the\n   screen coordiates with width and height matching these of the screen.\n   When the magnified region changes the root view of the window draws the\n   hightlight but the size of the window does not change - unless a rotation\n   happens. All changes in the viewport size or showing or hiding it are\n   animated.\n\n5. The viewport is encapsulated in a class that knows how to show,\n   hide, and resize the viewport - potentially animating that.\n   This class uses the new animation framework for animations.\n\n6. The magnification is handled by a magnification controller that\n   keeps track of the current trnasformation to be applied to the screen\n   content and the desired such. If these two are not the same it is\n   responsibility of the magnification controller to reconcile them by\n   potentially animating the transition from one to the other.\n\n7. A dipslay content observer wathces for winodw transitions, screen\n   rotations, and when a rectange on the screen has been reqeusted. This\n   class is responsible for handling interesting state changes such\n   as changing the viewport bounds on IME pop up or screen rotation,\n   panning the content to make a requested rectangle visible on the\n   screen, etc.\n\n8. To implement viewport updates the window manger was updated with APIs\n   to watch for window transitions and when a rectangle has been requested\n   on the screen. These APIs are protected by a signature level permission.\n   Also a parcelable and poolable window info class has been added with\n   APIs for getting the window info given the window token. This enables\n   getting some useful information about a window. There APIs are also\n   signature protected.\n\nbug:6795382\n\nChange-Id: Iec93da8bf6376beebbd4f5167ab7723dc7d9bd00\n"
    },
    {
      "commit": "cf8e40ebe20b4709cfb0d10937deffc31ef212e6",
      "tree": "0c64a91d1a942cb1c5ab1798caf7ab9d0030c41e",
      "parents": [
        "a5d983e2f2daceb59ed8df8a273b6034c5e2f732",
        "0322498e05cfec1d73bc5205d46ce86847e7dd79"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 29 18:20:09 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 29 18:20:09 2012 -0700"
      },
      "message": "am 0322498e: am 12631ec3: Merge \"Start implementing concept of \"running\" users.\" into jb-mr1-dev\n\n* commit \u00270322498e05cfec1d73bc5205d46ce86847e7dd79\u0027:\n  Start implementing concept of \"running\" users.\n"
    },
    {
      "commit": "12631ec35eafc466e0deef315daa5fdfb5066372",
      "tree": "6881c386ff69eca08eae5e90b5199aa4f36a48a5",
      "parents": [
        "ffc45b7d5708e706aeb19454c5172136761d214b",
        "80a4af2bbc6af42ae605e454bf89558e564f5244"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 29 18:15:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 18:15:07 2012 -0700"
      },
      "message": "Merge \"Start implementing concept of \"running\" users.\" into jb-mr1-dev"
    },
    {
      "commit": "c9996258caa89bb453af124410cb1edf63ad4b7a",
      "tree": "110cf8891816de6dbd45c9cb6a347a47bda1246c",
      "parents": [
        "d0691f7465a80d4a9d982a2f8fba5e0090ccd556",
        "f1b88ab27d8fc675121a53f44103c8730d66ccd1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 29 15:49:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 29 15:49:56 2012 -0700"
      },
      "message": "am f1b88ab2: am d5ea3b46: Merge \"Add initial multi-display support.\" into jb-mr1-dev\n\n* commit \u0027f1b88ab27d8fc675121a53f44103c8730d66ccd1\u0027:\n  Add initial multi-display support.\n"
    },
    {
      "commit": "bd6e1500aedc5461e832f69e76341bff0e55fa2b",
      "tree": "a7f6e0a3524872002f2904cc43d926166c3c4515",
      "parents": [
        "c53abc4d42a707caddf7ec9bb7d041125a09dbd7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 28 03:27:37 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 29 15:34:17 2012 -0700"
      },
      "message": "Add initial multi-display support.\n\nSplit the DisplayManager into two parts.  One part is bound\nto a Context and takes care of Display compatibility and\ncaching Display objects on behalf of the Context.  The other\npart is global and takes care of communicating with the\nDisplayManagerService, handling callbacks, and caching\nDisplayInfo objects on behalf of the process.\n\nImplemented support for enumerating Displays and getting\ncallbacks when displays are added, removed or changed.\n\nElaborated the roles of DisplayManagerService, DisplayAdapter,\nand DisplayDevice.  We now support having multiple display\nadapters registered, each of which can register multiple display\ndevices and configure them dynamically.\n\nAdded an OverlayDisplayAdapter which is used to simulate\nsecondary displays by means of overlay windows.  Different\nconfigurations of overlays can be selected using a new\nsetting in the Developer Settings panel.  The overlays can\nbe repositioned and resized by the user for convenience.\n\nAt the moment, all displays are mirrors of display 0 and\nno display transformations are applied.  This will be improved\nin future patches.\n\nRefactored the way that the window manager creates its threads.\nThe OverlayDisplayAdapter needs to be able to use hardware\nacceleration so it must share the same UI thread as the Keyguard\nand window manager policy.  We now handle this explicitly as\npart of starting up the system server.  This puts us in a\nbetter position to consider how we might want to share (or not\nshare) Loopers among components.\n\nOverlay displays are disabled when in safe mode or in only-core\nmode to reduce the number of dependencies started in these modes.\n\nChange-Id: Ic2a661d5448dde01b095ab150697cb6791d69bb5\n"
    },
    {
      "commit": "80a4af2bbc6af42ae605e454bf89558e564f5244",
      "tree": "3cd054c0e9576c9fda33fc36670ef10458f71ee8",
      "parents": [
        "def8b0f011b5b2b02235063d5021ddfd58aa0baf"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 27 19:18:31 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 28 16:30:55 2012 -0700"
      },
      "message": "Start implementing concept of \"running\" users.\n\nThe activity manager now keeps track of which users are running.\n\nInitially, only user 0 is running.\n\nWhen you switch to another user, that user is started so it is\nrunning.  It is only at this point that BOOT_COMPLETED is sent\nfor that user and it is allowed to execute anything.\n\nYou can stop any user except user 0, which brings it back to the\nsame state as when you first boot the device.  This is also used\nto be able to more cleaning delete a user, by first stopping it\nbefore removing its data.\n\nThere is a new broadcast ACTION_USER_STOPPED sent when a user is\nstopped; system services need to handle this like they currently\nhandle ACTION_PACKAGE_RESTARTED when individual packages are\nrestarted.\n\nChange-Id: I89adbd7cbaf4a0bb72ea201385f93477f40a4119\n"
    },
    {
      "commit": "1fd6e22b6a6c02f1c7a649a2c9caf419cf47e120",
      "tree": "aae9457b78956abe40fc8ecacee8c3f6ea953098",
      "parents": [
        "8acdf6962852c3fb09ecc058f858022c24de9b94",
        "510aa89ca32d120f60fd8186b9575dc74b57aada"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Aug 22 15:27:43 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 22 15:27:43 2012 -0700"
      },
      "message": "am 510aa89c: am 9f814ac5: Merge \"Remove obsolete variables.\" into jb-mr1-dev\n\n* commit \u0027510aa89ca32d120f60fd8186b9575dc74b57aada\u0027:\n  Remove obsolete variables.\n"
    },
    {
      "commit": "ddcca31997bc28d2305366a9fca6029288a12fa8",
      "tree": "ebcbf9ab98373ae47f2d39492107e49efb6e8681",
      "parents": [
        "02df84a3b1b4f68044d981bb345515ae9419d0c1"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Aug 21 17:23:00 2012 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Aug 21 17:24:03 2012 -0700"
      },
      "message": "Remove obsolete variables.\n\nBug: 6987838\nNow emma is only enabled for apks.\n\nChange-Id: Id8d198467076a8dff705195a8e051f3fb00d5660\n"
    },
    {
      "commit": "4bffb5ce974f1935f5e9d535fc662f383230c9ba",
      "tree": "b026eb688b197dc7266601da28672f366842d03f",
      "parents": [
        "905abe03f80c654a951311c547a8743596c6aa2d"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Fri Jun 08 12:17:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 15 15:34:18 2012 -0700"
      },
      "message": "modified to add pdk target\n\nChange-Id: Iedd667deb1ed6814433d03a0492a0b963a64d869\n"
    },
    {
      "commit": "258848d2ae04f447ff1c18023fa76b139fcc0862",
      "tree": "8736421f4007d81206d0f0ea8b32a2013508976a",
      "parents": [
        "75f0fac91bd7fa67fa76cfdd4e163b9f35be0432"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 10 17:06:33 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Aug 11 18:24:07 2012 -0700"
      },
      "message": "User Manager service to manage users and query user details\n\nMoved a bunch of methods from PackageManager to UserManager.\n\nFix launching of activities from recents to correct user.\n\nGuest creation APIs\n\nChange-Id: I0733405e6eb2829675665e225c759d6baa2b708f\n"
    },
    {
      "commit": "6fa9ad4afcd762aea519ff61811386c23d18ddb2",
      "tree": "5b027550205ada4b972f5cc3d8073819c07d9c75",
      "parents": [
        "c47f80f1ae96e3c8b6a750d68cc12dfbbca97254"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Jul 16 12:18:23 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 14:57:09 2012 -0700"
      },
      "message": "Location overhaul, major commit.\n\nThemes: Fused Location, Geofencing, LocationRequest.\n\nAPI changes\no Fused location is always returned when asking for location by Criteria.\no Fused location is never returned as a LocationProvider object, nor returned\n  as a provider String. This wouldn\u0027t make sense because the current API\n  design assumes that LocationProvider\u0027s have fixed properties (accuracy, power\n  etc).\no The fused location engine will tune itself based on the criteria passed\n  by applications.\no Deprecate LocationProvider. Apps should use fused location (via Criteria\n  class), instead of enumerating through LocationProvider objects. It is\n  also over-engineered: designed for a world with a plethora of location\n  providers that never materialized.\no The Criteria class is also over-engineered, with many methods that aren\u0027t\n  currently used, but for now we won\u0027t deprecate them since they may have\n  value in the future. It is now used to tune the fused location engine.\no Deprecate getBestProvider() and getProvider().\no Add getLastKnownLocation(Criteria), so we can return last known\n  fused locations.\no Apps with only ACCESS_COARSE_LOCATION _can_ now use the GPS, but the location\n  they receive will be fudged to a 1km radius. They can also use NETWORK\n  and fused locatoins, which are fudged in the same way if necessary.\no Totally deprecate Criteria, in favor of LocationRequest.\n  Criteria was designed to map QOS to a location provider. What we\n  really need is to map QOS to _locations_.\n  The death knell was the conflicting ACCURACY_ constants on\n  Criteria, with values 1, 2, 3, 1, 2. Yes not a typo.\no Totally deprecate LocationProvider.\no Deprecate test/mock provider support. They require a named provider,\n  which is a concept we are moving away from. We do not yet have a\n  replacement, but I think its ok to deprecate since you also\n  need to have \u0027allow mock locations\u0027 checked in developer settings.\n  They will continue to work.\no Deprecate event codes associated with provider status. The fused\n  provider is _always_ available.\no Introduce Geofence data object to provide an easier path fowards\n  for polygons etc.\n\nImplementation changes\no Fused implementation: incoming (GPS and NLP) location fixes are given\n  a weight, that exponentially decays with respect to age and accuracy.\n  The half-life of age is ~60 seconds, and the half-life of accuracy is\n  ~20 meters. The fixes are weighted and combined to output a fused\n  location.\no Move Fused Location impl into\n  frameworks/base/packages/FusedLocation\no Refactor Fused Location behind the IProvider AIDL interface. This allow us\n  to distribute newer versions of Fused Location in a new APK, at run-time.\no Introduce ServiceWatcher.java, to refactor code used for run-time upgrades of\n  Fused Location, and the NLP.\no Fused Location is by default run in the system server (but can be moved to\n  any process or pacakge, even at run-time).\no Plumb the Criteria requirements through to the Fused Location provider via\n  ILocation.sendExtraCommand(). I re-used this interface to avoid modifying the\n  ILocation interface, which would have broken run-time upgradability of the\n  NLP.\no Switch the geofence manager to using fused location.\no Clean up \u0027adb shell dumpsys location\u0027 output.\no Introduce config_locationProviderPackageNames and\n  config_overlay_locationProviderPackageNames to configure the default\n  and overlay package names for Geocoder, NLP and FLP.\no Lots of misc cleanup.\no Improve location fudging. Apply random vector then quantize.\no Hide internal POJO\u0027s from clients of com.android.location.provider.jar\n  (NLP and FLP). Introduce wrappers ProviderRequestUnbundled and\n  ProviderPropertiesUnbundled.\no Introduce ProviderProperties to collapse all the provider accuracy/\n  bearing/altitude/power plumbing (that is deprecated anyway).\no DELETE lots of code: DummyLocationProvider,\no Rename the (internal) LocationProvider to LocationProviderBase.\no Plumb pid, uid and packageName throughout\n  LocationManagerService#Receiver to support future features.\n\nTODO: The FLP and Geofencer have a lot of room to be more intelligent\nTODO: Documentation\nTODO: test test test\n\nChange-Id: Iacefd2f176ed40ce1e23b090a164792aa8819c55\n"
    },
    {
      "commit": "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"
    }
  ],
  "next": "481cd5a8938b5055942f3a9ccaeb08f373b8a4ea"
}
