)]}'
{
  "log": [
    {
      "commit": "b72d8b4091ab31948c91b0382a9b46afdc7ef7da",
      "tree": "125c59db3c5aec4d261966861c708f428030bd2d",
      "parents": [
        "a5c8d586f6ceff252336f72c6e15efbf4785e794"
      ],
      "author": {
        "name": "Christopher Lane",
        "email": "lanechr@google.com",
        "time": "Mon Mar 17 16:35:45 2014 -0700"
      },
      "committer": {
        "name": "Christopher Lane",
        "email": "lanechr@google.com",
        "time": "Mon Apr 14 14:10:36 2014 -0700"
      },
      "message": "Add support for custom TXT records in NSD\n\nChange-Id: I8e6dc9852ad4d273c71ad6a63a7fbd28a206806d\n"
    },
    {
      "commit": "037c33eae74bee2774897d969d48947f9abe254f",
      "tree": "9f6a33f07f48b9a08088eb287c1bfdd1fd97bda5",
      "parents": [
        "7289f3ab8f05db6206d696d75f460fadc05dc731"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 09 00:31:55 2014 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 10 20:46:14 2014 -0700"
      },
      "message": "Plumb display power state through display manager.\n\nDeclare a new method, Display.getState() to retrieve the actual\npower state of a display.\n\nImproved documentation for Intent.ACTION_SCREEN_ON and\nIntent.ACTION_SCREEN_OFF to clarify what they really mean in\nterms of the interactive state of the device.\n\nDeprecated PowerManager.isScreenOn() and replaced it with\nPowerManager.isInteractive() with a more suggestive name and\nbetter documentation.\n\nRedirect display power state changes to go through the display\nmanager first and only then head over to the power manager for\nlegacy compatibility.\n\nEliminated the bright here and woke here policy flags since they\nwere unused.  Simplified the input dispatch policy somewhat.\n\nEnsure that screen wake locks are respected up until the point\nwhen dozing really begins.\n\nFixed a regression in DreamService where onDreamingStarted\nmight be called before onWindowAttached.\n\nBug: 13133142\nBug: 13472578\nBug: 13929355\nBug: 13760290\nChange-Id: Iabef96921dd554ce3768fb18619cefc3230b5fb0\n"
    },
    {
      "commit": "422b2656741520448815b230f7c73ad67a4c4e95",
      "tree": "e3a1abb57d06feee4dfab11fe2e82382f4298004",
      "parents": [
        "8106dce705ba69d5bc0ccafa8e21068216f42a5f",
        "c45ff35f21cf84b6d31cf57ea4db1af0732da07c"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Mar 05 12:28:04 2014 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Mar 05 12:28:04 2014 -0800"
      },
      "message": "resolved conflicts for merge of c45ff35f to klp-modular-dev\n\nChange-Id: Id1799e49891dc72e2e9c55fd9f418ceee94a7875\n"
    },
    {
      "commit": "c45ff35f21cf84b6d31cf57ea4db1af0732da07c",
      "tree": "fc0df03835eab9d961478f5da8ebf9e95ed2f9fe",
      "parents": [
        "a6c59158761423551941f6ed338a117658e581ad",
        "1efc6e52d65389463ad52c32df02d68493df0f48"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Mar 05 00:57:22 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 05 00:57:22 2014 +0000"
      },
      "message": "am 1efc6e52: am 1d13f13d: Merge \"Adapt to underlying changes in the PBKDF2 implementation\" into klp-dev\n\n* commit \u00271efc6e52d65389463ad52c32df02d68493df0f48\u0027:\n  Adapt to underlying changes in the PBKDF2 implementation\n"
    },
    {
      "commit": "1d13f13deac644bddbae8a1f92642074a32d7a6c",
      "tree": "12ce3622ba1d2cb4495e280b6c94df2a05ba223f",
      "parents": [
        "1e995c76485f8a7477177886890b834c31e8d1a6",
        "28c8cfd7624902bbd72cb021fe000e0a8c818aab"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Mar 05 00:51:32 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 05 00:51:33 2014 +0000"
      },
      "message": "Merge \"Adapt to underlying changes in the PBKDF2 implementation\" into klp-dev"
    },
    {
      "commit": "a70d20f6037a5c3f6ee18244a3b547454beb8399",
      "tree": "85ba031ac1f2ba0122f6326620fc1360be6f3c3d",
      "parents": [
        "a4bd2cbe509911729c9f185b045e54d7528d8836",
        "818f83d965be3cc1af88a1c700115bff0dccf3a3"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Tue Mar 04 18:46:23 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 04 18:46:23 2014 +0000"
      },
      "message": "am 818f83d9: am bf7b64bd: am be659185: use min app launch time in AppLaunch perf test\n\n* commit \u0027818f83d965be3cc1af88a1c700115bff0dccf3a3\u0027:\n  use min app launch time in AppLaunch perf test\n"
    },
    {
      "commit": "818f83d965be3cc1af88a1c700115bff0dccf3a3",
      "tree": "e3f4ddc588e0ef7a8d99e079303bd0beb875e4e7",
      "parents": [
        "10226c2af4a09bf8e9ec2a6be661e3c8e6d1f00a",
        "bf7b64bd30bc1e7fabcfc7f46132f504b30ba97c"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Tue Mar 04 18:42:17 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 04 18:42:17 2014 +0000"
      },
      "message": "am bf7b64bd: am be659185: use min app launch time in AppLaunch perf test\n\n* commit \u0027bf7b64bd30bc1e7fabcfc7f46132f504b30ba97c\u0027:\n  use min app launch time in AppLaunch perf test\n"
    },
    {
      "commit": "be6591856bd62e14d7c87dd927db0cbbed242d81",
      "tree": "2629554925d9f7f867c72d9663085ec064e03813",
      "parents": [
        "81479358decb0a2cefbb8245e0f56ed0e966d697"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Wed Feb 19 17:58:38 2014 -0800"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Tue Mar 04 18:35:05 2014 +0000"
      },
      "message": "use min app launch time in AppLaunch perf test\n\nChange-Id: Id3a5872ff29fba5daeff058f0842fd011e50a0a1\n(cherry picked from commit 2861a89bed9066e206917c41357a5e589e8482cb)\n"
    },
    {
      "commit": "28c8cfd7624902bbd72cb021fe000e0a8c818aab",
      "tree": "4964dd99db6fe4536ec4e386e9f21d58d5f26507",
      "parents": [
        "4ef0aabe93877b7f30645b873fbc003651151f2f"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jan 13 13:48:22 2014 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Mar 03 17:49:30 2014 -0800"
      },
      "message": "Adapt to underlying changes in the PBKDF2 implementation\n\nWe need to specify \"PBKDF2WithHmacSHA1And8bit\" now in order to get precisely\nthe same output as was previously generated with \"PBKDF2WithHmacSHA1\".  We\nalso now try both when it\u0027s ambiguous which was used to generate the archive\nchecksums.\n\nBug 12494407\n\nCherry-pick from master.\n\nChange-Id: I2d6081dd62f50f7d493045150b327ed120de7abd\n"
    },
    {
      "commit": "2687550272ba061448f5d5b914700dc335299ee7",
      "tree": "fc68c5ecec24ec2aa120ccf490d7a56573704a73",
      "parents": [
        "d43ad2f35abcc647f7985abd09ed9de5899faf18"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 30 21:47:47 2014 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 20 13:39:13 2014 -0800"
      },
      "message": "Add a new \"doze mode\" based on Dream components.\n\nWhen a doze component has been specified in a config.xml resource\noverlay, the power manager will try to start a preconfigured dream\nwhenever it would have otherwise gone to sleep and turned the\nscreen off.  The dream should render whatever it intends to show\nthen call startDozing() to tell the power manager to put the display\ninto a low power \"doze\" state and allow the application processor\nto be suspended.  The dream may wake up periodically using the\nalarm manager or other features to update the contents of the display.\n\nAdded several new config.xml resources related to dreams and dozing.\nIn particular for dozing there are two new resources that pertain to\ndecoupling auto-suspend mode and interactive mode from the display\nstate.  This is a requirement to enable the application processor\nand other components to be suspended while dozing.  Most devices\ndo not support these features today.\n\nConsolidated the power manager\u0027s NAPPING and DREAMING states into one\nto simplify the logic.  The NAPPING state was mostly superfluous\nand simply indicated that the power manager should attempt to start\na new dream.  This state is now tracked in the mSandmanSummoned field.\n\nAdded a new DOZING state which is analoguous to DREAMING.  The normal\nstate transition is now: AWAKE -\u003e DREAMING -\u003e DOZING -\u003e ASLEEP.\nThe PowerManager.goToSleep() method now enters the DOZING state instead\nof immediately going to sleep.\n\nWhile in the doze state, the screen remains on.  However, we actually\ntell the rest of the system that the screen is off.  This is somewhat\nunfortunate but much of the system makes inappropriate assumptions\nabout what it means for the screen to be on or off.  In particular,\nscreen on is usually taken to indicate an interactive state where\nthe user is present but that\u0027s not at all true for dozing (and is\nonly sometimes true while dreaming).  We will probably need to add\nsome more precise externally visible states at some point.\n\nThe DozeHardware interface encapsulates a generic microcontroller\ninterface to allow a doze dream for off-loading rendering or other\nfunctions while dozing.  If the device possesses an MCU HAL for dozing\nthen it is exposed to the DreamService here.\n\nRemoved a number of catch blocks in DreamService that caught Throwable\nand attempted to cause the dream to finish itself.  We actually just\nwant to let the process crash.  Cleanup will happen automatically if\nneeded.  Catching these exceptions results in mysterious undefined\nbehavior and broken dreams.\n\nBug: 12494706\nChange-Id: Ie78336b37dde7250d1ce65b3d367879e3bfb2b8b\n"
    },
    {
      "commit": "b33fe50a634e4fde635f7e662526db1c3e2cfa5c",
      "tree": "879eee3a2b7e7d84da31eec07eb0adbb2c1e4689",
      "parents": [
        "59595f7a3e8efcefc62bbcf8e085b6da6d8ea339",
        "dcbde1b02ad69c18509afd87974c72c3a22f45dd"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu Dec 05 09:47:04 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 05 09:47:04 2013 -0800"
      },
      "message": "am dcbde1b0: Merge \"libcore_to_document and junit_to_document are no longer functions.\"\n\n* commit \u0027dcbde1b02ad69c18509afd87974c72c3a22f45dd\u0027:\n  libcore_to_document and junit_to_document are no longer functions.\n"
    },
    {
      "commit": "50a0fd50f7f76a76d068690e63194169da292215",
      "tree": "047df7122cc0db914c98aeb835ffc93513a5a4fd",
      "parents": [
        "453a5233086b216f2a95d0879954a2af39279095"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Dec 04 16:01:06 2013 -0800"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Dec 04 16:58:59 2013 -0800"
      },
      "message": "libcore_to_document and junit_to_document are no longer functions.\n\nThey are evaluated only once in the corresponding export .mk file.\nThis fixes build log spam reported in:\nhttps://code.google.com/p/android/issues/detail?id\u003d63184\n\nChange-Id: I549eb052272bbdebef8fca697822f5eaa0fe5764\n"
    },
    {
      "commit": "e7ae644522f692c204d0233f91e77c7841bdfe53",
      "tree": "62576b08cf67d11e70b9359f2fdcdb84536c46dc",
      "parents": [
        "218ecd43946001f07b60757db130ef5585d474d3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Nov 13 00:45:18 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Nov 13 02:17:53 2013 -0800"
      },
      "message": "Finalize assets for screen casting.\n\nExtend wifi display connection timeout.\n\nShow a notification while connecting to wifi display.\n\nEnsure that remote display providers are really trusted before\nconnecting to them.\n\nBug: 11257292\nChange-Id: Iad0caaa30d7946df818bc75ade071f2e377f8a53\n"
    },
    {
      "commit": "5d9f547720e07a2715d34320a9e11004654cede6",
      "tree": "cb8b2477167e7bd4840ae1c8894e204072702162",
      "parents": [
        "c481a634f4db6e95bc03b22b72414ba12da99f4b"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Nov 12 14:02:52 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Nov 12 14:02:52 2013 -0800"
      },
      "message": "Relayout windows that handle their own config change.\n\nIf a window claims to handle its own configuration change then we\nwon\u0027t destroy and recreate its window on a configuration change.\nNormally that recreation triggers the first layout following\norientation change because mHaveFrame is false. Windows that handle\ntheir own configuration changes never got a relayout pass following a\nchange in orientation.\n\nThis change passes the configuration changes that an application\nhandles into the AppWindowToken. If the app says it handles\norientation or screen size changes then a relayout will occur when the\nconfiguration has changed.\n\nFixes bug 11647107.\n\nChange-Id: Ie8d49fd050442ebbdcf0b805087894e3a2fc4be9\n"
    },
    {
      "commit": "39ad0e559896b45185429ea17cd12f18f7ae842c",
      "tree": "9e8d5d137a467f6ccd3ad6d453014d89f7ca21f7",
      "parents": [
        "596e409ec9703e5071bb9a0de08787cde7745f7a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 11 17:55:08 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 11 21:48:53 2013 -0800"
      },
      "message": "UI tweaks.\n\nHide disabled routes from the chooser.\n\nFix layout of chooser dialog when the settings button is visible and\nthe list is very long to prevent truncation of the settings button.\n\nFix an issue when we fake the route connecting status when a route\nis selected.  The route changed notification needs to be propagated\nto apps.  Fake it better.\n\nImmediately disconnect from a route when the connection is lost or\na connection attempt fails.  Added a few new test displays for this\ncase.\n\nBug: 11257292\nChange-Id: I360ab5dc937ad60d97592eab54b19f034519645e\n"
    },
    {
      "commit": "69b07161bebdb2c726e3a826c2268866f1a94517",
      "tree": "8d9c94f32a045a8f5c48ca0f1380abc760eac807",
      "parents": [
        "f3c99e883f46c56e5e2877e844b902b6eb45545b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 07 00:30:16 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 07 03:25:37 2013 -0800"
      },
      "message": "Add media router service and integrate with remote displays.\n\nThis change adds a new media router service whose purpose is to track\nglobal state information associated with media routes.  This service\npublishes routes to the media router instance in application processes\nand handles requested state changes such as selecting or unselecting\nglobal routes.  The service also binds to remote display provider\nservices which can offer new remote display routes to the system.\n\nIncludes a test application for manually verifying certain aspects\nof the operation of the media router service.\n\nThe remote display provider interface is essentially a stripped down\nmedia route provider interface as defined in the support library\nmedia router implementation.  For now, it is designed to be used only\nby first parties to publish remote display routes to the system so\nit is not exposed as public API in the SDK.  In the future, the remote\ndisplay provider interface will most likely be deprecated and replaced\nwith a more featureful media route provider interface for third\nparty integration, similar to what is in the support library today.\n\nFurther patch sets integrate these new capabilities into the System UI\nand Settings for connecting remote displays.\n\nBug: 11257292\nChange-Id: I31109f23f17b474d17534d0f5f4503e388b081c2\n"
    },
    {
      "commit": "69b94f7c5520f3fa817a7bb1e4d1205b593e6c47",
      "tree": "3663fdf7bc10b159fdf6fbc68c7b959ece721721",
      "parents": [
        "bd7f343c7510aa512ceb6d6833ca0e4f2aa2a1d2"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Oct 15 15:23:07 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Oct 15 15:23:07 2013 -0700"
      },
      "message": "SmartCamera: Fix to build against latest camera2 api\n\nBug: 10818732\nChange-Id: I536021b9663331532e2f4c21a4fc0f3de5da9aa9\n"
    },
    {
      "commit": "bd7f343c7510aa512ceb6d6833ca0e4f2aa2a1d2",
      "tree": "7f5dad5aa9d5fa0c4b0f2dc54fa536bd6176b8a8",
      "parents": [
        "227b47625d7482b5b47ad0e4c70ce0a246236ade"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 20 15:45:50 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Oct 15 15:11:41 2013 -0700"
      },
      "message": "Camera2Tests: update SmartCamera for async api\n\nChange-Id: I6eb541c96ee50756c35e7785fdae63e8e45e2726\n"
    },
    {
      "commit": "227b47625d7482b5b47ad0e4c70ce0a246236ade",
      "tree": "d8a4107d4d04e89e6006b5b1898850d970bd2db9",
      "parents": [
        "f847c3b014ab49fae6bbbc9dd7aac199b31467df"
      ],
      "author": {
        "name": "Benjamin Hendricks",
        "email": "coolbnjmn@google.com",
        "time": "Thu Sep 19 14:40:45 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Oct 15 15:11:34 2013 -0700"
      },
      "message": "Camera2Tests: Add SmartCamera App\n\nBug: 10818732\nChange-Id: I6ac08ecab3a1e04116be2f7764d0d5d4f29c5cd9\n"
    },
    {
      "commit": "2eac50bf63c96bfcfe58db0be1999e782a98d25b",
      "tree": "93fbc59db80dba744f21a70e22551a69843efb91",
      "parents": [
        "94c0057d67c2e0a4b88a4f735388639210260d0e"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Tue Oct 15 12:05:13 2013 +0100"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Tue Oct 15 12:05:13 2013 +0100"
      },
      "message": "Delete BrowserTestPlugin.\n\nThe new WebView doesn\u0027t support plugins.\n\nBug: 10427705\nChange-Id: I4678bf4771d402bec882193c7a2f3d05d918f042\n"
    },
    {
      "commit": "d394355d75ba4526adf3509a9e5d8d63acf86a7c",
      "tree": "55ed340a800011beade070d2b2ef088c4368fbb5",
      "parents": [
        "6067d1a3c7033f6714a60ac02a6b08d6568fe217"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Mon Oct 14 17:27:42 2013 +0100"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Tue Oct 15 11:18:08 2013 +0100"
      },
      "message": "Delete HttpHeaderTest.testCacheControlMultipleArguments.\n\nThis test depends on internals of the old WebView to work which have\nalready been removed. It doesn\u0027t appear to be testing anything useful.\n\nBug: 10427705\nChange-Id: I5e93b212c33f22776050b6e1ec639e23f41a1d4a\n"
    },
    {
      "commit": "b7a7fc9d233bad507ce893882352618b13647058",
      "tree": "852dc972097c9064c161b44676823949427e1206",
      "parents": [
        "c31f118825778cff15a1c1b9d1171f2ad178a013"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Sep 20 16:33:08 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Sep 26 13:38:12 2013 -0700"
      },
      "message": "Make fading transitions work better\n\nPreviously, a Fade transition would only affect a view if its\nparent hierarchy was not also affected between the start/end states.\nThis caused problems for views which were removed from their parents\nbetween scenes when their parents\u0027 visibility also changed between those\nscenes. The effect would be that the transition would fade the parent...\nbut the child would no longer be in that parent, so the user would just see the\nchild view blink out.\n\nThis fix ensure that views are faded appropriately by fading them\nregardless the parent hierarchy; if a view is removed from its\nparent, fade it out.\n\nAdditionally, if that view has not been removed from its parent, but\nits parent is no longer parented *and* scene being\ntransitioned from is based on a layout resource file (and thus\nthe views are considered temporary after transitioning), then it is\nremoved from its parent to be faded out in the overlay.\n\nAlso, renamed TextChange to ChangeText to be more consistent with\nother transition class names.\n\nChange-Id: I4e0e7dfc9e9d95c7a4ca586534b6d204c4f3bae0\n"
    },
    {
      "commit": "b7c255ce91bacbf9d412b50deaaeff659b786184",
      "tree": "417340d028fdcd628cf6a1704728838a23672b37",
      "parents": [
        "1e4e38252f8eb44fe382e371e29857834cf9fc15"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Sep 18 10:51:25 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Sep 18 10:51:25 2013 -0700"
      },
      "message": "Camera2Tests: create new directory for manual camera2 test apps\n\nBug: 10818732\nChange-Id: Idbc7e370d43a95e8f647541ab1e20071c212382d\n"
    },
    {
      "commit": "ff58f92a0a77ad849ba714b5adac96790eca0048",
      "tree": "8afdc22ae95998fea49ba795f88e2338449e4ccd",
      "parents": [
        "6847447da0b3e2e30e88838ec85244d1a0ee8927"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Sep 11 13:08:18 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Sep 11 13:53:43 2013 -0700"
      },
      "message": "Add exclude() methods to Transition\n\nIt would be useful for a transition to declare not just which\ntargets it wants to be run on, but also which targets it wants\nto avoid. For example, you may not want to animate the items of\na ListView, or some other specific target in the view hierarchy.\n\nThis change adds various exclude*() methods which make it\npossible to alter a transition to automatically ignore specific\nviews, ids, or classes in the hierarchy.\n\nIssue #10692794 Transitions: Need API for excluding targets\n\nChange-Id: If38025cdbee537a545e5a4268cbbd763af4622c5\n"
    },
    {
      "commit": "d82c8ac4db7091d2e976af4c89a1734465d20cd2",
      "tree": "a3ccb4d7a4325582dfe028030e4ca2d38ba4c2be",
      "parents": [
        "2a59f3f24076d96cbb10e1c00c3264dec43f19b1"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Aug 26 14:20:16 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Sep 04 14:46:38 2013 -0700"
      },
      "message": "Transition API changes from API council recommendations\n\nIssue #10460684 KLP API Review: android.view.transition and android.animation\nIssue #10570740 Transitions: inflate transition targets from xml\n\nChange-Id: I7a3f6d3aece2fcafc5efd555d033f79e86635c98\n"
    },
    {
      "commit": "ada3dbe7c98e44ed350e83cad62eb9f410bbc0f2",
      "tree": "962068388705808577fbb3d6c849f662f74af6db",
      "parents": [
        "94366313331a789440a3c077173aafcb85cabe78"
      ],
      "author": {
        "name": "Jonathan Dixon",
        "email": "joth@google.com",
        "time": "Sun Aug 25 22:46:49 2013 -0700"
      },
      "committer": {
        "name": "Jonathan Dixon",
        "email": "joth@google.com",
        "time": "Sun Aug 25 22:54:21 2013 -0700"
      },
      "message": "Remove WebViewClassic specific test code\n\nBug: 10427705\n\nThese tested internals of WebViewClassic and will no longer build when\nthat is removed\n\nChange-Id: I42af538dcb0343e9eff0b3fa85d7ff39f19c7c61\n"
    },
    {
      "commit": "5d923200846ed59e813373bde789d97d4ccc40b5",
      "tree": "db2f874cf61f812c4aa359f07d49525d8da82de8",
      "parents": [
        "0a8c51b1d0d66d6060afcec1eab33091d49332ae"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 18:40:24 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 18:42:46 2013 -0700"
      },
      "message": "Second attempt at avoiding infinite loop in PathCache::trim()\nBug #10347089\n\nChange-Id: I70f5a3933e848632473acc6636c88be5dc6ac430\n"
    },
    {
      "commit": "7d00affce6e25b22fd8fc135933b3bf6b547a0dc",
      "tree": "6ceb674184170a62dd93d7b3508f11ed1830349e",
      "parents": [
        "040f44d0ebdd3a50c59ba0cbc0b023fd2d71039d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 02 19:03:49 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 02 21:11:07 2013 -0700"
      },
      "message": "Support public virtual displays.\n\nRefactor the new private virtual display API to also support\ncreating public virtual displays with various characteristics.\nThis feature requires special permissions and is only intended\nfor use by the system.\n\nChange-Id: I44dd19f37cf76ea6d6e313afe42f4a412bd96663\n"
    },
    {
      "commit": "b7b93e00893f5c690a96bd3e0e10583bc5721f83",
      "tree": "89c975e81ab527630ab4c10478b80bca12593d24",
      "parents": [
        "5d3dff1d66f99fbd5bef9178e62d789119c02ad1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 01 15:29:25 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 01 15:35:24 2013 -0700"
      },
      "message": "Fix region clipping bugs\nSee external bug #58344\n\nChange-Id: Iecd6c41fc8076cd76add2335d3442a6dd8878f12\n"
    },
    {
      "commit": "8b7bc13e217034e0ddd00f9033463190f50dce88",
      "tree": "af54af27930da9b20e5bbbd30648f08f36b41cd7",
      "parents": [
        "f94b34f5397d92080c188277b062537480c05b7d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 31 17:52:07 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 31 17:52:07 2013 -0700"
      },
      "message": "Fix issue #10115327: MapCollections need to implement equals\n\nChange-Id: I8e7b6dd092442f3870aa1a36bd2a7cd974177146\n"
    },
    {
      "commit": "8018c8db8221aa604b3c083e09d173cc27e53d83",
      "tree": "60cbc26ddde4fa65a476a7e869d88f358b734210",
      "parents": [
        "93d34a61dbdfd9ece9ac4a53d78e896638172895"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 29 19:17:59 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 30 10:51:24 2013 -0700"
      },
      "message": "Add path ops API\n\nPath ops can be used to combine two paths instances in a single path\nobject. The following operations can be used:\n\n- Difference\n- Reverse difference\n- Union\n- XOR\n- Intersection\n\nTo use the API:\n\nPath p1 \u003d createCircle();\nPath p2 \u003d createRect();\n\nPath result \u003d new Path();\nresult.op(p1, p2, Path.Op.DIFFERENCE);\n\nThis code will subtract the rectangle from the circle and generate\nthe resulting path in \"result.\"\n\nChange-Id: Ic25244665b6691a7df0b0002a09da73d937b553b\n"
    },
    {
      "commit": "93d34a61dbdfd9ece9ac4a53d78e896638172895",
      "tree": "8af53586f2f28ce0ac353d45eeee55593e4ea2c8",
      "parents": [
        "9ba21fdc9ddf1d132215d29054b55af416561367"
      ],
      "author": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Mon Jul 29 16:30:32 2013 +0100"
      },
      "committer": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Mon Jul 29 16:30:04 2013 +0000"
      },
      "message": "Fix TTS tests.\n\nFix breakages steaming from recent changes:\n- onGetLanguage is no longer called anywhere (it\u0027s used in API \u003c\u003d 17),\ntests for it no longer apply.\n- onLoadLanguage is called as item on synthesis thread queue. To return\nvalue to client asap, onIsLanguageAvailable is called as well - added\nmissing expectations for mocks.\n\nChange-Id: I205bc406f085e2c2f7e98f8495ddb96ad3701b97\n"
    },
    {
      "commit": "62d708f4dd8e2a8554df4967837df9896efeff7c",
      "tree": "ce65deb60a6e33a6fed2fd6ca3d6da820a15ffc0",
      "parents": [
        "9deaa286d8db51cd53118b3c14a418c512cf55db"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 25 16:42:59 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 25 16:53:09 2013 -0700"
      },
      "message": "Okay, I give in, add null key support to ArrayMap and ArraySet.\n\nChange-Id: Iac5035f9c5884a9f9d5acb38132bb128d7a55249\n"
    },
    {
      "commit": "4908d181ca8c48e9866474ffe7cab68719cdb833",
      "tree": "548b86225fcead2b55fe9ced736aa44605026254",
      "parents": [
        "450d8c5b7c936b00fd0d40b5d68670df0fe56daa"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jul 19 17:26:54 2013 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jul 19 17:26:54 2013 -0700"
      },
      "message": "Fix FrameworkPermissionTests build\n\nChange-Id: I516e333ca85c0e3c08c8fffc157a9e0360af02e5\n"
    },
    {
      "commit": "c81a8493884c7f432d6bd5b98aca3fbdc93b355b",
      "tree": "7980d444f02c96c4ca1333efb7fdac400a5f523f",
      "parents": [
        "f33468e68a6e78c6a2c88d90de4fbce55cad7eac"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Jul 12 12:54:38 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Jul 12 13:40:38 2013 -0700"
      },
      "message": "Fix minor transition bugs and add capabilities\n\nSome view changes require more flexible transitions than the\ndefaults provided by Crossfade and TextChange - this change supplies some\nof that flexibility.\n\nAlso, starting a new transition on a hierarchy undergoing a transition\ncaused the first to get canceled, then the start values to be retrieved.\nThe new transition should actually get the start values from the intermediate\nstate of the views, so we now cancel the previous transition only after the\nstart values have been captured.\n\nIssue #9756349 Transitions: Crossfade does not handle interruption/reverse correctly\nIssue #9295863 Transitions: Add behavior API/flags to various transitions\nIssue #9275859 Transitions: Improve mechanism for transition interruption\n\nChange-Id: I5a8c5a12466ddcab9e84e4880930563fa1216f3b\n"
    },
    {
      "commit": "dc57d9dda559aaf06237b9124dc9ef27513bab31",
      "tree": "887177b3a22c8e087637a04daefa7cec6b83179a",
      "parents": [
        "0d21c220ddb1873133c24449404f82c28b19b8b4"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Jul 10 11:27:54 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Jul 10 12:14:54 2013 -0700"
      },
      "message": "Fix minor transition bugs\n\nTransitionGroup.setDuration() was not propagating the new duration to\nfuture child transitions correctly.\n\nAlso, Fade should restore a fully-opaque value when a transition ends, to prevent\nthe problem of mid-stream canceled transitions causing vie3ws to get stuck with partially\nfaded-in alpha values.\n\nIssue #9755995 Transitions: TransitionGroup.setDuration() not handled correctly\nIssue #9756655 Transitions: handle fading cancelation better\n\nChange-Id: Id44569c6f4152a26ee382d04c30a2f035a1ebcf3\n"
    },
    {
      "commit": "a2d519e03b8993a59d16c8b5fef6cb06a7d51983",
      "tree": "0f9aca53d2aa030afdc8780df19ce5f337ebfba2",
      "parents": [
        "e969964c80a20b2d968b4ee54495176c9049d3e3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 09 19:17:28 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 09 19:22:37 2013 -0700"
      },
      "message": "Remove NearestImageView from CanvasCompare\n\nChange-Id: I69b0539df704d80a34cc8f22096657210f5d78ad\n"
    },
    {
      "commit": "2ea7f8b9c5f903050d42c1af57406bf528979f45",
      "tree": "80f0c3fcb68c1842f28906a306e3b41468b2fef0",
      "parents": [
        "862a301bf9fd3d315948872873602ba7bcb043d4"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Jun 21 15:00:05 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Jun 21 16:07:14 2013 -0700"
      },
      "message": "Refactoring/simplifying Transition code/API\n\nTransitions used to be three phase:\n- captureValues(): get all relevant property values in the\naffected view targets\n- setup(): set appropriate start values for affected views\nprior to any transitions being played\n- play(): create/play Animators for affected views\n\nNow the second and third phases have been collapsed (and named\n\"play()\"). This single step sets initial values for target views\nand creates any Animators that should be played during the transition.\nThe transition mechanism stores these Animators and then starts\nthem at the appropriate time in the overall transition.\n\nIssue #9507585 Transitions: Simplify Transition.play() design\n\nChange-Id: I3fc67599b38fe49eee885dc5d32444db90b7703b\n"
    },
    {
      "commit": "6ebe3de331efd00ba23bc4191d4a82cfa4c39160",
      "tree": "8899ae2504fddbfbdaba69f85bc37f11e65ab022",
      "parents": [
        "cb64e3e6d33228221a3730e03292b2c1b2b8649b"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jun 17 16:50:50 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Jun 20 15:35:04 2013 -0700"
      },
      "message": "Fix transitions on disappearing view hiearchies\n\nPreviously, Fade transitions did not work correctly on hirearchies; they\nonly handled individual views. in particular, they would side-effect all\nfading views by removing them from their parent to fade them out in the\noverlay of the scene root. This worked for the fade-out transition itself,\nbut caused problems when those same hierarchies were added back in and\nanother Fade was run on the hierarchy, because now all of the views inside\nthat parent node had been removed, so they didn\u0027t fade in at all.\n\nThe fix was to add logic in Visibility to detect when a disappearing\nview was inside a hierarchy that was also disappearing, and to skip the\nfade on the views inside that hierarchy, leaving only the top-most\ndisappearing view to be faded out, thus preserving the hierarchy under\nthat faded-out group.\n\nAlong the way, there were various cleanups, fixes, and refactorings in the\ntransition code, and slight API modifications.\n\nIssue #9406371 Transitions: Removing view hierarchy not working correctly\nIssue #9470255 Transitions: Separate different transitions by Scene Root\n\nChange-Id: I42e80dac6097fee740f651dcc0535f2c57c11ebb\n"
    },
    {
      "commit": "8f3b1307678fcd1896c7fb8ba4cc20553dc032e8",
      "tree": "9935dd8edf3a8380256502a132d040a4fd607df8",
      "parents": [
        "a506a6ec94863a35acca9feb165db76ddac3892c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 29 14:59:46 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 18 15:32:41 2013 -0700"
      },
      "message": "Add test for streaming display contents to an accessory.\n\nThere are two applications: a source and a sink.\nThey should be installed on two separate Android devices.\nThen connect the source device to the sink device using\na USB OTG cable.\n\nBug: 9192512\nChange-Id: I99b552026684abbfd69cb13ab324e72fa16c36ab\n"
    },
    {
      "commit": "2321d242b4067f0b6f41be86869cd5884a278337",
      "tree": "d9b511c449b129d8a6254d237142eec6430f3444",
      "parents": [
        "97f41383eb2bb098767ca153e470009fea810540",
        "21ab6f49910a6f319bc7b9d3964086cb1ffe09d0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 12 18:35:49 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 12 18:35:50 2013 +0000"
      },
      "message": "Merge \"ArrayMap is great, so how about ArraySet!\""
    },
    {
      "commit": "21ab6f49910a6f319bc7b9d3964086cb1ffe09d0",
      "tree": "b01a138cf1fe647cdd0c015542a773da7bf80698",
      "parents": [
        "be4e6aaa0252dd7da28b7aa85beba982538efa46"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 10 15:59:15 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 11 14:37:54 2013 -0700"
      },
      "message": "ArrayMap is great, so how about ArraySet!\n\nAlso a few little tweaks to the ArrayMap implementation.  Note that\nthese are fairly parallel implementations; I looked at what I could\nabstract out as a base class, but there isn\u0027t really all that much without\nmaking the resulting code more general and thus slower.  If we kept\nthe data structure for ArraySet the same as map, where the array has\ntwo values per entry, then they could probably share a lot of code.\nI couldn\u0027t really bring myself to do that at this point, though...\n\nChange-Id: I9e0dd8baa8e1febcc1033ecef61623ad59ce4aae\n"
    },
    {
      "commit": "4f5072327d00822a2bfaff56df46cea2981ac90d",
      "tree": "d3589b68e6e529e087088dc967bef41a8815a92e",
      "parents": [
        "6b1d5a4ff220378407e19b7733e727be88b41376"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jun 10 13:00:06 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jun 10 14:06:14 2013 -0700"
      },
      "message": "Add dynamic scene creation/transition capability\n\nAdd TransitionManager.beginDelayedTransition() to handle starting a transition\non the next frame for a given scene root based on all changes that\ntake place between the first call to that method and the next animation frame.\n\nIssue #9321937 Transitions: consider batching up multiple scene actions\n\nChange-Id: I3fc92b6b4ec5ff42b1e678bcfd385703e32eba2a\n"
    },
    {
      "commit": "5133dcb83821ed1362efbc83b3c5131ea6374d3f",
      "tree": "a2bac97bd97e7c2f82e1de8982ada9f41c121e1c",
      "parents": [
        "65ea41541bcf9768679b596646fa66e81ace66b3",
        "f4130cf35fa128e36f96e55955d4f5db86197e4a"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Jun 07 14:05:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 07 14:05:46 2013 +0000"
      },
      "message": "Merge \"Additional functionality and performance for ArrayMap\""
    },
    {
      "commit": "f4130cf35fa128e36f96e55955d4f5db86197e4a",
      "tree": "0ae8a2c211bebc906d67402e3aa7e0c5b801babe",
      "parents": [
        "ae8f82f2015612a659b95007c355d12c83fbcefc"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Jun 06 16:34:33 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Jun 06 16:43:41 2013 -0700"
      },
      "message": "Additional functionality and performance for ArrayMap\n\nAdded equals() and hashCode() to ArrayMap to allow equals() tests\nof maps with the same key/value pairs to return true.\n\nChanged putAll() to handle the case of an empty map faster, just copying\nthe arrays instead of adding elements one by one.\n\nAdded to ArrayMapTests to test new equals() and copy constructor\nfunctionality.\n\nIssue #9299310 Optimize ArrayMap copy constructor\n\nChange-Id: I1186a0eddd1fd53a0f380c2f3972fc1942cdf879\n"
    },
    {
      "commit": "f69913056b8c6000ff0306573a97971702e8d35a",
      "tree": "c1180d9f68dac44dafd2be1b55cf1d8841d646f2",
      "parents": [
        "5d25b18ec82347975248b5a6cee5c7501e8a0b2d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 05 17:19:01 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 06 12:10:42 2013 -0700"
      },
      "message": "Remove unnecessary allocations\n\nChange-Id: Ia561a0a312ca2737d5afa742184f5392bb2f29a3\n"
    },
    {
      "commit": "4f0c4672ac7fd6b8135e27d8f816da2ebaf7d63a",
      "tree": "f1e3da88d14e6e844d621af6d996c8c5bca42562",
      "parents": [
        "ae8f82f2015612a659b95007c355d12c83fbcefc"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Jun 05 17:49:01 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Jun 06 07:37:32 2013 -0700"
      },
      "message": "Fix CrossFade transition\n\nSmall fixes in CrossFade to handle more general situations.\nAlso, added API to CrossFade to enable different behaviors during\nthe transition.\n\nChange-Id: I12d17ab8f8f96be370c070373112ad8a62df9115\n"
    },
    {
      "commit": "25a738fb257aacfc87d3363a834ed6e0b050c3b1",
      "tree": "31c42aa139f1a040bacbe74214d92f957825e06f",
      "parents": [
        "972cfadbe72b8e51eee4f8cd88bcad60d22a5c29"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Jun 04 16:35:14 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Jun 04 16:35:14 2013 -0700"
      },
      "message": "Fix in transition canceling logic\n\nThe logic that canceled underlying animations caused a problem\nwhen there were more than one animation in the list (due to removing\nitems from a list that was currently being processed elsewhere).\n\nChange-Id: Ie207f340b5d7de4ffcf56a26c05ec394abb80224\n"
    },
    {
      "commit": "867a86613d4152a93423300f83597300e6ebeebe",
      "tree": "9087a8ca942f453fb2da7555cd04c5aa2083213d",
      "parents": [
        "d18607980d86f03ffd838321ac3d511fa820b3e0"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jun 03 07:30:21 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jun 03 16:37:05 2013 -0700"
      },
      "message": "Various fixes/cleanup in Scenes and Transitions\n\nsetDuration() wasn\u0027t handled correctly for TransitionGroup; it should\npropagate the value to its children.\n\nAlso, videos with no ids were not being handled correctly. The transition code was\nusing the default id on those views (-1) to store start/end data about the view,\ncausing multiple non-id views to clobber values in the hashmaps. The correct approach\nshould be to ignore default id values - only store information about the view\ninstances, not about the unset ids.\n\nAlso, added a new test InterruptTest to be used to fix the current behavior of\nnot handling situations where new transitions start while old ones are still taking place.\n\nChange-Id: I4e880bdbb33cc26d487bceb0d56e463e72f7621f\n"
    },
    {
      "commit": "3d6a3800c8c99bd086f2d8e605e3b01e4cb20f79",
      "tree": "38b1041d4b49eb56a605c07c480d8286ff794f08",
      "parents": [
        "3f7a6935d37e36190a7d131a0193739c272fbe05"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Fri May 31 17:39:20 2013 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Fri May 31 17:39:20 2013 -0700"
      },
      "message": "Fix build; update framework tests for WindowManager API change\n\nChange-Id: I801c455184f2a6771f50e29dc147402db48f9fb7\n"
    },
    {
      "commit": "579c00efd6a2840856bdad1e9a5d9b5dae248312",
      "tree": "aaace20cfb1b9a555f3fb14645a94b5fedec76c1",
      "parents": [
        "3bf4fa4b161342ac94e97844c7af0982f4a2758d"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "jsams@google.com",
        "time": "Wed May 29 11:53:13 2013 -0700"
      },
      "committer": {
        "name": "Jason Sams",
        "email": "jsams@google.com",
        "time": "Wed May 29 11:53:13 2013 -0700"
      },
      "message": "Fix ambiguous clamp.\n\nChange-Id: I75a55bbfe6b8ef68242c8ecd0f70ef218829d110\n"
    },
    {
      "commit": "f4bf0ae2a7c2d9d92c5c8abdb82baa53b4c9ccda",
      "tree": "3e2b15a9b72cde690279e5650923b460109c66fc",
      "parents": [
        "b631eda39cc53d88417fc0143ebfb08dc5dbc133"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 20 18:42:16 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 24 16:36:14 2013 -0700"
      },
      "message": "New ArrayMap class.\n\nThis is a new kind of key/value mapping that stores its data\nas an array, so it doesn\u0027t need to create an extra Entry object\nfor every mapping placed in to it.  It is also optimized to reduce\nmemory overhead in other ways, by keeping the base object small,\nbeing fairly aggressive about keeping the array data structures\nsmall, etc.\n\nThere are some unit and performance tests dropped in to some\nrandom places; they will need to be put somewhere else once I\ndecided what we are going to do with this for the next release\n(for example if we make it public the unit tests should go in\nto CTS).\n\nSwitch IntentResolver to using ArrayMap instead of HashMap.\n\nAlso get rid of a bunch of duplicate implementations of binarySearch,\nand add an optimization to the various sparse arrays where you can\nsupply an explicit 0 capacity to prevent it from doing an initial\narray allocation; use this new optimization in a few places where it\nmakes sense.\n\nChange-Id: I01ef2764680f8ae49938e2a2ed40dc01606a056b\n"
    },
    {
      "commit": "6d29c8d5218cac0fb35f3b7c253f2bdebd44f15a",
      "tree": "e7b76c068ff3e8485fdc164118914ee3b53a2368",
      "parents": [
        "0ace0aa7d643b5b9952d32827575f041ba563c58"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 08 18:35:44 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 14 14:12:55 2013 -0700"
      },
      "message": "Add tessellation path for points\n\nbug:4351353\nbug:8185479\n\nPoint tessellation is similar to line special case, except that we\nonly tessellate one point (as a circle or rect) and duplicate it\nacross other instances.\n\nAdditionally:\n\nFixes square caps for AA\u003dfalse lines\n\nCleanup in CanvasCompare, disabling interpolation on zoomed-in\ncomparison view\n\nChange-Id: I0756fcc4b20f77878fed0d8057297c80e82ed9dc\n"
    },
    {
      "commit": "6fd5e7ce41439c94c738dbb262bda68494ccdfa0",
      "tree": "b9edd8c470ed4522b75972dbbb83ae6f9c15688e",
      "parents": [
        "dbdcaa766f15ebf5297f2e7166bbd00bf09af530",
        "0e1207e03dcdf3d19b5560ddca5defa4ee87801b"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Wed May 08 22:52:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 08 22:52:01 2013 +0000"
      },
      "message": "Merge \"Switch Fountain(Fbo) to use RSSurfaceView instead of RSTextureView.\""
    },
    {
      "commit": "0e1207e03dcdf3d19b5560ddca5defa4ee87801b",
      "tree": "7abc069a1aa0754f302a98af5c6644124b8621d3",
      "parents": [
        "9cbe2ae3aeb9a73c866bfd96b34f2d8ce895ab6b"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Mon May 06 18:18:57 2013 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Mon May 06 18:18:57 2013 -0700"
      },
      "message": "Switch Fountain(Fbo) to use RSSurfaceView instead of RSTextureView.\n\nChange-Id: Ifb036e83d76270075de1e7de3b67bb00c645bff2\n"
    },
    {
      "commit": "3b748a44c6bd2ea05fe16839caf73dbe50bd7ae9",
      "tree": "ea104e727beba793c10952f5b328478020859599",
      "parents": [
        "dd424cf079d2677e9333d89466f93166787e61c8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 17 18:54:38 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 02 13:32:09 2013 -0700"
      },
      "message": "Pack preloaded framework assets in a texture atlas\n\nWhen the Android runtime starts, the system preloads a series of assets\nin the Zygote process. These assets are shared across all processes.\nUnfortunately, each one of these assets is later uploaded in its own\nOpenGL texture, once per process. This wastes memory and generates\nunnecessary OpenGL state changes.\n\nThis CL introduces an asset server that provides an atlas to all processes.\n\nNote: bitmaps used by skia shaders are *not* sampled from the atlas.\nIt\u0027s an uncommon use case and would require extra texture transforms\nin the GL shaders.\n\nWHAT IS THE ASSETS ATLAS\n\nThe \"assets atlas\" is a single, shareable graphic buffer that contains\nall the system\u0027s preloaded bitmap drawables (this includes 9-patches.)\nThe atlas is made of two distinct objects: the graphic buffer that\ncontains the actual pixels and the map which indicates where each\npreloaded bitmap can be found in the atlas (essentially a pair of\nx and y coordinates.)\n\nHOW IS THE ASSETS ATLAS GENERATED\n\nBecause we need to support a wide variety of devices and because it\nis easy to change the list of preloaded drawables, the atlas is\ngenerated at runtime, during the startup phase of the system process.\n\nThere are several steps that lead to the atlas generation:\n\n1. If the device is booting for the first time, or if the device was\nupdated, we need to find the best atlas configuration. To do so,\nthe atlas service tries a number of width, height and algorithm\nvariations that allows us to pack as many assets as possible while\nusing as little memory as possible. Once a best configuration is found,\nit gets written to disk in /data/system/framework_atlas\n\n2. Given a best configuration (algorithm variant, dimensions and\nnumber of bitmaps that can be packed in the atlas), the atlas service\npacks all the preloaded bitmaps into a single graphic buffer object.\n\n3. The packing is done using Skia in a temporary native bitmap. The\nSkia bitmap is then copied into the graphic buffer using OpenGL ES\nto benefit from texture swizzling.\n\nHOW PROCESSES USE THE ATLAS\n\nWhenever a process\u0027 hardware renderer initializes its EGL context,\nit queries the atlas service for the graphic buffer and the map.\n\nIt is important to remember that both the context and the map will\nbe valid for the lifetime of the hardware renderer (if the system\nprocess goes down, all apps get killed as well.)\n\nEvery time the hardware renderer needs to render a bitmap, it first\nchecks whether the bitmap can be found in the assets atlas. When\nthe bitmap is part of the atlas, texture coordinates are remapped\nappropriately before rendering.\n\nChange-Id: I8eaecf53e7f6a33d90da3d0047c5ceec89ea3af0\n"
    },
    {
      "commit": "85c5f084e516994adcf08a6a244a2d1f0fcfe1d3",
      "tree": "596339dd9e7b66560f4e9cc36233c5efe7085059",
      "parents": [
        "1d507f7b9b163df6d19030f1cbf5d9191c6b7928",
        "e325f13cf0a06b98e2a638784cd75c0c04f90956"
      ],
      "author": {
        "name": "Tsu Chiang Chuang",
        "email": "tsu@google.com",
        "time": "Wed May 01 14:18:51 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 01 14:18:51 2013 -0700"
      },
      "message": "am e325f13c: am 4e0ae8d6: Merge \"Make sure the app is still app after launching. Bug:8755950\" into jb-mr2-dev\n\n* commit \u0027e325f13cf0a06b98e2a638784cd75c0c04f90956\u0027:\n  Make sure the app is still app after launching. Bug:8755950\n"
    },
    {
      "commit": "e325f13cf0a06b98e2a638784cd75c0c04f90956",
      "tree": "efb3afaa8ae1be1ae71616b4707e124353cdacdd",
      "parents": [
        "94264d522efcc21ac749a6444fbea90916f575c9",
        "4e0ae8d6fdc4646a90949ddf95fd8d1f7a22055a"
      ],
      "author": {
        "name": "Tsu Chiang Chuang",
        "email": "tsu@google.com",
        "time": "Wed May 01 14:14:01 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 01 14:14:01 2013 -0700"
      },
      "message": "am 4e0ae8d6: Merge \"Make sure the app is still app after launching. Bug:8755950\" into jb-mr2-dev\n\n* commit \u00274e0ae8d6fdc4646a90949ddf95fd8d1f7a22055a\u0027:\n  Make sure the app is still app after launching. Bug:8755950\n"
    },
    {
      "commit": "14c716be79b0135f6e0a22e22f432f5aacde2f21",
      "tree": "00d5b7d2672e1d68eecbc915056acfdf8d95dabc",
      "parents": [
        "f0e8c78a11c43f23ea314166707039e2c4b5361f"
      ],
      "author": {
        "name": "Tsu Chiang Chuang",
        "email": "tsu@google.com",
        "time": "Tue Apr 30 15:58:04 2013 -0700"
      },
      "committer": {
        "name": "Tsu Chiang Chuang",
        "email": "tsu@google.com",
        "time": "Wed May 01 07:54:48 2013 -0700"
      },
      "message": "Make sure the app is still app after launching.\nBug:8755950\n\nChange-Id: Ie30d84cb94787d8b2e7bdc65e329a311581f4a3f\n"
    },
    {
      "commit": "178e8bbf25b6d211439133ec8525b7bab52f7796",
      "tree": "f5888c66301c9967870090085aa2ba2dd08dd12a",
      "parents": [
        "6a5a04ae66c4094164605b59cdc3a35a63c9a26e",
        "e9ae6822a80cb1f3bd13c785f1727c03d35da52e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 30 09:01:38 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 30 09:01:38 2013 -0700"
      },
      "message": "am e9ae6822: resolved conflicts for merge of 1f6e789b to jb-mr2-dev-plus-aosp\n\n* commit \u0027e9ae6822a80cb1f3bd13c785f1727c03d35da52e\u0027:\n  Track change to JSSE provider\n"
    },
    {
      "commit": "e9ae6822a80cb1f3bd13c785f1727c03d35da52e",
      "tree": "b1458872d38a68b06c277276a3062bac0247509d",
      "parents": [
        "be53f1806cf9f0ec69f785a0063227e0ed795eb8",
        "1f6e789b7ee9698ab8c528a393c28cce500ace04"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Apr 29 23:09:03 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Apr 29 23:09:03 2013 -0700"
      },
      "message": "resolved conflicts for merge of 1f6e789b to jb-mr2-dev-plus-aosp\n\nChange-Id: I06c05d637613215b6d83df3e29cd495f6a5a0176\n"
    },
    {
      "commit": "12e752225aa96888358294be0d725d499a1c9f03",
      "tree": "d716c7eedc50ccdf146aaca9b55fae969cf753ec",
      "parents": [
        "28b1f0ee02e14241ffb81f431fc54053771c1c90"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 23 22:34:24 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Apr 29 15:15:27 2013 -0700"
      },
      "message": "Track change to JSSE provider\n\nChange-Id: I35e824e47ad758ab6408e91e2ba5dcda053a82f5\n"
    },
    {
      "commit": "797b7559d6d8d5dc7c1903f345162751a57560f6",
      "tree": "43079727d11ee170d310d8ca86396e282917f3bb",
      "parents": [
        "341a31b1072cda8b013cbadef6e75f9a771da326"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Apr 18 14:18:35 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Apr 18 14:18:35 2013 -0700"
      },
      "message": "Fix build due to transition test errors\n\nerroneous inclusion of R file for test files is causing build breakage\non the server. Remove the offending lines.\n\nChange-Id: I1948facc1b5e3f8b7415e0e6c4290b53a54f12af\n"
    },
    {
      "commit": "faebd8f0795b7d275fb4e503533c8c0c4a9acc21",
      "tree": "464de8bb5dcd9ae99402ebb630d329dc8ce953cc",
      "parents": [
        "b3caa9200a61cde1178a2c83419de56579d3c5a5"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri May 18 14:17:57 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Apr 18 13:33:13 2013 -0700"
      },
      "message": "First draft of Scenes \u0026 Transitions feature\n\nThis checkin has preliminary API (in flux, definitely changes still\nto be made) and implementation for a new \"Scenes \u0026 Transitions\" feature.\nThe current implementation allows you to define different Scenes\n(via layout resource IDs or callbacks) and Transitions to be used when\nchanging to those scenes. By default, scene changes will use AutoTransition,\nwhich generally does the right thing.\n\nThere are no overview docs or tutorials yet. The best way to learn how things\nwork is to see the code for the various tests in\nframeworks/base/tests/TransitionTests.\n\nExpect the API to change. Expect the implementation to change (mostly to add\nmore functionality). Expect bugs, but tell me if things do not work\nas expected.\n\nChange-Id: Ib025a9f565678b225afa4759325cf6d496cc7215\n"
    },
    {
      "commit": "181e3cb37c05bee1074c1f24b522ca6c2b576b04",
      "tree": "a1e3c848bad8286f8137b6a060c161babc12b09d",
      "parents": [
        "9b4b662c27c5ee541ba5b424e2042b493ede4336",
        "9b9fe68ea3117041e570ca158d61201acefb0d8f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 17 17:38:36 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 17 17:38:36 2013 -0700"
      },
      "message": "am 9b9fe68e: am 18455c30: Merge \"Add input/output JSON data for baseline comparison\" into jb-mr2-dev\n\n* commit \u00279b9fe68ea3117041e570ca158d61201acefb0d8f\u0027:\n  Add input/output JSON data for baseline comparison\n"
    },
    {
      "commit": "18455c307d8ea439dbf78aa3789380259ddd8572",
      "tree": "296bcc1156518f569851f7fe8e9de92fa541f5e6",
      "parents": [
        "9bf7be933d039ef227ca54f917c1ff6a00a2f833",
        "5f7831158439f92f33c987d5d29dc9546bfe7c79"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Apr 18 00:32:07 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 18 00:32:08 2013 +0000"
      },
      "message": "Merge \"Add input/output JSON data for baseline comparison\" into jb-mr2-dev"
    },
    {
      "commit": "5f7831158439f92f33c987d5d29dc9546bfe7c79",
      "tree": "c336dbcddde14715063e64dc9f9f6758da186999",
      "parents": [
        "5feceebb892d4cb5777cea3c6174b206705d456b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Apr 08 14:52:51 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 10 15:07:28 2013 -0700"
      },
      "message": "Add input/output JSON data for baseline comparison\n\nCanvasCompare will output a JSON file with test results, and can take\nsuch files as input for baseline comparison. The new logcat output\nbreaks down results into per-test and per-modifier improvement and\nregressions.\n\nChange-Id: I4da0251db0637841173ac95e9f431a7ff52c8b61\n"
    },
    {
      "commit": "a3c58967feb95e4dfcec37f8340b49509a5f5ebd",
      "tree": "2d8445d5fa851d0bb6c7293938f43ac18f660d84",
      "parents": [
        "86a9bbe860c6d09d3580ffe1a5e2d60b5a039328",
        "f7c6475d0a89d057b60ca63e138c8fbb5a47f1a8"
      ],
      "author": {
        "name": "Maxim Siniavine",
        "email": "siniavine@google.com",
        "time": "Wed Apr 10 12:26:24 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 10 12:26:24 2013 -0700"
      },
      "message": "am f7c6475d: am 85478b59: Skip apps without launch intent.\n\n* commit \u0027f7c6475d0a89d057b60ca63e138c8fbb5a47f1a8\u0027:\n  Skip apps without launch intent.\n"
    },
    {
      "commit": "85478b59722837ed1bec447b2920f2f7111b57ea",
      "tree": "9bd736f1eed08d6f5bebaf9fcefe9232c4c05965",
      "parents": [
        "d9621f867027dedc47df50c8ff4bf6f67c188ea4"
      ],
      "author": {
        "name": "Maxim Siniavine",
        "email": "siniavine@google.com",
        "time": "Wed Apr 10 11:57:57 2013 -0700"
      },
      "committer": {
        "name": "Maxim Siniavine",
        "email": "siniavine@google.com",
        "time": "Wed Apr 10 12:14:11 2013 -0700"
      },
      "message": "Skip apps without launch intent.\n\nIf an app from the apk cannot be launched then skip it in compatibility\ntest, rather than generate a null pointer exception.\n\nChange-Id: I252031f249bfe25282b10394889ab8c5506cabcf\n"
    },
    {
      "commit": "8be8d6e8b9e344e92c13f15c93f5e0ba258ed8d5",
      "tree": "616dd41e2db4a1392548560f9446b215526d4ac3",
      "parents": [
        "d2c6dd012d9be9199087be318accf478f7cb6f34",
        "800d99f6b557b8684fbdbfc882bc9789ccd3d21f"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Apr 09 07:43:27 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 09 07:43:27 2013 -0700"
      },
      "message": "am 800d99f6: am 9fa49cc3: Merge \"Fix [-] buttons in the notification builder test.\" into jb-mr2-dev\n\n* commit \u0027800d99f6b557b8684fbdbfc882bc9789ccd3d21f\u0027:\n  Fix [-] buttons in the notification builder test.\n"
    },
    {
      "commit": "9fa49cc3308f6af593d780581121afc3c1d7e046",
      "tree": "2552e820d792ee75b71b76b33c79ac93761d8052",
      "parents": [
        "104ca45a046cf6f056d84799f6a161c8befe7522",
        "72dcb913931e4390380398cfa899d1702790cd6a"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Apr 09 14:34:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 09 14:34:20 2013 +0000"
      },
      "message": "Merge \"Fix [-] buttons in the notification builder test.\" into jb-mr2-dev"
    },
    {
      "commit": "72dcb913931e4390380398cfa899d1702790cd6a",
      "tree": "86ff8a75b56e214ac1b795c786f63f5ee8e11301",
      "parents": [
        "89454f8331cd7d582eafca87c6586feb5db509c7"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Apr 09 01:20:02 2013 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Apr 09 13:34:04 2013 +0000"
      },
      "message": "Fix [-] buttons in the notification builder test.\n\n(Broken by change I9fae5a4a).\n\nBug: 8564511\nChange-Id: I0d5b65e6678018630c812c5616e9b3f068029e66\n"
    },
    {
      "commit": "b1026046c6b74110fc6182a37d607a23b25bb480",
      "tree": "a9a062879089da3ee07727942ac1506c528db35f",
      "parents": [
        "675d389f6f77309ea271731e404f8ea827bc21c0",
        "d9574cb12896ed639f1c220f646c2dc5e8017841"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Apr 08 19:15:33 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 08 19:15:33 2013 -0700"
      },
      "message": "am d9574cb1: am cf5ccb8f: Fix tests build.\n\n* commit \u0027d9574cb12896ed639f1c220f646c2dc5e8017841\u0027:\n  Fix tests build.\n"
    },
    {
      "commit": "cf5ccb8f81f038112e13ce2c9ff73602005595f7",
      "tree": "894787e45668a911cc4d451d95652d0169fc0898",
      "parents": [
        "3c09715cedc737cc6e36c201d9f9188c3615e9a5"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Apr 08 19:02:01 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Apr 08 19:02:01 2013 -0700"
      },
      "message": "Fix tests build.\n\nChange-Id: I24d65c18018a8d6df6fa3414306fc0d586d4cfa2\n"
    },
    {
      "commit": "9717fff78505d480aa5e6825aa162e640f8ab9fa",
      "tree": "fc7bf610a6ec58e9b8ec5ae1476d437bf39d9552",
      "parents": [
        "b7045d2fb9d4b37333dbccb25a2ae9eee3b54577",
        "fe2902b48b0b3538e8de7b3d64064c244ca5b193"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Mon Apr 08 08:21:10 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 08 08:21:10 2013 -0700"
      },
      "message": "am fe2902b4: am 0e78de6c: Add tag \"foo\" to builder test\\\u0027s notifications.\n\n* commit \u0027fe2902b48b0b3538e8de7b3d64064c244ca5b193\u0027:\n  Add tag \"foo\" to builder test\u0027s notifications.\n"
    },
    {
      "commit": "0e78de6c0fadd70277eb29f56ccce97c1dffc4f2",
      "tree": "34cfc600ecfb8770369e68c95b3f3a638073ebad",
      "parents": [
        "edf6f4b49f6e77c349f5055372ce381b74f12efb"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Apr 04 10:58:02 2013 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 08 14:42:41 2013 +0000"
      },
      "message": "Add tag \"foo\" to builder test\u0027s notifications.\n\nThis allows them to be conveniently cleared via adb:\n\n  $ adb shell service call notification 5 \\\n    s16 com.android.statusbartest \\\n\ts16 foo \\\n\ti32 \u003cNOTIFICATIONID\u003e \\\n\ti32 \u003cUSERID\u003e\n\nBug: 8564511\nChange-Id: I9fae5a4a0be64d6707cc06ca938adeb8b3c0b735\n"
    },
    {
      "commit": "70122b0660a089e32934041e80b78de49eb82ae0",
      "tree": "f933729a118685542fdad269b1c78e7002166d0d",
      "parents": [
        "2f633c83fc438194688947e29de20b5df0d46583",
        "5c3123d1ab9103469eddcf739da1b98d3d36c978"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Fri Apr 05 15:58:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 05 15:58:02 2013 -0700"
      },
      "message": "am 5c3123d1: am 36b859a6: Merge \"Specify SDK version for RS graphics tests.\" into jb-mr2-dev\n\n* commit \u00275c3123d1ab9103469eddcf739da1b98d3d36c978\u0027:\n  Specify SDK version for RS graphics tests.\n"
    },
    {
      "commit": "36b859a61f05539ada25a51b77b641d1a6904061",
      "tree": "dbee8ccab903c62e2227e0bc3e4fe29e6cf66811",
      "parents": [
        "e8d9d2b3352bdeba0a455666bda9eb64b75198f7",
        "b2cb8e41f93e8a26241e3de20e862ffa66dedaa4"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Fri Apr 05 22:46:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 05 22:46:06 2013 +0000"
      },
      "message": "Merge \"Specify SDK version for RS graphics tests.\" into jb-mr2-dev"
    },
    {
      "commit": "b2cb8e41f93e8a26241e3de20e862ffa66dedaa4",
      "tree": "2feaa576d6e8755fd011ef7fee3d8f97f447b24c",
      "parents": [
        "ff7ae2dccd3b8ba015963126d8a655b417d3fcd3"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Fri Apr 05 15:17:09 2013 -0700"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Fri Apr 05 15:17:54 2013 -0700"
      },
      "message": "Specify SDK version for RS graphics tests.\n\nChange-Id: Ia61c753392432b91f91260a9b8769dfd396c259f\n"
    },
    {
      "commit": "8740cb1da6adb71a4e195774801c97db5853b097",
      "tree": "9accacb597684fcdc3399e95bdc7bcf0a7419b59",
      "parents": [
        "c71b045d88c222b78d9bc6da99f9ececfc4a16f6",
        "29211d3a16b807ddab47e46c9d955bf508c4d9b5"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Apr 05 16:18:59 2013 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Apr 05 16:18:59 2013 -0400"
      },
      "message": "resolved conflicts for merge of 29211d3a to master\n\nChange-Id: I9691f41b12fbf52d0ef35a9bf5223edef7afdfd2\n"
    },
    {
      "commit": "5feceebb892d4cb5777cea3c6174b206705d456b",
      "tree": "58feee1605f35b07e70887f4ec017d80b5687436",
      "parents": [
        "bab9687e6473072d6ff4f7ea5a7b21bcfbf95744"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Mar 22 18:29:23 2013 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 05 19:54:44 2013 +0000"
      },
      "message": "New NotificationListenerService.\n\nThis is the best and only way for apps to listen for\nnotifications: create a NotificationListenerService, wait\nfor the NoMan to bind to you (as a result of the user\nchecking a box somewhere in Settings and agreeing to a\nscary dialog box), and you\u0027ll start receiving notification\nposted and dismissed callbacks. Your service, while enabled,\nwill also be able to clear one or all notifications.\n\nUse this power wisely.\n\nThis change moves StatusBarNotification out of\ncom.android.internal into android.service.notification.\n[Internal customers, including System UI and early users of\nthe system-only listener binder API, will need to be\nupdated.]\n\nBug: 8199624\nChange-Id: I1be46f823d4b3ddc901109ec1e085cd6deb740c2\n"
    },
    {
      "commit": "d6e7a2b49872751ffc9a020bce90a78f18f2ec6c",
      "tree": "4b7733de9a3b26ee84aba4ec604b48813eea2816",
      "parents": [
        "f4c597e274ffd7be2167b946e6cba1158ffe129b",
        "4a7fae4953e4d50af9b2bf65059cfe8ea3799383"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Fri Mar 22 19:35:33 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 22 19:35:33 2013 +0000"
      },
      "message": "am 4a7fae49: am eb93cc6a: Merge \"add account checks to app launch test\" into jb-mr2-dev\n\n* commit \u00274a7fae4953e4d50af9b2bf65059cfe8ea3799383\u0027:\n  add account checks to app launch test\n"
    },
    {
      "commit": "6266a436f35622f3b48de8d7b245bb5f8a4c567d",
      "tree": "0357fb5f33f86468641e5a6cfb8086821c7b8644",
      "parents": [
        "e37478c4ebbe6e95ef3904b9f2fa0e93e1b258ac"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Fri Mar 22 11:36:30 2013 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Fri Mar 22 11:36:30 2013 -0700"
      },
      "message": "add account checks to app launch test\n\nThis optional parameter ensures that, before test starts, device\nhas the listed account types configured already.\n\ne.g. to test app launch time of Gmail, a valid Google account\nmust present on device\n\nChange-Id: Idba11beff754fd1d201a9c44a562809d4a9495e2\n"
    },
    {
      "commit": "3807312e9b4a8022f370ad7c09604c6379f567a0",
      "tree": "06ded1f0a663e79fb42d74bda4ee76aebc6d266d",
      "parents": [
        "9c24638ef794b358a40f9dafef261dd894b8910b",
        "0bcec06b24e7bc67ab4922f6bb18e6bc7737ba69"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Wed Mar 20 22:32:45 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 20 22:32:45 2013 +0000"
      },
      "message": "am 0bcec06b: am 19eceaad: Merge \"Fix bug #8437358 Clean any ICU related code from TextLayout / Paint and their dependencies\" into jb-mr2-dev\n\n* commit \u00270bcec06b24e7bc67ab4922f6bb18e6bc7737ba69\u0027:\n  Fix bug #8437358 Clean any ICU related code from TextLayout / Paint and their dependencies\n"
    },
    {
      "commit": "19eceaadd764ca84f386300aafd9a31c270886e9",
      "tree": "1b5c6f17da6b94709ed2c94638a546b8d45ad2db",
      "parents": [
        "c595965b3d9bf8cf2b49de56ac9e33e48f47187a",
        "665f02c66702b77db25e950ff433230186bc3243"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Wed Mar 20 22:26:57 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 22:27:37 2013 +0000"
      },
      "message": "Merge \"Fix bug #8437358 Clean any ICU related code from TextLayout / Paint and their dependencies\" into jb-mr2-dev"
    },
    {
      "commit": "665f02c66702b77db25e950ff433230186bc3243",
      "tree": "456a90fee061eed322d910c3683087a8eeece58d",
      "parents": [
        "a35d380bac61804551d4927df9595980373d2eff"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Wed Mar 20 14:56:05 2013 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Wed Mar 20 14:56:05 2013 -0700"
      },
      "message": "Fix bug #8437358 Clean any ICU related code from TextLayout / Paint and their dependencies\n\n- remove the ICU related methods and update the methods using the \"reserved\" argument\n- update to CTS in another CL too\n\nChange-Id: I5509736568c342d9d17bfeafc17951117ab5d3cc\n"
    },
    {
      "commit": "f2e2cab60a9a23261411c6bef6d98ca907339a39",
      "tree": "062d7f418a8f3c7509f787e168cd0094fcaadacb",
      "parents": [
        "a7724c4588e1c86c3cd142d01adb9a56b4067530",
        "26c46054a8543b529efa733a7c13483c481e861e"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "jsams@google.com",
        "time": "Tue Mar 19 20:55:19 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 19 20:55:19 2013 +0000"
      },
      "message": "am 26c46054: am 4e43d76e: Merge \"Move compute tests from frameworks/base to frameworks/rs\" into jb-mr2-dev\n\n* commit \u002726c46054a8543b529efa733a7c13483c481e861e\u0027:\n  Move compute tests from frameworks/base to frameworks/rs\n"
    },
    {
      "commit": "4e43d76e822dbc8d328fe0600b5fb9489f8ab75c",
      "tree": "a6f8de97c1bf75201a64c0fcd712d73412bffbd1",
      "parents": [
        "5054803a022b0df4cc616e19085ed6fb70ed33e8",
        "eacf9c80419cb7c870c61e020e19900c765ca0b4"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "jsams@google.com",
        "time": "Tue Mar 19 20:47:22 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 19 20:47:42 2013 +0000"
      },
      "message": "Merge \"Move compute tests from frameworks/base to frameworks/rs\" into jb-mr2-dev"
    },
    {
      "commit": "eacf9c80419cb7c870c61e020e19900c765ca0b4",
      "tree": "c5428802287019c7145a2b04f85c7c6c0539df05",
      "parents": [
        "e4c9ac2df26f640fa9aeab5928e82bcc59a33da2"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "jsams@google.com",
        "time": "Tue Mar 19 12:43:46 2013 -0700"
      },
      "committer": {
        "name": "Jason Sams",
        "email": "jsams@google.com",
        "time": "Tue Mar 19 12:43:46 2013 -0700"
      },
      "message": "Move compute tests from frameworks/base to frameworks/rs\n\nChange-Id: I670027782f5ba6df0713dbdc3c99ae7c1eef7d22\n"
    },
    {
      "commit": "3c122050903dfb91ed49c2f0fb2affb93b3c4bb2",
      "tree": "265b4399040b4bc704ae6f35852cc28a7c29c723",
      "parents": [
        "af216f7ce714a3e7b93288bdf7a9273d0c301b35",
        "595b5bdf08ab315898b4af0c5c7033a912e004f7"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 19 02:37:23 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 19 02:37:23 2013 +0000"
      },
      "message": "am 595b5bdf: am 603ce559: Merge \"Apply ComposeShader\\\u0027s local matrix to children\" into jb-mr2-dev\n\n* commit \u0027595b5bdf08ab315898b4af0c5c7033a912e004f7\u0027:\n  Apply ComposeShader\u0027s local matrix to children\n"
    },
    {
      "commit": "d4289922ce772ed8e170a27d1c9521672b315698",
      "tree": "211cddaef3df27355b6aa0029a39116c39b61c7e",
      "parents": [
        "c46d07a29e94807e768f8b162ce9f77a88ba6f46"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 18 19:30:48 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 18 19:30:48 2013 -0700"
      },
      "message": "Apply ComposeShader\u0027s local matrix to children\n\nChange-Id: Idf9b8e7d7b30f8fcd8ba1fd4bfe8991e9ca148e2\n"
    },
    {
      "commit": "af216f7ce714a3e7b93288bdf7a9273d0c301b35",
      "tree": "a3a675675270020745a43d6e8792f8bbe9f41432",
      "parents": [
        "12220c789ceb26aa79cd7586f77792d9fad614d7",
        "3c385b3fc08ae2fc5325d0dd4f64d462edf3aad8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 19 02:09:13 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 19 02:09:13 2013 +0000"
      },
      "message": "am 3c385b3f: am 16b7dc9c: Merge \"Merge all shapes/paths caches to PathCache\" into jb-mr2-dev\n\n* commit \u00273c385b3fc08ae2fc5325d0dd4f64d462edf3aad8\u0027:\n  Merge all shapes/paths caches to PathCache\n"
    },
    {
      "commit": "9dfe44bde6c6cab20faab3a4b3eb24948329ea00",
      "tree": "dafc54b91add139f2b81ab3bf07a45e556b1c02b",
      "parents": [
        "124af2d816c5337000e60c4d5a9c6b0319e5a3e6"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Mar 18 18:51:42 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Mar 18 18:51:42 2013 -0700"
      },
      "message": "Fix test that uses new API\n\nChange-Id: Ib463dbece44ef1ec9842e3766c2c133b46ca63a5\n"
    },
    {
      "commit": "c46d07a29e94807e768f8b162ce9f77a88ba6f46",
      "tree": "9b6aec5f5dc1d73b6cd9d583d5c5c78285480070",
      "parents": [
        "338b18844434379de54050ff582d36ff6da3ba11"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 15 19:06:39 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 18 18:32:17 2013 -0700"
      },
      "message": "Merge all shapes/paths caches to PathCache\n\nThis change will greatly simplify the multi-threading of all\nshape types.\n\nThis change also uses PathTessellator to render convex paths.\n\nChange-Id: I4e65bc95c9d24ecae2183b72204de5c2dfb6ada4\n"
    },
    {
      "commit": "468bb47d8f13756a1bd88041cb83b1821e04a40d",
      "tree": "9edbfbc792bb8c335228d2541aa9a67aadda6626",
      "parents": [
        "6e0651e45f996c665e7eebeb8b0cd12ecd8ea0a4",
        "0964bb20f4798c9b25334dccbf2c5a14b33e6564"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 18 18:49:59 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 18 18:49:59 2013 +0000"
      },
      "message": "am 0964bb20: am 338b1884: Merge \"Improve/flesh-out shared library version check.\" into jb-mr2-dev\n\n* commit \u00270964bb20f4798c9b25334dccbf2c5a14b33e6564\u0027:\n  Improve/flesh-out shared library version check.\n"
    },
    {
      "commit": "338b18844434379de54050ff582d36ff6da3ba11",
      "tree": "fe6d67f1117c3927a53d7ed89538a31f47ffe9c3",
      "parents": [
        "728713258ffef4df053b85e0a3488334cbcba24c",
        "ce5abb0a5542a0dae00a2af3b174d83cdd85a21f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 18 18:44:51 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 18 18:44:52 2013 +0000"
      },
      "message": "Merge \"Improve/flesh-out shared library version check.\" into jb-mr2-dev"
    },
    {
      "commit": "f72b5c920aa47d94310a8cdd658e5255712b7293",
      "tree": "bd69ffccad507e8848580f2633fb5b226404dc2a",
      "parents": [
        "8315891b4eeab37a2d6ffce0441fa04764bbacae",
        "cf60cc9adedf032c6c97cd2cbb9ff211deaaf3ae"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Mar 15 20:39:31 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 15 20:39:31 2013 +0000"
      },
      "message": "am cf60cc9a: am 261f82ca: Merge \"Revert \"Clean Paint.mBidiFlags as it is no longer used\"\" into jb-mr2-dev\n\n* commit \u0027cf60cc9adedf032c6c97cd2cbb9ff211deaaf3ae\u0027:\n  Revert \"Clean Paint.mBidiFlags as it is no longer used\"\n"
    },
    {
      "commit": "ce5abb0a5542a0dae00a2af3b174d83cdd85a21f",
      "tree": "9665772dc632b7680ff83d1e5707e3973b551be6",
      "parents": [
        "5d122d96a5bf3bbaccaca2765b45716efe7ee2ef"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 15 11:37:01 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 15 11:37:01 2013 -0700"
      },
      "message": "Improve/flesh-out shared library version check.\n\nChange-Id: I3d6eb19c8aeaae07a6d17de81ac707c7741608fb\n"
    },
    {
      "commit": "da12f389eb4be0c08ca3fa9ca7663f4977858df5",
      "tree": "b1bf0853765bb1bb4728073b8f08982131d1cc04",
      "parents": [
        "19f46b0d7a1cdba362bc3d6fc8e9251307e96bd4"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Mar 15 11:26:56 2013 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Mar 15 11:26:56 2013 -0700"
      },
      "message": "Revert \"Clean Paint.mBidiFlags as it is no longer used\"\n\nThis reverts commit 6d9fe5bd22b531bfce69b146254a4791c76acddc.\n"
    },
    {
      "commit": "6e79c824ddc74725bf1ed54cd5ec495f0ba0b5e3",
      "tree": "00978afffad24c4dc0e501ce15f05db6ff792cf3",
      "parents": [
        "947ebdfaf7a521916b40c72ab09c3bcedaa0c032",
        "558030ee12d1688b892079270a65dc1744040938"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Mar 14 17:57:59 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 14 17:57:59 2013 +0000"
      },
      "message": "am 558030ee: am 555fddb0: Merge \"change how app launch is tested\" into jb-mr2-dev\n\n* commit \u0027558030ee12d1688b892079270a65dc1744040938\u0027:\n  change how app launch is tested\n"
    }
  ],
  "next": "32abd66ebd6d63cfc631ce5f4425bb5dc4a4beac"
}
