)]}'
{
  "log": [
    {
      "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": "68d1b63e6c55599503b6dd4d8fdb57ba2bebfc14",
      "tree": "06c73bfbf02533f6e1e2c54e55315ddeacbe5f2c",
      "parents": [
        "1629c12a6afe633366df459dcb977598289e7822",
        "e659cea645c55fb6ecc744881e288007d53fc9a2"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Nov 27 18:48:42 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 27 18:48:42 2012 -0800"
      },
      "message": "am e659cea6: am d51ffbea: am faeabc7b: Merge \"Cache resource ID lookups in aapt\"\n\n* commit \u0027e659cea645c55fb6ecc744881e288007d53fc9a2\u0027:\n  Cache resource ID lookups in aapt\n"
    },
    {
      "commit": "d8dde13a63565dcd72bcf03a5088407b737ba793",
      "tree": "671cd9a2e230b1f960e673e8c2c1bbd3b535d9cc",
      "parents": [
        "aeb6268645d571dfc9f2d387a7ad2471039ddb54"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Nov 16 15:58:08 2012 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Nov 27 18:28:49 2012 -0800"
      },
      "message": "Cache resource ID lookups in aapt\n\nThis speeds up certain workloads considerably, particularly\nthose involved in buildling apps via the SDK.  Windows-based\nuse should particularly benefit from the change.\n\nChange-Id: I29f4b3a77400b201ee219729cc28a5e359c0c5e8\n"
    },
    {
      "commit": "08bb2316f12743fb43d18af94248c5e8caecfa85",
      "tree": "615d34830f1848d1953c35f115672433312f734a",
      "parents": [
        "34920823fcd8caff517a32c7aff2c080bfa4835a",
        "061b4fae3daf40c90b46e16b12e7f22142eb498c"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Nov 08 15:58:03 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 08 15:58:03 2012 -0800"
      },
      "message": "am 061b4fae: am a2bf6181: am 2c29deaa: am 6be441c5: Merge \"Add mechanism to kick keyguard to show the assistant\" into jb-mr1-lockscreen-dev\n\n* commit \u0027061b4fae3daf40c90b46e16b12e7f22142eb498c\u0027:\n  Add mechanism to kick keyguard to show the assistant\n"
    },
    {
      "commit": "061b4fae3daf40c90b46e16b12e7f22142eb498c",
      "tree": "152e92dd48a0043fae26e6bc18e524f847f3d617",
      "parents": [
        "70eeec5c06db3bf38e94d95a284d393e79bf87a0",
        "a2bf6181dfca0f93461fc041f2bd2444551a4515"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Nov 08 15:47:04 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 08 15:47:04 2012 -0800"
      },
      "message": "am a2bf6181: am 2c29deaa: am 6be441c5: Merge \"Add mechanism to kick keyguard to show the assistant\" into jb-mr1-lockscreen-dev\n\n* commit \u0027a2bf6181dfca0f93461fc041f2bd2444551a4515\u0027:\n  Add mechanism to kick keyguard to show the assistant\n"
    },
    {
      "commit": "d97b09b0f31152bd05ba69ca9249bcaf33d05e14",
      "tree": "83a62800d6b8407c4196498382c01344c1d64c03",
      "parents": [
        "8cd2f5bc64cefa139b7a302658b23d87230d223c",
        "bef827572ce9644253ea42ab91b11b8107d2300f"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Nov 08 15:37:01 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 08 15:37:01 2012 -0800"
      },
      "message": "am bef82757: am c7dc250d: am fe7e94a0: am 088fb915: Merge \"Add isSafeModeEnabled() API to WindowManagerService\" into jb-mr1-lockscreen-dev\n\n* commit \u0027bef827572ce9644253ea42ab91b11b8107d2300f\u0027:\n  Add isSafeModeEnabled() API to WindowManagerService\n"
    },
    {
      "commit": "bef827572ce9644253ea42ab91b11b8107d2300f",
      "tree": "91d080b4f6530643a26032fdf8c927ca85cc9bc3",
      "parents": [
        "6b646e82050c4364b400c1780b70131eea200439",
        "c7dc250d5a3dab93ff87e9986a71ae58ff124399"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Nov 08 15:32:09 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 08 15:32:09 2012 -0800"
      },
      "message": "am c7dc250d: am fe7e94a0: am 088fb915: Merge \"Add isSafeModeEnabled() API to WindowManagerService\" into jb-mr1-lockscreen-dev\n\n* commit \u0027c7dc250d5a3dab93ff87e9986a71ae58ff124399\u0027:\n  Add isSafeModeEnabled() API to WindowManagerService\n"
    },
    {
      "commit": "a2bf6181dfca0f93461fc041f2bd2444551a4515",
      "tree": "6ff5aa54451c772965985395ec17b0a400270802",
      "parents": [
        "79b08a499f5ac7aa4f9dcba4e6c5d9a54463799b",
        "2c29deaa2650091d9206b8fa93f8a447ee247d52"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Nov 08 13:13:23 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 08 13:13:23 2012 -0800"
      },
      "message": "am 2c29deaa: am 6be441c5: Merge \"Add mechanism to kick keyguard to show the assistant\" into jb-mr1-lockscreen-dev\n\n* commit \u00272c29deaa2650091d9206b8fa93f8a447ee247d52\u0027:\n  Add mechanism to kick keyguard to show the assistant\n"
    },
    {
      "commit": "4eeb4f664ac6b5901a8e874dcf70c0382295f792",
      "tree": "8b8ff28c8f7aec9bffc45eb32eae82a013d259d1",
      "parents": [
        "838195db8f69968690971977e4b615df39504465"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Nov 08 00:04:29 2012 -0800"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Nov 08 00:39:04 2012 -0800"
      },
      "message": "Add mechanism to kick keyguard to show the assistant\n\nFixes bug 7499778\n\nChange-Id: Ic9ea514feb489feeee6716f40bdb9792842f9515\n"
    },
    {
      "commit": "7b172a49a90ea6784dbfe0002474f9d4fd4ace1a",
      "tree": "05db15b0b2b922fa644199d48d8769624bacbe34",
      "parents": [
        "e4d08f11c49ff4c554df80c12fa2b5b04831e2f5",
        "58ed5d748c0b9b64845975ef5844ad313de7c3f6"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 13:08:25 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 07 13:08:25 2012 -0800"
      },
      "message": "am 58ed5d74: am 768d9e1a: Merge \"Correct executable bit for source files\"\n\n* commit \u002758ed5d748c0b9b64845975ef5844ad313de7c3f6\u0027:\n  Correct executable bit for source files\n"
    },
    {
      "commit": "58ed5d748c0b9b64845975ef5844ad313de7c3f6",
      "tree": "507af3879bc894eb854712a1fe6c0953805a895c",
      "parents": [
        "9197d170b770f2b87abd0cd0e13dcf71e5a181c2",
        "768d9e1a72ceee7d4a5f608776b87b62d6ce4a04"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 11:52:12 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 07 11:52:12 2012 -0800"
      },
      "message": "am 768d9e1a: Merge \"Correct executable bit for source files\"\n\n* commit \u0027768d9e1a72ceee7d4a5f608776b87b62d6ce4a04\u0027:\n  Correct executable bit for source files\n"
    },
    {
      "commit": "c7dc250d5a3dab93ff87e9986a71ae58ff124399",
      "tree": "2c6c24a7cf2d8df28a7db1df57ad8e848e3cec77",
      "parents": [
        "ae54cd6e3d34bebb344156e36ba2a78c0a3cdf72",
        "fe7e94a094746b608eb926fadc3ee1446bbb0d58"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Wed Nov 07 11:17:08 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 07 11:17:08 2012 -0800"
      },
      "message": "am fe7e94a0: am 088fb915: Merge \"Add isSafeModeEnabled() API to WindowManagerService\" into jb-mr1-lockscreen-dev\n\n* commit \u0027fe7e94a094746b608eb926fadc3ee1446bbb0d58\u0027:\n  Add isSafeModeEnabled() API to WindowManagerService\n"
    },
    {
      "commit": "3a084af2e90849aaa8beb3a610189e3399c63ea0",
      "tree": "ba4b87d227674fd68f9ea395649fde32778620f0",
      "parents": [
        "9d547d6934f64189e368c0b190fb4cf49c95a557"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 10:19:47 2012 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 10:27:31 2012 -0800"
      },
      "message": "Correct executable bit for source files\n\nMany media files and source code files were marked as executable in Git.\nRemove those.\n\nAlso a shell script and python script were not marked as executable.\n\nChange-Id: Ieb51bafb46c895a21d2e83696f5a901ba752b2c5\n"
    },
    {
      "commit": "bfec0a8616bc197ee3b7b71be6fed1939d0c3c4d",
      "tree": "72832bb9442488065ceae24e5d1ade9297d9f584",
      "parents": [
        "bb8abae507119612b4168b951354516b0bf7112d"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Mon Nov 05 20:05:22 2012 -0800"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Mon Nov 05 20:27:38 2012 -0800"
      },
      "message": "Add isSafeModeEnabled() API to WindowManagerService\n\nThis adds a means of determining when the device is in safe mode,\nas required by keyguard to disabled some features.\n\nChange-Id: I31d357e6738c92e1837f9e0263e5f3f4de66315a\n"
    },
    {
      "commit": "32d7f8cb867c9ef730d8fc78bccebed1ab7ac269",
      "tree": "c68ad0e80090978fdb237e5db42854ee7defd4e1",
      "parents": [
        "f991659c114a4a41908f8ae10054e7fbfc08fb51",
        "02822d059031d539f4b4b69ae0ee6c4ad52388f2"
      ],
      "author": {
        "name": "Maurice Chu",
        "email": "mochu@google.com",
        "time": "Fri Oct 19 10:34:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 19 10:34:10 2012 -0700"
      },
      "message": "Merge \"Enhance AIDL to take an explicit id for methods\""
    },
    {
      "commit": "dc8ae9f758e034d63104a48daf4d8014fe5dc13a",
      "tree": "b0038fb8ab87ca7edeae48bb9478ebd0ddc3595e",
      "parents": [
        "6cb9d909f06433c5b9130c55dc08ce8d55e7dac8",
        "26d76606aff48680fc61f9decaeddff3a568ca58"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Oct 18 15:32:57 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 18 15:32:57 2012 -0700"
      },
      "message": "am 26d76606: am d8149b03: Merge \"Layoutlib: Read and close XML files as soon as possible.\" into jb-mr1-dev\n\n* commit \u002726d76606aff48680fc61f9decaeddff3a568ca58\u0027:\n  Layoutlib: Read and close XML files as soon as possible.\n"
    },
    {
      "commit": "26d76606aff48680fc61f9decaeddff3a568ca58",
      "tree": "e4b0124a533bb86d396c8ee1700783a913f0dfa6",
      "parents": [
        "8c2bc7ccf16f201c10e1a4ffb66f66af63f85a91",
        "d8149b03a8676a49f6ca500eecafe79fadf046a7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Oct 18 15:30:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 18 15:30:24 2012 -0700"
      },
      "message": "am d8149b03: Merge \"Layoutlib: Read and close XML files as soon as possible.\" into jb-mr1-dev\n\n* commit \u0027d8149b03a8676a49f6ca500eecafe79fadf046a7\u0027:\n  Layoutlib: Read and close XML files as soon as possible.\n"
    },
    {
      "commit": "02822d059031d539f4b4b69ae0ee6c4ad52388f2",
      "tree": "142e0033575f86c8793903d17d2e32d0c455c292",
      "parents": [
        "f78283324400487a9acdb5d32536295fa85bd8f3"
      ],
      "author": {
        "name": "Maurice Chu",
        "email": "mochu@google.com",
        "time": "Thu Oct 18 14:47:13 2012 -0700"
      },
      "committer": {
        "name": "Maurice Chu",
        "email": "mochu@google.com",
        "time": "Thu Oct 18 14:47:13 2012 -0700"
      },
      "message": "Enhance AIDL to take an explicit id for methods\n\nThis adds an annotation to methods in AIDL of the form\n\"void myMethod() \u003d 3;\" to explicitly set the onTransact\nid for the method.  Either all methods must have explicitly\nannotated id\u0027s or none of them should be explicitly annotated.\nThere is error checking in the AIDL compiler\nfor duplicate id\u0027s and id\u0027s outside of the valid range.\n\nBug: 7353910\nChange-Id: I868045e3f112c9a279c573cea368a621116cbf77\n"
    },
    {
      "commit": "c48b0b940d632b9862ff6aa32665e37fe9e50845",
      "tree": "409e0ace2155f38c196a12f2e4e28282bfb9fde5",
      "parents": [
        "891b703f7b1e0e396d16477cc66a286da7161b49"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 17 18:38:49 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Oct 18 13:59:51 2012 -0700"
      },
      "message": "Layoutlib: Read and close XML files as soon as possible.\n\nBecause passing an InputStream to KXML does not close the\nstream after the file has been parsed, the files are staying\nlocked on windows until the gc and finalizers are run.\n\nThis change preload the XML files and close their stream,\nand then pass the content in a stream to the parser.\n\nChange-Id: Iabe27989dc616ec9e7de88e52b1ec3af9f007f7c\n"
    },
    {
      "commit": "d5a68ad8b73e2a3d6fcd74cdc11407d3b50cee94",
      "tree": "6589052f0734cc7c0471d4975b6e0000342f60f8",
      "parents": [
        "22bd3726be37a24e956d962d61657d8a3d54c985",
        "441f0672ed65feead06c4a05d7e6bf894ab2a982"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 17 17:24:01 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 17 17:24:01 2012 -0700"
      },
      "message": "am 441f0672: am 9c474738: Merge \"Update layoutlib for jb mr1.\" into jb-mr1-dev\n\n* commit \u0027441f0672ed65feead06c4a05d7e6bf894ab2a982\u0027:\n  Update layoutlib for jb mr1.\n"
    },
    {
      "commit": "441f0672ed65feead06c4a05d7e6bf894ab2a982",
      "tree": "632362e404519f1953742c7638d711112714f1f2",
      "parents": [
        "76a0142477e3ebda381d717572b21b355c172c26",
        "9c474738a29f77359a461035855d6e9b3935ade1"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 17 17:21:36 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 17 17:21:36 2012 -0700"
      },
      "message": "am 9c474738: Merge \"Update layoutlib for jb mr1.\" into jb-mr1-dev\n\n* commit \u00279c474738a29f77359a461035855d6e9b3935ade1\u0027:\n  Update layoutlib for jb mr1.\n"
    },
    {
      "commit": "891b703f7b1e0e396d16477cc66a286da7161b49",
      "tree": "9014f76e1ca354199b55e224eabd246cc9e022f2",
      "parents": [
        "e13ae648504661ca158d15aa415568e351b380c4"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Oct 16 19:56:03 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 17 17:15:31 2012 -0700"
      },
      "message": "Update layoutlib for jb mr1.\n\nStatus bar displayed on all devices.\nUpdate logic for displaying nav bar to whether or not\ndevice has soft button.\n\nUpdate navigation buttons to new look.\nRemove battery and signal from navigation bar.\n\nChange-Id: I8241d71269a17126218a3062ba727e379a8e6c25\n"
    },
    {
      "commit": "50e137c7df4d9781f92a26afc1bdba1d817c703d",
      "tree": "fcc2f3f3a902afd067f665bf278edb1a7e34d34d",
      "parents": [
        "6d016754f6e496ea879852aca01dbb40c88b1ac0",
        "136bd7c6aef8767dc208811ad87f90956333e78f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Oct 15 15:19:50 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 15 15:19:50 2012 -0700"
      },
      "message": "am 136bd7c6: am 477687c1: Merge \"Fix SDK layout rendering in Eclipse.\" into jb-mr1-dev\n\n* commit \u0027136bd7c6aef8767dc208811ad87f90956333e78f\u0027:\n  Fix SDK layout rendering in Eclipse.\n"
    },
    {
      "commit": "136bd7c6aef8767dc208811ad87f90956333e78f",
      "tree": "7de0319294174fe561f8ded96b43af48a7c47063",
      "parents": [
        "15ed1ba7c3de6ec4a9d48d4b07c2e277d3cd5cc7",
        "477687c1eb1919c54e2bffba2a740df3b4af6668"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Oct 15 15:17:46 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 15 15:17:46 2012 -0700"
      },
      "message": "am 477687c1: Merge \"Fix SDK layout rendering in Eclipse.\" into jb-mr1-dev\n\n* commit \u0027477687c1eb1919c54e2bffba2a740df3b4af6668\u0027:\n  Fix SDK layout rendering in Eclipse.\n"
    },
    {
      "commit": "6dfd0b39a63559999a769f93d5cdb48abe675344",
      "tree": "359dca57c2f65588bfdf06ccad73e63171829063",
      "parents": [
        "732d88e14e4418feba1b80cf1d6010cddb1d5de5"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Oct 15 14:38:31 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Oct 15 15:14:44 2012 -0700"
      },
      "message": "Fix SDK layout rendering in Eclipse.\n\nChange-Id: I0e9e85632012c0929b987ee9d0ccf7c25eece322\n"
    },
    {
      "commit": "337aa27a6307e0f40705ee676551dda4bf6cb894",
      "tree": "9d4721514cc14c709cae12073eb1ea1300365682",
      "parents": [
        "fee7ddedc99e377002aa6a88c3e287cb6e6c405d",
        "8ee7ac22e6aec5df5405a3e2130d593c50bc39b2"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sun Oct 07 11:53:43 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 07 11:53:43 2012 -0700"
      },
      "message": "am 8ee7ac22: am 33877e15: Merge \"Adds showWhenLocked attribute to Activities.\" into jb-mr1-dev\n\n* commit \u00278ee7ac22e6aec5df5405a3e2130d593c50bc39b2\u0027:\n  Adds showWhenLocked attribute to Activities.\n"
    },
    {
      "commit": "8ee7ac22e6aec5df5405a3e2130d593c50bc39b2",
      "tree": "bc4f5d4a5022e763385ea5ad566197cafe460594",
      "parents": [
        "f94da0619c524ec9faf7def068d6888aa5304c96",
        "33877e15b8bfc50bd874027689a4794aa93b923d"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sun Oct 07 11:50:54 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 07 11:50:54 2012 -0700"
      },
      "message": "am 33877e15: Merge \"Adds showWhenLocked attribute to Activities.\" into jb-mr1-dev\n\n* commit \u002733877e15b8bfc50bd874027689a4794aa93b923d\u0027:\n  Adds showWhenLocked attribute to Activities.\n"
    },
    {
      "commit": "33877e15b8bfc50bd874027689a4794aa93b923d",
      "tree": "f2315456796e88f0623bf4fed1f2a43a49f3696d",
      "parents": [
        "786d10921b2c525ed22b78ec40ae2554eec85912",
        "5962b12bedc4a1d0354816c1cd6b06ba04f6d807"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sun Oct 07 11:48:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Oct 07 11:48:50 2012 -0700"
      },
      "message": "Merge \"Adds showWhenLocked attribute to Activities.\" into jb-mr1-dev"
    },
    {
      "commit": "5962b12bedc4a1d0354816c1cd6b06ba04f6d807",
      "tree": "b9918fad07cf0e0ff84d510b6e17b31cf48394f9",
      "parents": [
        "88400d3a31139c40c4014faf86c243647087ef6c"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Oct 05 14:45:52 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sat Oct 06 13:09:58 2012 -0700"
      },
      "message": "Adds showWhenLocked attribute to Activities.\n\nThe new attribute allows an Activity such as the alarm to appear\non all users screens.\n\nBug: 7213805 fixed.\nChange-Id: If7866b13d88c04af07debc69e0e875d0adc6050a\n"
    },
    {
      "commit": "4bb6d07a8b93e37b20299374141118c07e7bc80c",
      "tree": "9a3703f080bb1ecb3cb35fb5ed7b2c0127dcf047",
      "parents": [
        "ba074a592add1f027c1fb9f629142622d7c5b695",
        "513b8ea16fdedd7b6debd718798c0220edd61d7f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 05 15:00:47 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 05 15:00:47 2012 -0700"
      },
      "message": "am 513b8ea1: am 3f1246a2: Merge \"Coordinate screen on with the window manager.\" into jb-mr1-dev\n\n* commit \u0027513b8ea16fdedd7b6debd718798c0220edd61d7f\u0027:\n  Coordinate screen on with the window manager.\n"
    },
    {
      "commit": "513b8ea16fdedd7b6debd718798c0220edd61d7f",
      "tree": "fe229c8da436d9e521b96c66f77b298119ad6d20",
      "parents": [
        "3c9376b38b1ed26995324cebe69f10f8a7147408",
        "3f1246a29b58cf78ebe674ec0905ad1795027aac"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 05 14:58:01 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 05 14:58:01 2012 -0700"
      },
      "message": "am 3f1246a2: Merge \"Coordinate screen on with the window manager.\" into jb-mr1-dev\n\n* commit \u00273f1246a29b58cf78ebe674ec0905ad1795027aac\u0027:\n  Coordinate screen on with the window manager.\n"
    },
    {
      "commit": "c38c9be031ddad5cf551b55458889f11e01dc5b2",
      "tree": "12902e6c1bf90145600bebe0aaa847cd243025f6",
      "parents": [
        "b29088540b2ecb3046277fbeb5ee1c87abe74d95"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 04 13:16:19 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 05 14:39:23 2012 -0700"
      },
      "message": "Coordinate screen on with the window manager.\n\nBug: 7267457\nChange-Id: Ic2c322253639e1f0b2e4e72a7b145025d0240f93\n"
    },
    {
      "commit": "451d49b34c8399a3479ca96addcc11857b6afb3e",
      "tree": "4c5d9f65392e664f0f5856fc81319082bdea4c35",
      "parents": [
        "4280233813c22663d3e9d100cac70eaccd0d2afc",
        "a39c5c369af24cc25f77b9ac97dfffae41c73eb6"
      ],
      "author": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Thu Oct 04 18:05:48 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 04 18:05:48 2012 -0700"
      },
      "message": "am a39c5c36: am 327424d6: Merge \"Plumbing to allow keyguard to be shown with user switcher (issue 7175023)\" into jb-mr1-dev\n\n* commit \u0027a39c5c369af24cc25f77b9ac97dfffae41c73eb6\u0027:\n  Plumbing to allow keyguard to be shown with user switcher (issue 7175023)\n"
    },
    {
      "commit": "a39c5c369af24cc25f77b9ac97dfffae41c73eb6",
      "tree": "0ac8f8991f652ec1691dd62364a611d6918c39b3",
      "parents": [
        "0f300c7045f150722532fd50dd78f6fcb4c4f395",
        "327424d69b99213e872e91f05feba2d0a137d6c7"
      ],
      "author": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Thu Oct 04 18:03:36 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 04 18:03:36 2012 -0700"
      },
      "message": "am 327424d6: Merge \"Plumbing to allow keyguard to be shown with user switcher (issue 7175023)\" into jb-mr1-dev\n\n* commit \u0027327424d69b99213e872e91f05feba2d0a137d6c7\u0027:\n  Plumbing to allow keyguard to be shown with user switcher (issue 7175023)\n"
    },
    {
      "commit": "f752202bee88e31ce765483ba2efa6999ae9c9ad",
      "tree": "bdab562d4383a67f3806617d2ca3aa3e53862d67",
      "parents": [
        "17f36d154f1a8ebe72fc35af332f5c0069503364"
      ],
      "author": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Wed Oct 03 20:03:18 2012 -0700"
      },
      "committer": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Thu Oct 04 17:53:01 2012 -0700"
      },
      "message": "Plumbing to allow keyguard to be shown with user switcher (issue 7175023)\n\n-\u003e Also reduced calls to lockNow, and moved this call in ActivityManagerService\n\nChange-Id: I9ba34ca902f7c0f71fa4ec302104688ca8d11f55\n"
    },
    {
      "commit": "85486bd33de1f3665f158df636217166c83199f5",
      "tree": "546a31ce1d6ce7f07b504ec53cda1c13275f3622",
      "parents": [
        "11adf0ad313a53d017bcbab81969b3c2d9547a17",
        "cd09cb8fb79442aa22018db9134ef1ef22059360"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Oct 03 18:50:18 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 03 18:50:18 2012 -0700"
      },
      "message": "am cd09cb8f: am 6fb7fd3a: Merge \"Fix issue #7267494, issue #7212347\" into jb-mr1-dev\n\n* commit \u0027cd09cb8fb79442aa22018db9134ef1ef22059360\u0027:\n  Fix issue #7267494, issue #7212347\n"
    },
    {
      "commit": "cd09cb8fb79442aa22018db9134ef1ef22059360",
      "tree": "5d738287c0b31f3547ad3e5fc1374ee59a00527f",
      "parents": [
        "a521abef83bc329931ef9b8230fe1ae9e1a87b3a",
        "6fb7fd3a0939413d8968fc0d404ed499d7f7dc52"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Oct 03 18:47:51 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 03 18:47:51 2012 -0700"
      },
      "message": "am 6fb7fd3a: Merge \"Fix issue #7267494, issue #7212347\" into jb-mr1-dev\n\n* commit \u00276fb7fd3a0939413d8968fc0d404ed499d7f7dc52\u0027:\n  Fix issue #7267494, issue #7212347\n"
    },
    {
      "commit": "c428aae6429c3fd5e2037c3793af399d9f6e23bf",
      "tree": "ea5452cc311e5440b6e3dbce5f856fbc8915b653",
      "parents": [
        "2e307a61a3730e6b65906f575d85258b197e3494"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Oct 03 16:38:22 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Oct 03 18:07:23 2012 -0700"
      },
      "message": "Fix issue #7267494, issue #7212347\n\n7267494 Calendar is not syncing\nCheck for whether a content provider is dead before returning\nit.  This is kind-of a band-aid, but probably the right thing\nto do; I\u0027m just not sure exactly the full details of why this\nproblem is happening.  Hopefully this \"fixes\" it, though I don\u0027t\nhave a way to repro to tell.\n\n7212347 System power off dialog is only visible to user 0\nMake it visible.  Also turn on some battery debugging stuff and\nclean it up so we can just keep it.\n\nChange-Id: I5add25bf2a763c8dfe1df23bc5c753a9ea5d157a\n"
    },
    {
      "commit": "13176e639cca469268dfb99128b7cdff2d75d098",
      "tree": "49b52b5ce79de30ba4886645fb32328c96d84136",
      "parents": [
        "63808449ca1214e1e321998fec175fa2f61b705a",
        "cd781ce2ebc104cf83d630889ae330a980635c9e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 01 15:25:30 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 01 15:25:30 2012 -0700"
      },
      "message": "am cd781ce2: am cb6f950f: Merge \"New internal API to eliminate poke locks.\" into jb-mr1-dev\n\n* commit \u0027cd781ce2ebc104cf83d630889ae330a980635c9e\u0027:\n  New internal API to eliminate poke locks.\n"
    },
    {
      "commit": "cd781ce2ebc104cf83d630889ae330a980635c9e",
      "tree": "49441593256d4bc0da72b06d42ca09ecdbdc1e66",
      "parents": [
        "385f4478a2eef0a93873eae9a846dd7712e5cabd",
        "cb6f950f15919794d26a55c20090fe5dacd11e4a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 01 15:22:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 01 15:22:45 2012 -0700"
      },
      "message": "am cb6f950f: Merge \"New internal API to eliminate poke locks.\" into jb-mr1-dev\n\n* commit \u0027cb6f950f15919794d26a55c20090fe5dacd11e4a\u0027:\n  New internal API to eliminate poke locks.\n"
    },
    {
      "commit": "1e3b98d47df596d0c4eadbdf60143709f8465b28",
      "tree": "ed63fa39f6d2db3b3a3fd9caf61174129198c6cc",
      "parents": [
        "1f7a09b5df9f859781d9cfa0053fad44c72c2168"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 30 18:58:59 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 01 14:27:34 2012 -0700"
      },
      "message": "New internal API to eliminate poke locks.\n\nAdded a new WindowManager.LayoutParams inputFeatures flag\nto disable automatic user activity behavior when an input\nevent is sent to a window.\n\nAdded a new WindowManager.LayoutParams field userActivityTimeout.\n\nBug: 7165399\nChange-Id: I204eafa37ef26aacc2c52a1ba1ecce1eebb0e0d9\n"
    },
    {
      "commit": "9370592e23cd3dd6dbf514fa21f4c17b76d60911",
      "tree": "10a4f3774f367bee3fd9a56c0d34868ae8a27e3b",
      "parents": [
        "586439676fdec80d5e0c6151fc17bb52be5cc6b0",
        "5d359a92658d01b0220f77eb294d6124848739bc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 01 11:41:11 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 01 11:41:11 2012 -0700"
      },
      "message": "am 5d359a92: am 5e3dcf72: Merge \"Remove clearUserActivityTimeout().\" into jb-mr1-dev\n\n* commit \u00275d359a92658d01b0220f77eb294d6124848739bc\u0027:\n  Remove clearUserActivityTimeout().\n"
    },
    {
      "commit": "5d359a92658d01b0220f77eb294d6124848739bc",
      "tree": "1665bb06f5806abb7111748377f5993c4f41e8f7",
      "parents": [
        "21a80ff4d1a557d8e33f86a218d204c0093fefc7",
        "5e3dcf7210bed65d8f9aec40d9da078daf76dead"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 01 11:39:30 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 01 11:39:30 2012 -0700"
      },
      "message": "am 5e3dcf72: Merge \"Remove clearUserActivityTimeout().\" into jb-mr1-dev\n\n* commit \u00275e3dcf7210bed65d8f9aec40d9da078daf76dead\u0027:\n  Remove clearUserActivityTimeout().\n"
    },
    {
      "commit": "843b014aca849a80fe1b2193dc53228f7a8525bd",
      "tree": "532c5bfa9fe2f954e73ade0a78b22ec62cdc3a32",
      "parents": [
        "6c7169722f943f3cc2c23ac6b7469f2e7dc2358f",
        "489c1e9f82250770004ec9080778546b040f6146"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 01 10:13:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 01 10:13:52 2012 -0700"
      },
      "message": "am 489c1e9f: am 7f813202: Merge \"Get rid of preventScreenOn().\" into jb-mr1-dev\n\n* commit \u0027489c1e9f82250770004ec9080778546b040f6146\u0027:\n  Get rid of preventScreenOn().\n"
    },
    {
      "commit": "edce6a797878792de2b0bde4360f3171b9e9d9d2",
      "tree": "4ff5110f64b5f48ec341bdb31330b02686936c5c",
      "parents": [
        "933a7546c857dba7704a15b7f7f7847934f14912"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 30 15:52:02 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 30 16:23:05 2012 -0700"
      },
      "message": "Remove clearUserActivityTimeout().\n\nThis function is not implemented and not needed.\n\nBug: 7165399\nChange-Id: Ib1c50fabad6292ccf670404ba70aeb1242c4614d\n"
    },
    {
      "commit": "489c1e9f82250770004ec9080778546b040f6146",
      "tree": "61fef4352d083d5269d8f04bc953e41bfe9b640f",
      "parents": [
        "bf07c7a93f7d8ae2d67eecf98ad76e60212e161b",
        "7f813202cb08a829b59e17be749ffee4a2f482b8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 28 19:08:17 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 28 19:08:17 2012 -0700"
      },
      "message": "am 7f813202: Merge \"Get rid of preventScreenOn().\" into jb-mr1-dev\n\n* commit \u00277f813202cb08a829b59e17be749ffee4a2f482b8\u0027:\n  Get rid of preventScreenOn().\n"
    },
    {
      "commit": "120664816a9bf325b618d8dd40febae2e3636ec8",
      "tree": "8a7b681cd87903f806b49504442d42a6921f1579",
      "parents": [
        "29dcd656dfa4c22855b12fb6ee7d6e2e4c4844c1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 28 18:21:36 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 28 18:21:36 2012 -0700"
      },
      "message": "Get rid of preventScreenOn().\n\nBug: 7165399\nChange-Id: I1968265ecd74fff4d85efd2ca03b1983425ea518\n"
    },
    {
      "commit": "ff7564ca186447e2445bb0af2a66fec43b1a838f",
      "tree": "c0ffcd888d3c4a18c1cc9db57b0dc90cc7ba3ccb",
      "parents": [
        "d03592587c6ccc657ee003fcb458b6bddc78057c",
        "0c9bbf4e13f2be6a4b930da2379c77e06a68c2cb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 26 17:27:11 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 26 17:27:11 2012 -0700"
      },
      "message": "am 0c9bbf4e: Merge \"Make DreamManagerService more robust.\" into jb-mr1-dev\n\n* commit \u00270c9bbf4e13f2be6a4b930da2379c77e06a68c2cb\u0027:\n  Make DreamManagerService more robust.\n"
    },
    {
      "commit": "62c82e4d92cc0b856059f905d81885f7808a0e7d",
      "tree": "74203a2312cd0c51235e4686f2162811aebea1e5",
      "parents": [
        "cef440f2a2bb8b6e8d082d12a67dc21f2ee65e3c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 26 01:30:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 26 15:24:27 2012 -0700"
      },
      "message": "Make DreamManagerService more robust.\n\nClearly isolated the DreamManagerService and DreamController\nresponsibilities.  DreamManagerService contains just enough logic to\nmanage the global synchronous behaviors.  All of the asynchronous\nbehaviors are in DreamController.\n\nAdded a new PowerManager function called nap() to request the device\nto start napping.  If it is a good time to nap, then the\nPowerManagerService will call startDream() on the DreamManagerService\nto start dreaming.\n\nFixed a possible multi-user issue by explicitly tracking for\nwhich user a dream service is being started and stopping dreams\nwhen the current user changes.  The user id is also passed to\nbindService() to ensure that the dream has the right environment.\n\nFix interactions with docks and the UI mode manager.  It is\nimportant that we always send the ACTION_DOCK_EVENT broadcast\nto the system so that it can configure audio routing and the like.\nWhen docked, the UI mode manager starts a dock app if there is\none, otherwise it starts a dream.\n\nThis change resolves issues with dreams started for reasons other\nthan a user activity timeout.\n\nBug: 7204211\nChange-Id: I3193cc8190982c0836319176fa2e9c4dcad9c01f\n"
    },
    {
      "commit": "0122a3db313d3a7b55e0dee5eae1d7798c0d55be",
      "tree": "a09e249293ad45d890ad6c01b3481d2ddcf4ae00",
      "parents": [
        "2832136bb6fcace61ef078051e94aa0a841aac15"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 26 10:11:54 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 26 11:14:50 2012 -0700"
      },
      "message": "Fix writing text version of styleable IDs. do not merge.\n\n(cherry picked from commit d16047434bca24b2811de7ea9d22de6ee0f87f79)\n\nChange-Id: Ic679080d5157daf77c35516c8f682bd13e2b4d96\n"
    },
    {
      "commit": "253f76357dc9acdb329f321190eca4f0b049b4af",
      "tree": "d791e452faaeb3ae4e13029ee29a6fbf7fad1690",
      "parents": [
        "b079d1f28089ad4de05162b7df0ace90bc40a5f3",
        "fb34490f4dca7aac623fb9a80fe9a2371107a786"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 26 10:44:22 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 26 10:44:22 2012 -0700"
      },
      "message": "am fb34490f: Merge \"Fix writing text version of styleable IDs.\"\n\n* commit \u0027fb34490f4dca7aac623fb9a80fe9a2371107a786\u0027:\n  Fix writing text version of styleable IDs.\n"
    },
    {
      "commit": "d16047434bca24b2811de7ea9d22de6ee0f87f79",
      "tree": "ef2b9d05669191e2b2a5f82e8e5b3063670c2dd2",
      "parents": [
        "5e8cbdc0bd6dfc51e6b54db1d5fd61347336d862"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 26 10:11:54 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 26 10:11:54 2012 -0700"
      },
      "message": "Fix writing text version of styleable IDs.\n\nChange-Id: I3f2614689a597de3fd46628c020cf649a808c82f\n"
    },
    {
      "commit": "ca94050705ff1886e622a09c2691a76e92c0f9d8",
      "tree": "c4f73c1cfc2b02c9adfc8d650b04f759cae165f1",
      "parents": [
        "93fd0f7a83f61d4d673b73e002bd9ad7d6ce562b",
        "50a94b86307793ca9d4d8f8564e5f2ba78fdde14"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 25 09:27:40 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 25 09:27:45 2012 -0700"
      },
      "message": "Merge into jb-mr1-dev\n\nChange-Id: I5a9970a011de789aaeb1c4c4ed58ae750071b135\n"
    },
    {
      "commit": "6d51571835737c7502a2e111ee9dc2527ebad984",
      "tree": "8298f3a36bdfbdb95a4fdd52681f82e7f396d31b",
      "parents": [
        "08681adda06f4699f85838861170fbb062c9fdfe"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 20 16:06:08 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Sep 21 19:49:43 2012 -0700"
      },
      "message": "Allow acquiring ContentProviders across users.\n\nOtherwise services like SystemUI will always open content://-style\nUris as USER_OWNER.  Surfaces through createPackageContextAsUser()\nwhich points all ContentResolver operations towards a given user.\n\nStart using in RemoteViews, so that Notifications correctly resolve\nimage Uris to the sending user.  Also add user support for \"content\"\nshell tool.\n\nBug: 7202982\nChange-Id: I8cb7fb8a812e825bb0b5833799dba87055ff8699\n"
    },
    {
      "commit": "dbf30edf7647939966747c27a65d00cd52d32fda",
      "tree": "217eae51740ea5d42d60f8f66709c22dcaa0ff38",
      "parents": [
        "7b6ec1f6fd4f2858063d2d441b6118ac22da5569"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 19 13:08:12 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 19 13:32:21 2012 -0700"
      },
      "message": "Update preloaded-classes for JB-MR1\n\nBug: 5213043\nChange-Id: I13fa58fded8e47d2f11d1fbe6724bd81ce35276a\n"
    },
    {
      "commit": "a41d5db2350108c1d2eceb83b677faed6b7893a8",
      "tree": "2d22f9db5827180b3864273395a96b87aa43ab45",
      "parents": [
        "9ff22e41d05aa66bede1e72767d67dcc2f2d500e",
        "79c95c3b50ff332f9c92430fd10a15eb648a0b02"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Sep 17 12:08:36 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 17 12:08:36 2012 -0700"
      },
      "message": "am 79c95c3b: am 5de96035: am 31820a35: Merge \"Add --output-text-symbols option to aapt.\"\n\n* commit \u002779c95c3b50ff332f9c92430fd10a15eb648a0b02\u0027:\n  Add --output-text-symbols option to aapt.\n"
    },
    {
      "commit": "9ff22e41d05aa66bede1e72767d67dcc2f2d500e",
      "tree": "40a0c5875283ac28e0e93ffdb6bdcb92aae8696b",
      "parents": [
        "178af5948d71c841278081c712506f7a7fca34b9",
        "8a67598eb780560b7efe4e1d9944c7cbcf83bbb1"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Sep 17 12:08:29 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 17 12:08:29 2012 -0700"
      },
      "message": "am 8a67598e: am cc9747ed: am d7252571: Merge \"Add --error-on-failed-insert option to aapt.\"\n\n* commit \u00278a67598eb780560b7efe4e1d9944c7cbcf83bbb1\u0027:\n  Add --error-on-failed-insert option to aapt.\n"
    },
    {
      "commit": "5de9603529ee01a416b5fa31074197565fde4482",
      "tree": "f610ba56bf685b21bbc81bbf4d6ed8b2d5640ef7",
      "parents": [
        "cc9747ed45302956a3ec9dd21f7b950b837dbfdd",
        "31820a35b2cf864a8dcb71d43e6fd21d54f49a2d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Sep 17 12:03:19 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 17 12:03:19 2012 -0700"
      },
      "message": "am 31820a35: Merge \"Add --output-text-symbols option to aapt.\"\n\n* commit \u002731820a35b2cf864a8dcb71d43e6fd21d54f49a2d\u0027:\n  Add --output-text-symbols option to aapt.\n"
    },
    {
      "commit": "cc9747ed45302956a3ec9dd21f7b950b837dbfdd",
      "tree": "4f5bf98606f87858b78a95bd8dd09e9e6a797716",
      "parents": [
        "f5437ee86a34751fa6d441b95282feb315e19eb6",
        "d72525718ea7ef3e1f97cf557365b143c8919a5b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Sep 17 12:03:12 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 17 12:03:12 2012 -0700"
      },
      "message": "am d7252571: Merge \"Add --error-on-failed-insert option to aapt.\"\n\n* commit \u0027d72525718ea7ef3e1f97cf557365b143c8919a5b\u0027:\n  Add --error-on-failed-insert option to aapt.\n"
    },
    {
      "commit": "f5de650ff1e161ea135c828e43515895343d2c0f",
      "tree": "4398a8d071f3322512e6c4d5f153fb9564865d6a",
      "parents": [
        "7714a2429b192c88e134ff67b969121bbaeb5457"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 11 14:45:22 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 11 18:19:00 2012 -0700"
      },
      "message": "Add --output-text-symbols option to aapt.\n\nLibrary projects in the SDK are built using --non-constant-id\nto generate a temporary R.java class.\nWhen the library is packaged with the application to generate an\napk, the R class is recreated with the proper IDs due to all the\nresources coming from the app and all the libraries.\n\nHowever for large apps with many libraries (each with their own\nR class in their package), this means a lot of unnecessary IDs:\nall R classes contains all the IDs including for resources from\nby projects they don\u0027t have access through the dependency graph.\n\nFor really large apps (X,000 resources), with lots of libraries\n(10+), this can generate tens of thousands of resources, which\ncan trigger dalvik\u0027s limit of 65K fields and methods per dex\nfiles.\n\nThis changes lets aapt generate not only the R class but a simple\ntext file containing the list of all those IDs so that it is\neasier to parse back. The SDK build system will not ask aapt\nto generate the R class of the libraries (through the\n--extra-packages option), instead it will then read this\nfile to know what IDs are needed for each library and generate\na much smaller R class for each library (using the same text\nfile output from compiling all the resources to get the final\ninteger value).\n\nChange-Id: I4db959fec372cf3ead9950e4b2b82fa1ae7eed2d\n"
    },
    {
      "commit": "7714a2429b192c88e134ff67b969121bbaeb5457",
      "tree": "13d8c0eeb0d9eee815e3444fd236924306861fe3",
      "parents": [
        "2415841c370d855d7f3a3e6a537e641c69a57097"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 05 17:49:21 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 11 18:17:22 2012 -0700"
      },
      "message": "Add --error-on-failed-insert option to aapt.\n\nThe new SDK build system give the ability to insert\nversionCode/Name and min/targetSdkVersion in the manifest\nbut aapt won\u0027t replace those if they already exist.\n\nThe main problem is that aapt doesn\u0027t actually fail when\nit doesn\u0027t replace them, making the output not what the\ndeveloper wanted.\n\nThis patch set adds an option to aapt to make it return\nan error if the insert failed because the attribute\nalready existed.\n\nChange-Id: I8938ec1238da407a8562c974e9598db39001ffd9\n"
    },
    {
      "commit": "9d9ece3c1e16001b63244459cdf4b428f4272d2e",
      "tree": "55fd2ecdeaaa791af1d21083482367d5b4d75d76",
      "parents": [
        "ce3ef0abaa17b12dc0626b06421d58bf06974ae2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 10 15:33:52 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 10 19:58:21 2012 -0700"
      },
      "message": "Animations for user switching.\n\nThe window manager now has a facility to provide a full-screen\nanimation, which the activity manager uses every time a user\nswitch happens.\n\nThe current animation is just a simple dumb slide until we get\na design from UX.\n\nAlso some cleanup: moved the portrait task animations to the\ndefault config so we always have an animation for them, and finally\ngot the java symbol stuff out of public.xml.\n\nChange-Id: I726f77422b2ef5f2d98f961f8da003e045f0ebe8\n"
    },
    {
      "commit": "e3e5349874fd1534cafe6f8c1cd28bf4f53181c3",
      "tree": "c04417c39b8415c08dc573d87bef0abd1f9fd462",
      "parents": [
        "be3267aad1faacc0ee767e746018e7b795a9b151",
        "61d09810a7b478810adc15af2495136255377e25"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 16:13:11 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 09 16:13:11 2012 -0700"
      },
      "message": "am 61d09810: am 3150feef: am bfe1ab82: Merge \"Fix aapt to get expat header files from the approved location.\"\n\n* commit \u002761d09810a7b478810adc15af2495136255377e25\u0027:\n  Fix aapt to get expat header files from the approved location.\n"
    },
    {
      "commit": "3150feef0b27ad34370904eb12875805f6c84e8a",
      "tree": "3ee1c94081aad597863e2b624fc3cc87efe403b6",
      "parents": [
        "3f3ce8adc7a4fcb5ec23a317c8b5063b61ac15a2",
        "bfe1ab825731d365fef169deab646d7ceeafc998"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 16:09:15 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 09 16:09:15 2012 -0700"
      },
      "message": "am bfe1ab82: Merge \"Fix aapt to get expat header files from the approved location.\"\n\n* commit \u0027bfe1ab825731d365fef169deab646d7ceeafc998\u0027:\n  Fix aapt to get expat header files from the approved location.\n"
    },
    {
      "commit": "ee15e1547531919effd77fa546daffaef94691a4",
      "tree": "c1d9284ef63cfb465dfab4151151a06a9c8bea40",
      "parents": [
        "bb60bc26020f3aabc50aa93ad9bf812af7f48f9c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 14:45:32 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 14:45:32 2012 -0700"
      },
      "message": "Fix aapt to get expat header files from the approved location.\n\nChange-Id: Ic7c796e048cfe98ee355c18b3708fee5ea716e2e\n"
    },
    {
      "commit": "01fcb728940c12498ab2c7503fe86a849725ea12",
      "tree": "95aaf7f4269fdd2d88ce2a7ca70374cf0be2b165",
      "parents": [
        "37ee53420ce47860807eb8eaeb454c12fa46797b",
        "8a802dbdabdfd27692c2e38b2c3adafe95566106"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Sep 07 10:17:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 10:17:55 2012 -0700"
      },
      "message": "Merge \"Use \"ldrtl\" and \"ldltr\" config qualifiers for RTL / LTR resources\" into jb-mr1-dev"
    },
    {
      "commit": "4b15ab66a064ba4fae3bb1ff474d8b5fc38e5490",
      "tree": "3e2ed5cd1404542b4ee79b5785a86e9fbac5b96d",
      "parents": [
        "f92b57ca8beb231e06a792db88ef3a4605901a7d"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 19:25:53 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 19:30:14 2012 -0700"
      },
      "message": "Fixing the build\n\nChange-Id: I123b128f5d9e50653d8d4ed73ea07920b370b0fb\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": "8a802dbdabdfd27692c2e38b2c3adafe95566106",
      "tree": "7b933dc6d1dcfb6cd4a7d0a349ce642641712c07",
      "parents": [
        "18e876806718e28edaa3cd9bb0262a9b400bc82b"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Wed Sep 05 13:12:02 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Sep 06 11:13:24 2012 -0700"
      },
      "message": "Use \"ldrtl\" and \"ldltr\" config qualifiers for RTL / LTR resources\n\n- we cannot use \"rtl\" / \"ltr\" qualifiers as they can conflict with ISO-639 Alpha-3\ncodespace which uses 3 letters for identifying a language code (and could use either\n\"rtl\" or \"ltr\" strings for defining a language in the future).\n\n- we are using instead \"ldrtl\" for RTL and \"ldltr\" for LTR resources. Those qualifiers\nare defined by more than 3 chars and outside of what is defined into ISO-639. They\nare also more understandable as \"ld\" prefix is for \"layoutdirection\"\n\nChange-Id: Id43e948103707e09bef63ebd54ac1779dde58e72\n"
    },
    {
      "commit": "de66e670a7753283fd5cdc75c2cd42c93cd499c0",
      "tree": "f898e4a410f610ac3eacd048393b9d97d46d9658",
      "parents": [
        "035ce2ca92742894f7f906c93d7d217c647aa19a",
        "5eb51defe39f765d6ebe868dba7f187f7dd990f6"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 04 15:02:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 15:02:06 2012 -0700"
      },
      "message": "Merge \"Add some new native deletage to layoutlib.\" into jb-mr1-dev"
    },
    {
      "commit": "035ce2ca92742894f7f906c93d7d217c647aa19a",
      "tree": "091278302dd86f6009db3d86ff95dd607fef8c11",
      "parents": [
        "167611811d4fd6318bc366128590701274488e84",
        "5f7979993979466c79ab4f38d83c6f2aca361662"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Sep 04 15:01:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 15:01:03 2012 -0700"
      },
      "message": "Merge \"Add support for \"-rtl\" in resources\" into jb-mr1-dev"
    },
    {
      "commit": "5eb51defe39f765d6ebe868dba7f187f7dd990f6",
      "tree": "b9ac2e0fcfa5e65d3558236751ff8018b467232f",
      "parents": [
        "34a75df63533914bbca95a82d2c89ca374b2645d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 04 13:59:17 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 04 15:00:52 2012 -0700"
      },
      "message": "Add some new native deletage to layoutlib.\n\nChange-Id: Ib53df6c944ecd9680bf929afe03b08bcaa61ad70\n"
    },
    {
      "commit": "20e809870d8ac1e5b848f2daf51b2272ef89bdfc",
      "tree": "c863b6c684d1d3b21752880bc9f52bd749545d01",
      "parents": [
        "2701f325a6d4acd920637d2ff6fd6972a9cf836b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 31 19:00:44 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 10:39:21 2012 -0700"
      },
      "message": "Add registering for explicit users.\n\nNew API to register as an explicit user, which allows you to\nalso select ALL to see broadcasts for all users.\n\nNew BroadcastReceiver API to find out which user the broadcast\nwas sent to.\n\nUse this in app widget service to handle per-user package broadcasts\nand boot completed broadcasts correctly.\n\nChange-Id: Ibbe28993bd4aa93900c79e412026c27863019eb8\n"
    },
    {
      "commit": "a492c3a7b2c18426fd0cb4d017eacbc368195dc5",
      "tree": "67744a8d91519d997cb761a697600041d74165fa",
      "parents": [
        "00453e7a0182b50cf01e65c97650b526284fe084"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 23 19:48:44 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 31 15:42:45 2012 -0700"
      },
      "message": "Initial draft of high-level multi-display APIs.\n\nThis patch introduces the ability to create a Context that\nis bound to a Display.  The context gets its configuration and\nmetrics from that display and is able to provide a WindowManager\nthat is bound to the display.\n\nTo make it easier to use, we also add a new kind of Dialog\ncalled a Presentation.  Presentation takes care of setting\nup the context as needed and watches for significant changes\nin the display configuration.  If the display is removed,\nthen the presentation simply dismisses itself.\n\nChange-Id: Idc54b4ec84b1ff91505cfb78910cf8cd09696d7d\n"
    },
    {
      "commit": "5ac72a29593ab9a20337a2225df52bdf4754be02",
      "tree": "dc5310e556b3662cb5f097b30e700a26d50a4db5",
      "parents": [
        "e217ee4d7a8223289a1af7363627c69956c46d41"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 29 18:32:08 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 30 14:33:22 2012 -0700"
      },
      "message": "Improve multi-user broadcasts.\n\nYou can now use ALL and CURRENT when sending broadcasts, to specify\nwhere the broadcast goes.\n\nSticky broadcasts are now correctly separated per user, and registered\nreceivers are filtered based on the requested target user.\n\nNew Context APIs for more kinds of sending broadcasts as users.\n\nUpdating a bunch of system code that sends broadcasts to explicitly\nspecify which user the broadcast goes to.\n\nMade a single version of the code for interpreting the requested\ntarget user ID that all entries to activity manager (start activity,\nsend broadcast, start service) use.\n\nChange-Id: Ie29f02dd5242ef8c8fa56c54593a315cd2574e1c\n"
    },
    {
      "commit": "7767eac3232ba2fb9828766813cdb481d6a97584",
      "tree": "41cc717fb9f11190e9da3dc12d61faf23a22861d",
      "parents": [
        "1552586283f329253edc4786a6cf40c5bb69ea36"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 23 18:25:40 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 24 13:53:13 2012 -0700"
      },
      "message": "Keep track of whether an app is installed for each user.\n\nThis add a new per-user state for an app, indicating whether\nit is installed for that user.\n\nAll system apps are always installed for all users (we still\nuse disable to \"uninstall\" them).\n\nNow when you call into the package manager to install an app,\nit will only install the app for that user unless you supply\na flag saying to install for all users.  Only being installed\nfor the user is just the normal install state, but all other\nusers have marked in their state for that app that it is not\ninstalled.\n\nWhen you call the package manager APIs for information about\napps, uninstalled apps are treated as really being not visible\n(somewhat more-so than disabled apps), unless you use the\nGET_UNINSTALLED_PACKAGES flag.\n\nIf another user calls to install an app that is already installed,\njust not for them, then the normal install process takes place\nbut in addition that user\u0027s installed state is toggled on.\n\nThe package manager will not send PACKAGE_ADDED, PACKAGE_REMOVED,\nPACKAGE_REPLACED etc broadcasts to users who don\u0027t have a package\ninstalled or not being involved in a change in the install state.\nThere are a few things that are not quite right with this -- for\nexample if you go through a full install (with a new apk) of an\napp for one user who doesn\u0027t have it already installed, you will\nstill get the PACKAGED_REPLACED messages even though this is\ntechnically the first install for your user.  I\u0027m not sure how\nmuch of an issue this is.\n\nWhen you call the existing API to uninstall an app, this toggles\nthe installed state of the app for that user to be off.  Only if\nthat is the last user user that has the app uinstalled will it\nactually be removed from the device.  Again there is a new flag\nyou can pass in to force the app to be uninstalled for all users.\n\nAlso fixed issues with cleaning external storage of apps, which\nwas not dealing with multiple users.  We now keep track of cleaning\neach user for each package.\n\nChange-Id: I00e66452b149defc08c5e0183fa673f532465ed5\n"
    },
    {
      "commit": "5f7979993979466c79ab4f38d83c6f2aca361662",
      "tree": "90c8b098b3c9a53a90c039641b0b7ba379d6b4eb",
      "parents": [
        "5e8e41e41aecd2a4951659a1f3507f3371e0cc47"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Jun 15 20:16:41 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Aug 23 14:55:33 2012 -0700"
      },
      "message": "Add support for \"-rtl\" in resources\n\n- fix bug #7035019 Need to have \"-rtl\" support for Resource\n\nChange-Id: Ic82145c2ac672729d8a6c695a5f343276a1a0a2c\n"
    },
    {
      "commit": "98365d7663cbd82979a5700faf0050220b01084d",
      "tree": "8a4ff3e0a8afd814ed29609b26aa1c6ade2367f6",
      "parents": [
        "848c2dc93b6795e171f3dd6f64ea0be65e2762ca"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 19 20:30:52 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 19 22:42:08 2012 -0700"
      },
      "message": "Refactor for multi-display support.\n\nSplit WindowManagerImpl into two parts, the WindowManager\ninterface implementation remains where it is but the global\ncommunications with the window manager are now handled by\nthe WindowManagerGlobal class.  This change greatly simplifies\nthe challenge of having separate WindowManager instances\nfor each Context.\n\nRemoved WindowManagerImpl.getDefault().  This represents the\nbulk of this change.  Most of the usages of this method were\neither to perform global functions (now handled by WindowManagerGlobal)\nor to obtain the default display (now handled by DisplayManager).\n\nExplicitly associate each new window with a display and make\nthe Display object available to the View hierarchy.\n\nAdd stubs for some new display manager API features.\n\nStart to split apart the concepts of display id and layer stack.\nsince they operate at different layers of abstraction.\nWhile it\u0027s true that each logical display uniquely corresponds to a\nsurface flinger layer stack, it is not necessarily the case that\nthey must use the same ids.  Added Display.getLayerStack()\nand started using it in places where it was relatively easy to do.\n\nChange-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61\n"
    },
    {
      "commit": "d2ae85d41ec1651dd1bf4c33fe31833ba5c5cff5",
      "tree": "a13ab2da158404c627977d9316501332cd863dd8",
      "parents": [
        "aeca6898041437a7e2ba68c1421b9be90669154d",
        "832cb229cd748505c90f74ae8154fc3557d61a73"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Fri Aug 17 13:03:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 13:03:15 2012 -0700"
      },
      "message": "Merge \"Adding a thumbnail scale down animation\" into jb-mr1-dev"
    },
    {
      "commit": "79af1dd54c16cde063152922b42c96d72ae9eca8",
      "tree": "142abf0037d20841712e88d65febcbbd92dd5561",
      "parents": [
        "f1b995f9d049cb5c7225b3b17f09369237a83ca2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 16 16:42:52 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 17 10:36:08 2012 -0700"
      },
      "message": "Switch public APIs to use new UserHandle class for identifying users.\n\nGets rid of \"yet another integer\" confusion.\n\nChange-Id: Id07ea7307aea7c62f0087c6663a1f1c08e2e5dee\n"
    },
    {
      "commit": "50a94b86307793ca9d4d8f8564e5f2ba78fdde14",
      "tree": "35173d50ebccc518c109ad3ff59f04a3d200360e",
      "parents": [
        "31bc7f9f218106343bf3b574d9598dfc8e6426a7"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Thu Aug 16 14:37:28 2012 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Thu Aug 16 14:54:26 2012 -0700"
      },
      "message": "Allow multiple \u0027parcelable\u0027 declarations in aidl files\n\nThis solves a problem with declaring multiple Parcelable static inner\nclasses.\n\nChange-Id: I5e42b412d6d937df19a388988be5aa58a8dbc3e4\n"
    },
    {
      "commit": "832cb229cd748505c90f74ae8154fc3557d61a73",
      "tree": "ff2c3b98b5bd2c91c195f39d320b14d56062a8f1",
      "parents": [
        "32e7bd9fe1343e365dc40c8d215b0d98df99a2de"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Fri Apr 13 09:32:47 2012 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu Aug 16 00:14:03 2012 -0700"
      },
      "message": "Adding a thumbnail scale down animation\n\nRecents animation will temporarily look a bit\nwrong, but a subsequent change will fix this."
    },
    {
      "commit": "9630704ed3b265f008a8f64ec60a33cf9dcd3345",
      "tree": "0c905e55ac062b625bf7a9ced250f05213d7873f",
      "parents": [
        "ff7e6ef4f18ff94a9836492ff3ccd1ba7f6804f3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 15:51:34 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 03:06:24 2012 -0700"
      },
      "message": "Power manager rewrite.\n\nThe major goal of this rewrite is to make it easier to implement\npower management policies correctly.  According, the new\nimplementation primarily uses state-based rather than event-based\ntriggers for applying changes to the current power state.\n\nFor example, when an application requests that the proximity\nsensor be used to manage the screen state (by way of a wake lock),\nthe power manager makes note of the fact that the set of\nwake locks changed.  Then it executes a common update function\nthat recalculates the entire state, first looking at wake locks,\nthen considering user activity, and eventually determining whether\nthe screen should be turned on or off.  At this point it may\nmake a request to a component called the DisplayPowerController\nto asynchronously update the display\u0027s powe state.  Likewise,\nDisplayPowerController makes note of the updated power request\nand schedules its own update function to figure out what needs\nto be changed.\n\nThe big benefit of this approach is that it\u0027s easy to mutate\nmultiple properties of the power state simultaneously then\napply their joint effects together all at once.  Transitions\nbetween states are detected and resolved by the update in\na consistent manner.\n\nThe new power manager service has is implemented as a set of\nloosely coupled components.  For the most part, information\nonly flows one way through these components (by issuing a\nrequest to that component) although some components support\nsending a message back to indicate when the work has been\ncompleted.  For example, the DisplayPowerController posts\na callback runnable asynchronously to tell the PowerManagerService\nwhen the display is ready.  An important feature of this\napproach is that each component neatly encapsulates its\nstate and maintains its own invariants.  Moreover, we do\nnot need to worry about deadlocks or awkward mutual exclusion\nsemantics because most of the requests are asynchronous.\n\nThe benefits of this design are especially apparent in\nthe implementation of the screen on / off and brightness\ncontrol animations which are able to take advantage of\nframework features like properties, ObjectAnimator\nand Choreographer.\n\nThe screen on / off animation is now the responsibility\nof the power manager (instead of surface flinger).  This change\nmakes it much easier to ensure that the animation is properly\ncoordinated with other power state changes and eliminates\nthe cause of race conditions in the older implementation.\n\nThe because of the userActivity() function has been changed\nso that it never wakes the device from sleep.  This change\nremoves ambiguity around forcing or disabling user activity\nfor various purposes.  To wake the device, use wakeUp().\nTo put it to sleep, use goToSleep().  Simple.\n\nThe power manager service interface and API has been significantly\nsimplified and consolidated.  Also fixed some inconsistencies\nrelated to how the minimum and maximum screen brightness setting\nwas presented in brightness control widgets and enforced behind\nthe scenes.\n\nAt present the following features are implemented:\n\n- Wake locks.\n- User activity.\n- Wake up / go to sleep.\n- Power state broadcasts.\n- Battery stats and event log notifications.\n- Dreams.\n- Proximity screen off.\n- Animated screen on / off transitions.\n- Auto-dimming.\n- Auto-brightness control for the screen backlight with\n  different timeouts for ramping up versus ramping down.\n- Auto-on when plugged or unplugged.\n- Stay on when plugged.\n- Device administration maximum user activity timeout.\n- Application controlled brightness via window manager.\n\nThe following features are not yet implemented:\n\n- Reduced user activity timeout for the key guard.\n- Reduced user activity timeout for the phone application.\n- Coordinating screen on barriers with the window manager.\n- Preventing auto-rotation during power state changes.\n- Auto-brightness adjustment setting (feature was disabled\n  in previous version of the power manager service pending\n  an improved UI design so leaving it out for now).\n- Interpolated brightness control (a proposed new scheme\n  for more compactly specifying auto-brightness levels\n  in config.xml).\n- Button / keyboard backlight control.\n- Change window manager to associated WorkSource with\n  KEEP_SCREEN_ON_FLAG wake lock instead of talking\n  directly to the battery stats service.\n- Optionally support animating screen brightness when\n  turning on/off instead of playing electron beam animation\n  (config_animateScreenLights).\n\nChange-Id: I1d7a52e98f0449f76d70bf421f6a7f245957d1d7\n"
    },
    {
      "commit": "756220bd1912535840388a6743830d2e59ad4964",
      "tree": "ee97c666d4bb1f015fd3e89463af09c712ce47e4",
      "parents": [
        "863b19bc8fcfa436011781b67a237fcce3cb703a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 16:45:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 16:51:38 2012 -0700"
      },
      "message": "Add API to create new contexts with custom configurations.\n\nThis allows you to, say, make a Context whose configuration\nis set to a different density than the actual density of the device.\n\nThe main API is Context.createConfigurationContext().  There is\nalso a new API on ContextThemeWrapper that allows you to apply\nan override context before its resources are retrieved, which\naddresses some feature requests from developers to be able to\ncustomize the context their app is running in.\n\nChange-Id: I88364986660088521e24b567e2fda22fb7042819\n"
    },
    {
      "commit": "c386ee56b995ec6562c4a20238ace2297562834b",
      "tree": "22a977ad36270904817dd8f4d36d378e847d9eae",
      "parents": [
        "aef4af4cd122ca5713110ccc7539828ce6e2f642",
        "c1c55afb474dd85a6205bc8ab94065f3ac38aa77"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 12:03:43 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 08 12:03:43 2012 -0700"
      },
      "message": "am c1c55afb: am e67f8c8c: Merge \"Normalize output from aapt d xmltree\"\n\n* commit \u0027c1c55afb474dd85a6205bc8ab94065f3ac38aa77\u0027:\n  Normalize output from aapt d xmltree\n"
    },
    {
      "commit": "c1c55afb474dd85a6205bc8ab94065f3ac38aa77",
      "tree": "abbf38d69839d0a2e4f3070aee28a7422a27d678",
      "parents": [
        "64ed6b2cfa6a4bb58f3f8a9b59d840cdce049c80",
        "e67f8c8c279e20fff5f426eccd062b709e6280ed"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 12:01:35 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 08 12:01:35 2012 -0700"
      },
      "message": "am e67f8c8c: Merge \"Normalize output from aapt d xmltree\"\n\n* commit \u0027e67f8c8c279e20fff5f426eccd062b709e6280ed\u0027:\n  Normalize output from aapt d xmltree\n"
    },
    {
      "commit": "e67f8c8c279e20fff5f426eccd062b709e6280ed",
      "tree": "e53054cf3446cc91228a1ea5ae48b0c803ca5cc6",
      "parents": [
        "d77d17c28d6f120ceb648747c7e2ef1a50215700",
        "429dad687bcb5f00587e8b91b3a614502907aaa1"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 11:21:28 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 08 11:21:29 2012 -0700"
      },
      "message": "Merge \"Normalize output from aapt d xmltree\""
    },
    {
      "commit": "537915828b45693e846a126292e026c5b4f05152",
      "tree": "6c47dca99eda5792f1fc006e0f20088ad4048db1",
      "parents": [
        "ec0feefd4422db1151aee722732d8c9528f6dfa8",
        "7d19e0242faac8017033dabb872cdf1542fa184c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 08 10:22:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 10:22:49 2012 -0700"
      },
      "message": "Merge \"More mult-user API work.\" into jb-mr1-dev"
    },
    {
      "commit": "7d19e0242faac8017033dabb872cdf1542fa184c",
      "tree": "ab12d3c6597bc42bc7c0dca10ded546192c5c249",
      "parents": [
        "03ad783c5078c7bd487e47bb2a2af67dfbe89f1a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:12:33 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:19:22 2012 -0700"
      },
      "message": "More mult-user API work.\n\n- You can now use android:singleUser with receivers and providers.\n- New API to send ordered broadcasts as a user.\n- New Process.myUserHandle() API.\n\nFor now I am trying out \"user handle\" as the name for the numbers\nrepresenting users.\n\nChange-Id: I754c713ab172494bb4251bc7a37a17324a2e235e\n"
    },
    {
      "commit": "b14c215eb2dd617214d867d38449eb1d1214d41c",
      "tree": "7d29a2b19aab3b7d5a8f49e080f394535f90ff10",
      "parents": [
        "53bec9af8b415af87cc51c065c8bec02e26759a6",
        "4b4b44381b133e9ab7418806c046774b7fd31393"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 13:20:50 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 07 13:20:50 2012 -0700"
      },
      "message": "am 4b4b4438: am 33c5670b: Merge \"Fewer warnings in aidl generated code.\"\n\n* commit \u00274b4b44381b133e9ab7418806c046774b7fd31393\u0027:\n  Fewer warnings in aidl generated code.\n"
    },
    {
      "commit": "4b4b44381b133e9ab7418806c046774b7fd31393",
      "tree": "b5fce87b6f9346cf9957938ee63c5debb5134deb",
      "parents": [
        "d7cb30484ba94ecb8f4844f45742bf2ffc004599",
        "33c5670b315810f1f3dc66fe8cd38f7b3e05f3ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 13:18:53 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 07 13:18:53 2012 -0700"
      },
      "message": "am 33c5670b: Merge \"Fewer warnings in aidl generated code.\"\n\n* commit \u002733c5670b315810f1f3dc66fe8cd38f7b3e05f3ac\u0027:\n  Fewer warnings in aidl generated code.\n"
    },
    {
      "commit": "b327c41e125a3be15a6c6c4dba318fe1b2392605",
      "tree": "f2a28c312caed39bd47fb8788aa514847a8476e6",
      "parents": [
        "dfac68eacc60c130e54345d98bd45c99573cb627"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 10:34:02 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 10:34:02 2012 -0700"
      },
      "message": "Fewer warnings in aidl generated code.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d19196\nChange-Id: If054e60c19dc73fe32f55d0fa1054309565a6de6\n"
    },
    {
      "commit": "758143ecfedbe08cc6c4fed0ad8ad7a854194ca4",
      "tree": "c7102e7f3b5f71180cb23d1a13c01158f558feb6",
      "parents": [
        "4cb3384772cf7015a4e05789470123efb07219d9"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 16:40:27 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 23:49:38 2012 -0700"
      },
      "message": "Window position not reported if the window is not moved.\n\n1.If a window is shown but never moved the window window\n  is never notified for its current location. Therefore,\n  accessibility nodes do not contain correct bounds in\n  screen coordinates.\n\nbug:6926295\n\nChange-Id: I7df18b095d33ecafffced75aba9e4f4693b0c393\n"
    },
    {
      "commit": "b49a065d9904567624a088857ecd1626fad91511",
      "tree": "e5a7dce90e878f97e3351a9ee1faa2f799155c39",
      "parents": [
        "cbb6b41aeff9d70bee30ac670237e45b35689cc0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Aug 03 19:03:24 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Aug 03 19:03:24 2012 -0700"
      },
      "message": "Fix build with density methods.\n\nChange-Id: I95c0a4f12db40f200a3a004394763beaef904232\n"
    },
    {
      "commit": "437a0fbd57662e1d9d260da6f62ff83da2769a7e",
      "tree": "7df1f02b3bcc2d3fc4e22926e55c33e712879419",
      "parents": [
        "a7ce1551a6c05d4f983e283b413cadb1ddc1026d",
        "59c009776dae5ccbdfb93d7151ff2065ca049dc3"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Aug 02 09:20:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 09:20:14 2012 -0700"
      },
      "message": "Merge \"Introduce multiple displays with DisplayContent.\" into jb-mr1-dev"
    },
    {
      "commit": "59c009776dae5ccbdfb93d7151ff2065ca049dc3",
      "tree": "45ffbc8d93e8f245ed1c78ffa64b8bcc5ae59355",
      "parents": [
        "fa14d824d235c33b137a429c3eb6818f273407ab"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Jul 30 12:10:24 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Aug 02 08:47:44 2012 -0700"
      },
      "message": "Introduce multiple displays with DisplayContent.\n\nFix a couple of bugs that turned up.\nRemove touch/focus from display. Add iterators for access.\nRespond to comments. Remove TODOs, and some deviceId parameters.\n\nChange-Id: Idcdb4f1979aa7b14634d450fd0333d6eff26994d\n"
    },
    {
      "commit": "908aecc3a63c5520d5b11da14a9383f885b7d126",
      "tree": "11806df7f127ea695474ae7ab490a95c19965508",
      "parents": [
        "b1980049855fd6c53e109b44ff012a053f9436f7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 31 16:37:34 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 01 10:54:39 2012 -0700"
      },
      "message": "Start moving away from DisplayMetrics.DENSITY_DEVICE.\n\nThis puts in most of the infrastructure needed to allow us to\nswitch between different densities at run time.  The main remaining\nuses of the global are to initialize the Bitmap object (not sure\nwhat to do about that since it doesn\u0027t have anything passed in\nthe constructor to get this information from), and being able to\nload drawables if we need a different density than what was preloaded\nby zygote.\n\nChange-Id: Ifdbfd6b7a5c59e6aa22e63b95b78d96af3d96848\n"
    },
    {
      "commit": "39df578acddb739d7608e458533904bf5814c0da",
      "tree": "e64efcaf4249b57618dcd0a5d48de16c600895f6",
      "parents": [
        "f063fa0c30be849d0e067fb40d6f388b7c0d8340"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Jul 27 14:30:59 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Jul 27 14:30:59 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I52bbebae38912a4fb71c96174b3d4d8eb6be10c1\n"
    },
    {
      "commit": "aa871b0ff0fb38112a1693e80e1146cecc5db21d",
      "tree": "9382c5c05be896dcb3f79b0ae0d2af7b9ecce034",
      "parents": [
        "fa25bf5382467b1018bd9af7f1cb30a23d7d59f7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 25 20:06:22 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 25 20:06:22 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: Ife2fd58447205407e41ce3d27e28a705b744bede\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"
    }
  ],
  "next": "212dfccc74e37521f771a52c8209b049fe984793"
}
