)]}'
{
  "log": [
    {
      "commit": "72a194e6d5d8427ee9816364781b180afffc5393",
      "tree": "6c9ea3a505e79fec7400654915fa04ad36a07326",
      "parents": [
        "1e74c37f8e1acb595f407e0f65744bb6b00c9314",
        "1810927a9b8f6d2597d18c0e77389b4a6fcb5118"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 10:34:43 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 15 10:34:43 2014 +0000"
      },
      "message": "am 1810927a: am eabc93db: am c4c08803: Merge \"app_process: change app_process a symlink of primary version\"\n\n* commit \u00271810927a9b8f6d2597d18c0e77389b4a6fcb5118\u0027:\n  app_process: change app_process a symlink of primary version\n"
    },
    {
      "commit": "1810927a9b8f6d2597d18c0e77389b4a6fcb5118",
      "tree": "25d72c50802f56c6405f16172adb2d46e0277ff0",
      "parents": [
        "d850be5d1491d255a64db9bc95334748e455c782",
        "eabc93db1020be4b71f0db7d5b5d3a7991f3c264"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 09:45:33 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 15 09:45:33 2014 +0000"
      },
      "message": "am eabc93db: am c4c08803: Merge \"app_process: change app_process a symlink of primary version\"\n\n* commit \u0027eabc93db1020be4b71f0db7d5b5d3a7991f3c264\u0027:\n  app_process: change app_process a symlink of primary version\n"
    },
    {
      "commit": "eabc93db1020be4b71f0db7d5b5d3a7991f3c264",
      "tree": "55afbba6f2ef664c708013aa6233fe580526184b",
      "parents": [
        "c0f18b9d0cce0c140b1274055faabff732f1e27c",
        "c4c08803a8cc090aa27720e97df342231e8433af"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 09:41:40 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 15 09:41:40 2014 +0000"
      },
      "message": "am c4c08803: Merge \"app_process: change app_process a symlink of primary version\"\n\n* commit \u0027c4c08803a8cc090aa27720e97df342231e8433af\u0027:\n  app_process: change app_process a symlink of primary version\n"
    },
    {
      "commit": "559484ed6a3ed98980579e35d12543be2835aa35",
      "tree": "85168a027a7d7d333488e69da6337016d82c14e6",
      "parents": [
        "b7d7cbc9c3a9315a5c5ecd85e16f5916c4bc3f3a"
      ],
      "author": {
        "name": "Yongqin Liu",
        "email": "yongqin.liu@linaro.org",
        "time": "Tue May 06 23:30:40 2014 +0800"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed May 14 18:48:42 2014 +0100"
      },
      "message": "app_process: change app_process a symlink of primary version\n\nChange app_process to be a symlink to the primary version\nand have app_process32/app_process64 be the 32-bit/64-bit\nversions respectively.\n\nThis will make it possible to use the primary zygote for\nam/pm commands and other scripts that use app_process and\ndon\u0027t need a specific zygote.\n\nSigned-off-by: Yongqin Liu \u003cyongqin.liu@linaro.org\u003e\nChange-Id: Ibef545994eb95ddc82101c95df613ad1d06345e6\n"
    },
    {
      "commit": "7b81602f3c18df8a4ca0342c514af8f7e394c0d7",
      "tree": "eab3e4610cff0db0745e151cfacc780ae713b306",
      "parents": [
        "4ddebf7f5b85d082c56f6a8aad11bd0c5ca68fde"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Apr 18 15:25:25 2014 -0700"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed May 14 03:56:34 2014 -0700"
      },
      "message": "Enabling internal msg apis\n\nNetworkFactory and NetworkAgent.  First trying with wifi and\ngetting rid of WifiStateTracker.\n\nConflicts:\n\tapi/current.txt\n\tservices/core/java/com/android/server/ConnectivityService.java\n\nChange-Id: I7f0ec13d7d8988b32f3c6dc71f72012f3349fe02\n"
    },
    {
      "commit": "b6c04899e1ed614985d638b55dafe2c20e7b673a",
      "tree": "66efba07adcb948d6a14af641bb1457b8719913d",
      "parents": [
        "fd30a0e7b747eb4b781ef8def3008626f14eddfe",
        "c8a045d451522adab5226b0063f3a15d34542bf7"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:43:23 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:43:23 2014 +0000"
      },
      "message": "am c8a045d4: am 41f40581: Merge \"Fix x86 build in app_process.\"\n\n* commit \u0027c8a045d451522adab5226b0063f3a15d34542bf7\u0027:\n  Fix x86 build in app_process.\n"
    },
    {
      "commit": "fd30a0e7b747eb4b781ef8def3008626f14eddfe",
      "tree": "156b42f9d38003eabb8150c1e3e117d247f5b2b3",
      "parents": [
        "6c2e806200dc1a422aa681bfd78aae1eb8f1d508",
        "ff34f6faaad21f5f72decc0b6a0bbde8dab68e29"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:43:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:43:19 2014 +0000"
      },
      "message": "am ff34f6fa: am 27b03e62: Merge \"Create arch specific cache dirs during zygote startup.\"\n\n* commit \u0027ff34f6faaad21f5f72decc0b6a0bbde8dab68e29\u0027:\n  Create arch specific cache dirs during zygote startup.\n"
    },
    {
      "commit": "c8a045d451522adab5226b0063f3a15d34542bf7",
      "tree": "84ea46328305477785a0416373e8f0c219e779b1",
      "parents": [
        "ff34f6faaad21f5f72decc0b6a0bbde8dab68e29",
        "41f40581ee0284660d30be8ef28f6bf721c4ce10"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:39:55 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:39:55 2014 +0000"
      },
      "message": "am 41f40581: Merge \"Fix x86 build in app_process.\"\n\n* commit \u002741f40581ee0284660d30be8ef28f6bf721c4ce10\u0027:\n  Fix x86 build in app_process.\n"
    },
    {
      "commit": "ff34f6faaad21f5f72decc0b6a0bbde8dab68e29",
      "tree": "23008260f943fcbc69eb79ed0e2307f4eeb69f6e",
      "parents": [
        "703442238200c2f1a35b51e7aadc693322feb69d",
        "27b03e6272479ed82762a4a5d6e4be4f26c1ed58"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:39:52 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:39:52 2014 +0000"
      },
      "message": "am 27b03e62: Merge \"Create arch specific cache dirs during zygote startup.\"\n\n* commit \u002727b03e6272479ed82762a4a5d6e4be4f26c1ed58\u0027:\n  Create arch specific cache dirs during zygote startup.\n"
    },
    {
      "commit": "d6183204e438a738b68301aeac452c0be41c8cb3",
      "tree": "76da5e53d9141f3689a49bb91a360d005b4183ff",
      "parents": [
        "973cdeed8eb9aa250b1b3bd5549df0e0dc78457e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 16:45:07 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 11:27:49 2014 +0100"
      },
      "message": "Fix x86 build in app_process.\n\nLook for __i386__ and not __x86__.\n\n(cherry picked from commit 47d526217b3fd0d17ba751c66d25cfaf1c6ed7cd)\n\nChange-Id: I848ba351c378e59ab6744ca1983ae4463ae75ba4\n"
    },
    {
      "commit": "973cdeed8eb9aa250b1b3bd5549df0e0dc78457e",
      "tree": "dc92e8b3a7cdc7b32f14ddaf0f85298ba9abdb8e",
      "parents": [
        "fbb0ab02bed5c49159acb3dba6848a154e524169"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 25 11:43:22 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 11:26:49 2014 +0100"
      },
      "message": "Create arch specific cache dirs during zygote startup.\n\nThe runtime expects them to exist before it\u0027s launched.\nThe boot image / art files are created during the first\nzygote launch.\n\n(cherry picked from commit da738713e4e2120a324e8ab6fd11aa0e54a3c66e)\n\nChange-Id: I7472aa25c16a1cf95791af2bdf80ed0d73123872\n"
    },
    {
      "commit": "52adfdaafd464348628d9257101f24a67d7c8bbb",
      "tree": "06e21eb893fdcdee82e81a8de2b8adc88a7e8479",
      "parents": [
        "10882ec8d7890c7d5712e6b7f23e007e09bd0062",
        "516130ccb1841afb6ef154c28269d91594925429"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 17:36:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 30 17:36:10 2014 +0000"
      },
      "message": "am 516130cc: am dbbf431b: am d0f7f418: Merge \"Freeing frame map\"\n\n* commit \u0027516130ccb1841afb6ef154c28269d91594925429\u0027:\n  Freeing frame map\n"
    },
    {
      "commit": "6eb1b2611cd2db7f2c2063f8be219d4ef19d11d0",
      "tree": "901d755c7c0aa4091b63ed70deb90497b9aee1d2",
      "parents": [
        "ab45d1d6d296f4f61632a472cf7bd8626c8d5a06"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 16:45:07 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 16:45:07 2014 +0100"
      },
      "message": "Fix x86 build in app_process.\n\nLook for __i386__ and not __x86__.\n\nChange-Id: Iffa3709f9d0c96cce17f3183a6f036a78eccc787\n"
    },
    {
      "commit": "516130ccb1841afb6ef154c28269d91594925429",
      "tree": "bac72a0ed5301c698026fc567a19f60c2d92e320",
      "parents": [
        "d21082ca0c116ba737e6e93c2917d0b557cc48fc",
        "dbbf431b289bb7a01b43db3412ecab00abe18362"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 15:37:44 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 30 15:37:44 2014 +0000"
      },
      "message": "am dbbf431b: am d0f7f418: Merge \"Freeing frame map\"\n\n* commit \u0027dbbf431b289bb7a01b43db3412ecab00abe18362\u0027:\n  Freeing frame map\n"
    },
    {
      "commit": "dbbf431b289bb7a01b43db3412ecab00abe18362",
      "tree": "4f5d00c79726901706cd534547d4d4707b2e9e42",
      "parents": [
        "9a76e9ba1adbdf7cc431b1e6fe454cf0c5d900de",
        "d0f7f41828493b0679e908f7bb3ed3b8e838c463"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 15:12:58 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 30 15:12:58 2014 +0000"
      },
      "message": "am d0f7f418: Merge \"Freeing frame map\"\n\n* commit \u0027d0f7f41828493b0679e908f7bb3ed3b8e838c463\u0027:\n  Freeing frame map\n"
    },
    {
      "commit": "0c1eeb3c8ab53954218d3b8f4be08ff21be3e985",
      "tree": "3a59dbad3788ed44780ea728f306e3eb84d915fe",
      "parents": [
        "ade631eed0df228e343f2a00db653058ff588846"
      ],
      "author": {
        "name": "Mykola Kondratenko",
        "email": "mykola.kondratenko@sonymobile.com",
        "time": "Tue Apr 15 09:35:44 2014 +0200"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 10:58:20 2014 +0000"
      },
      "message": "Freeing frame map\n\nFileMap memory is never released until application exit\n\nRelease it now as the texture is already loaded and the memory\nused for the packed resource can be released.\n\nChange-Id: Id08a1e466337b3a0179684eb6a444e18147ee343\n"
    },
    {
      "commit": "dfacf855fd91eb2d40891721ad4b92ed65d0b46d",
      "tree": "0c680d4bb302de68f8816be038daf98efed21d35",
      "parents": [
        "aa2112f671e4f14555e25a6d765ce4bad454a43f",
        "d1e127e141a8080477f3b3becb792f138ca9ab65"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 08:34:56 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 30 08:34:56 2014 +0000"
      },
      "message": "Merge \"Create arch specific cache dirs during zygote startup.\""
    },
    {
      "commit": "d1e127e141a8080477f3b3becb792f138ca9ab65",
      "tree": "53544b6d9b19b84d4f712502a93406f4bf470266",
      "parents": [
        "19db0f036aa889ff05220b630262461e333faa85"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 25 11:43:22 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 09:26:05 2014 +0100"
      },
      "message": "Create arch specific cache dirs during zygote startup.\n\nThe runtime expects them to exist before it\u0027s launched.\nThe boot image / art files are created during the first\nzygote launch.\n\nChange-Id: I5ed0ad4854dc7785246344c8f6eaf54e560feb7d\n"
    },
    {
      "commit": "293513a59d36cd96a3e474dde5981380d372d8c9",
      "tree": "4268c9994be194a7f4fccdecd089af58516d0953",
      "parents": [
        "1866e5dc8bb04b58a67e54f66cb4ec22e878667d",
        "0b62467b142b61ee1e449ba958ba37dfd961ef56"
      ],
      "author": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Apr 29 16:07:29 2014 -0700"
      },
      "committer": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Apr 29 16:07:29 2014 -0700"
      },
      "message": "Merge commit \u00270b62467b142b61ee1e449ba958ba37dfd961ef56\u0027 into HEAD\n"
    },
    {
      "commit": "d37ae7c13d527a0019275fda44ce4eb83fd99bed",
      "tree": "9e81ce188574bf62e4d16e8402b843b10faca1bc",
      "parents": [
        "15c32f2699f03ba2065e663b3beb2c8d328f42ef",
        "ab5834545da906f1a150672ead825c28a2e1f82a"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 29 22:34:54 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 29 22:34:54 2014 +0000"
      },
      "message": "am ab583454: am 1866e5dc: am af40649e: Merge \"Set NO_NEW_PRIVS on zygote init\"\n\n* commit \u0027ab5834545da906f1a150672ead825c28a2e1f82a\u0027:\n  Set NO_NEW_PRIVS on zygote init\n"
    },
    {
      "commit": "ab5834545da906f1a150672ead825c28a2e1f82a",
      "tree": "0fe672f230c99f56a18eece3bd531b5f2036af73",
      "parents": [
        "60037302208be033442cc3f3c50a25c7064ebbd1",
        "1866e5dc8bb04b58a67e54f66cb4ec22e878667d"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 29 22:26:41 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 29 22:26:41 2014 +0000"
      },
      "message": "am 1866e5dc: am af40649e: Merge \"Set NO_NEW_PRIVS on zygote init\"\n\n* commit \u00271866e5dc8bb04b58a67e54f66cb4ec22e878667d\u0027:\n  Set NO_NEW_PRIVS on zygote init\n"
    },
    {
      "commit": "195c73c9b2c5be50ab325099dc2160215ac7562a",
      "tree": "d96f10bd5467d1c3788e9393a6b9f5ee367c0b2c",
      "parents": [
        "5c220cc4e4c0584a9083529b58e30e17ab7d2d9e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Apr 25 15:01:24 2014 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 29 15:10:58 2014 -0700"
      },
      "message": "Set NO_NEW_PRIVS on zygote init\n\nWhen app_process/zygote starts, make sure PR_SET_NO_NEW_PRIVS is set.\nThis prevents zygote spawned apps from acquiring new privileges\non exec.\n\nIn particular, this allows the CTS test\nandroid.os.cts.SecurityFeaturesTest#testNoNewPrivs() to pass if ART is set\nas the default runtime.\n\nChange-Id: I81139cda999c7b1430242561aad28f566e9b6da0\n"
    },
    {
      "commit": "28f0877073e0ebc59f1eeeb6e0d54b614b9d3fa5",
      "tree": "715d463e05f8f558335a9919e038334d51460a6d",
      "parents": [
        "bdd4491b322bebd96b99da508ec7b0b7d59d97ae"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 16 09:41:58 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 28 08:54:17 2014 -0700"
      },
      "message": "Allow custom wallpaper and boot animation.\n\nAdd new \"ro.config.wallpaper\" and \"ro.config.wallpaper_component\"\nproperties which may be defined outside of the bundled framework\nresources.  Falls back to bundled resources when properties are\nundefined.\n\nAlso look for boot animation under OEM partition.\n\nBug: 13340779\nChange-Id: Ibdc9935dbdaae3319bf63b40573de0503d82ae67\n"
    },
    {
      "commit": "91097de49b0f683b00e26a75dbc0ac6082344137",
      "tree": "82c3185634a71233ce2e81a3645b07b1ba55f412",
      "parents": [
        "23af77a3cd1febc740d885ff03ead09837df269c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 04 18:02:06 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 24 17:48:58 2014 -0700"
      },
      "message": "Initial implementation of new voice interaction API.\n\nThis gives a basic working implementation of a persist\nrunning service that can start a voice interaction when\nit wants, with the target activity(s) able to go through\nthe protocol to interact with it.  It may even work when\nthe screen is off by putting the activity manager in the\ncorrect state to act like the screen is on.\n\nIncludes a sample app that is a voice interation service\nand also has an activity it can launch.\n\nNow that I have this initial implementation, I think I\nwant to rework some aspects of the API.\n\nChange-Id: I7646d0af8fb4ac768c63a18fe3de43f8091f60e9\n"
    },
    {
      "commit": "f4567f0c50e88261dd897a9933b5d885c1406a45",
      "tree": "28c5f203a67d6c696b20ab471e5e911de91c8cbe",
      "parents": [
        "e255d7399f46de4b4e3d94b95b26df3408274394",
        "56cc5ba79bdf75a73281dc73f13169a409d96c28"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 24 15:43:24 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 24 15:43:24 2014 +0000"
      },
      "message": "am 56cc5ba7: am 8d47f23e: am dbb0de21: Merge \"Fix a typo in an assertion.\"\n\n* commit \u002756cc5ba79bdf75a73281dc73f13169a409d96c28\u0027:\n  Fix a typo in an assertion.\n"
    },
    {
      "commit": "56cc5ba79bdf75a73281dc73f13169a409d96c28",
      "tree": "f25ddc190d7b4e268f4235b2e2dba1b9d1b9d3a0",
      "parents": [
        "8f9d92c4ca5233607ca01dac0b3b66fde5539307",
        "8d47f23e43760dcbf051aaeffff668c3c6340276"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 24 09:01:44 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 24 09:01:44 2014 +0000"
      },
      "message": "am 8d47f23e: am dbb0de21: Merge \"Fix a typo in an assertion.\"\n\n* commit \u00278d47f23e43760dcbf051aaeffff668c3c6340276\u0027:\n  Fix a typo in an assertion.\n"
    },
    {
      "commit": "6bd762289b911e8876759ebbfd9e8960ba825844",
      "tree": "6837055e52424d78e7c3e024e16ebc841895a59e",
      "parents": [
        "683cf1bffe33f49f26d46201f96cd2eff60e8192"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 23 16:54:33 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 23 16:54:33 2014 -0700"
      },
      "message": "Fix a typo in an assertion.\n\nChange-Id: I3e97bb3cb8070c0ec0c6b97769f1da3e7b4ef8f5\n"
    },
    {
      "commit": "846318a3250fa95f47a9decfbffb05a31dbd0006",
      "tree": "c5d28f5d77e1fd625117e65bc9d24acfdfb6b94e",
      "parents": [
        "fb5d9f338153f569775bbc76177cab05441999c1"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 04 12:12:41 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Apr 22 21:06:49 2014 -0700"
      },
      "message": "Allow prefix-based Uri permission grants.\n\nDefine new FLAG_GRANT_PREFIX_URI_PERMISSION which indicates that a\nUri permission grant should also apply to any other Uris that have\nmatching scheme, authority, and path segments.  For example, a prefix\ngrant for /foo/ would allow /foo/bar/ but not /foo2/.\n\nAllow persistable and prefix grants to be issued directly through\ngrantUriPermission().  Relaxing persistable is fine, since it still\nrequires the receiver to actively take the permission.\n\nSince exact- and prefix-match grants for the same Uri can coexist,\nwe track them separately using a new UriGrant key.  (Consider the\ncase where an app separately extends READ|PREFIX and WRITE for\nthe same Uri: we can\u0027t let that become READ|WRITE|PREFIX.)\n\nFix revoke to always take away persisted permissions.  Move prefix\nmatching logic to Uri and add tests.  Add new flags to \"am\" tool, and\nvarious internal uses around Intent and Context.  Switch some lagging\nusers to ArraySet.\n\nBug: 10607375\nChange-Id: Ia8ce2b88421ff9f2fe5a979a27a026fc445d46f1\n"
    },
    {
      "commit": "cee823e4d4d3a7217cbaf8fcdd10da7999881290",
      "tree": "ff7b6a024bc52516e65dc92c96c3335824a8c9c0",
      "parents": [
        "1c3f409284b47312c1c7e5d36283df9a05d29dfb"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Apr 15 11:36:20 2014 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Apr 15 19:28:08 2014 -0400"
      },
      "message": "Add \u0027read\u0027 subcommand to the \u0027content\u0027 tool.\n\nAccess raw content exposed by content provider\nopenFile uris.\n\nBug:14079104\nChange-Id: I9ef0e19f9354fa12408df1583b211a8d8a2e9fdb\n"
    },
    {
      "commit": "db8b130a19484cb6018667905e64d42ab793654f",
      "tree": "80e2815f3685e00f455c78d91d4657adb6888f47",
      "parents": [
        "dc800e85138f3ab57303a879b3e1abd109b90247",
        "964570044ef6b5d721a1372b2bb65c4585947353"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Apr 14 15:49:25 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 14 15:49:25 2014 +0000"
      },
      "message": "am 96457004: am 549ae327: am aa19a2f6: Merge \"Don\\\u0027t compare String8s to NULL.\"\n\n* commit \u0027964570044ef6b5d721a1372b2bb65c4585947353\u0027:\n  Don\u0027t compare String8s to NULL.\n"
    },
    {
      "commit": "964570044ef6b5d721a1372b2bb65c4585947353",
      "tree": "78c046acec1d3988da018a66e885f3754c911500",
      "parents": [
        "eaa8a6b7feb4a520f48654b087223ccaf49b6a2f",
        "549ae327245a844862065dc9bb0562544e8c3beb"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Apr 14 08:46:17 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 14 08:46:17 2014 +0000"
      },
      "message": "am 549ae327: am aa19a2f6: Merge \"Don\\\u0027t compare String8s to NULL.\"\n\n* commit \u0027549ae327245a844862065dc9bb0562544e8c3beb\u0027:\n  Don\u0027t compare String8s to NULL.\n"
    },
    {
      "commit": "90c75cf02e8e36be8679273f4ea15fd145001033",
      "tree": "8619abb2bafa9ece6622855ec829b0573d4f99bb",
      "parents": [
        "b093e485bbd790cc4d9678451c8cce4d361c2cf2"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Sat Apr 12 12:25:50 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Sat Apr 12 12:25:50 2014 +0100"
      },
      "message": "Don\u0027t compare String8s to NULL.\n\nUse String8::isEmpty instead. Note that this code path is hit\nonly if the zygote calls ::exit, and that never happens unless\nthe VM invocation fails.\n\nChange-Id: I0e7d3a86a79b12b2174ca3bf0dbe1904e33c041a\n"
    },
    {
      "commit": "26ad3af74d4b8a6f960de7a4370684a987551f6d",
      "tree": "13b175e7ec45411f71d3ed9f7e2b1cc78df30017",
      "parents": [
        "4bdcd299da48f9abe5f9c67abed0dbe79080445d",
        "c3255ae04c8bec36f6701b92bf645323558e23c1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 11 10:02:17 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 11 10:02:17 2014 +0000"
      },
      "message": "am c3255ae0: am de442781: am 909a6a0e: Merge \"Dual zygote cleanup.\"\n\n* commit \u0027c3255ae04c8bec36f6701b92bf645323558e23c1\u0027:\n  Dual zygote cleanup.\n"
    },
    {
      "commit": "c3255ae04c8bec36f6701b92bf645323558e23c1",
      "tree": "30ef01bb6382cb45710565a05e411a4f6a6c6c7f",
      "parents": [
        "55dab4dd3b5b56ade91c012d688b581b6cbdebdf",
        "de442781cd4f7404e8aaa3f7ca5d1d3fc28cccc6"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 11 09:57:27 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 11 09:57:27 2014 +0000"
      },
      "message": "am de442781: am 909a6a0e: Merge \"Dual zygote cleanup.\"\n\n* commit \u0027de442781cd4f7404e8aaa3f7ca5d1d3fc28cccc6\u0027:\n  Dual zygote cleanup.\n"
    },
    {
      "commit": "d35d3e5d391b8daf20f9af2c5f01d5ff1985c1ee",
      "tree": "d5ffc966f3e4d3bf0711209213e73e03651d6749",
      "parents": [
        "09e13cc5f9f98382376eb49bfa6ceb94a50d37a1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 10 12:13:06 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 10 12:15:39 2014 +0100"
      },
      "message": "Dual zygote cleanup.\n\n- Use different process names for the 32 / 64 bit zygote.\n- Pass command line arguments correctly. The first unmatched\n  argument must be passed through to the java main class.\n\nChange-Id: I952ebbdbba941f118d992354b9bd0ada2dade417\n"
    },
    {
      "commit": "7be06900a824babd17c5f4e018c08aeca9ba57e3",
      "tree": "e9a7c6ad493e0128c784dcbc6482cffbead570b3",
      "parents": [
        "8ee0b48d607fd6afc5e75f56bdadce19272c60ff",
        "9f777008eaead3cb9cee80d0c00e5a3d55de9de7"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 14:06:14 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 09 14:06:14 2014 +0000"
      },
      "message": "am 9f777008: am 05f980d4: am d4b64409: Merge \"Make zygotes aware of their supported ABIs.\"\n\n* commit \u00279f777008eaead3cb9cee80d0c00e5a3d55de9de7\u0027:\n  Make zygotes aware of their supported ABIs.\n"
    },
    {
      "commit": "8ee0b48d607fd6afc5e75f56bdadce19272c60ff",
      "tree": "d021d0fbdebf4b9d1607a359f69adb3a51283034",
      "parents": [
        "a981e3b01ae6af2b67e582f0d1cbb95560d05626",
        "97175deb446cdaca7f3910b71940cb443bda3cc4"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 14:06:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 09 14:06:10 2014 +0000"
      },
      "message": "am 97175deb: am 3856a219: am cecfb94f: Merge \"Clean up argc / argv processing for runtime args.\"\n\n* commit \u002797175deb446cdaca7f3910b71940cb443bda3cc4\u0027:\n  Clean up argc / argv processing for runtime args.\n"
    },
    {
      "commit": "9f777008eaead3cb9cee80d0c00e5a3d55de9de7",
      "tree": "95241374d0e30c18b265fb376a65ca3ec84d8a70",
      "parents": [
        "97175deb446cdaca7f3910b71940cb443bda3cc4",
        "05f980d42d4926ab2130cdcf9e646eb610a7080b"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 14:02:18 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 09 14:02:18 2014 +0000"
      },
      "message": "am 05f980d4: am d4b64409: Merge \"Make zygotes aware of their supported ABIs.\"\n\n* commit \u002705f980d42d4926ab2130cdcf9e646eb610a7080b\u0027:\n  Make zygotes aware of their supported ABIs.\n"
    },
    {
      "commit": "97175deb446cdaca7f3910b71940cb443bda3cc4",
      "tree": "7f316f4f074f8427d3046f99b683b97136cc3b14",
      "parents": [
        "dc7eb9c947f36cbd34021663845bcbb090c3169d",
        "3856a219fa414ee53c5ef3a0c35dae35e2ca80b1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 14:02:08 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 09 14:02:08 2014 +0000"
      },
      "message": "am 3856a219: am cecfb94f: Merge \"Clean up argc / argv processing for runtime args.\"\n\n* commit \u00273856a219fa414ee53c5ef3a0c35dae35e2ca80b1\u0027:\n  Clean up argc / argv processing for runtime args.\n"
    },
    {
      "commit": "c41638cb759ce569630ffae4c5c4cdee1b0f3b82",
      "tree": "06f51dec3427c6e8322816b2e43f2bb784f28fe0",
      "parents": [
        "22ec1eefa4dc8e12f7da8e8750d4770144941526"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Apr 07 13:56:15 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 13:41:15 2014 +0100"
      },
      "message": "Make zygotes aware of their supported ABIs.\n\nQuery system properties for the list of ABIs and pass\nit as a command line argument to ZygoteInit.\n\nAlso add a new Zygote command that returns this list of\nABIs to peers.\n\nChange-Id: I68034c6f63fa626911122579a011a0a25a8cda94\n"
    },
    {
      "commit": "22ec1eefa4dc8e12f7da8e8750d4770144941526",
      "tree": "f5ca6c4f0055e8c4ef01cf484abc65d983ec990b",
      "parents": [
        "a5608acbd7647e0fd9aa87e5319715b0cbd6b0c0"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Apr 07 12:44:58 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 13:39:41 2014 +0100"
      },
      "message": "Clean up argc / argv processing for runtime args.\n\n- Make copies of argc, argv before argv is potentially\n  overwritten with the process name.\n- Allow multiple command line arguments to be passed to\n  ZygoteInit (this is required for some of the 64 bit\n  zygote work).\n- Add an explanatory comment about how these argments\n  are processed.\n\nChange-Id: I752be69c5c0f97ed17d1a3dded19f46ee00929b0\n"
    },
    {
      "commit": "c6f6ba3265d2b07649277682fd3ca0f9ce4d011a",
      "tree": "94f163ea0ae453d5beb396fc82b250924bf89895",
      "parents": [
        "33822312e65a38400b189c6deda59b8d047b89cf",
        "71ae2bd42be21de6d25d1f8c52e3973c172462df"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 03 16:56:32 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 03 16:56:32 2014 +0000"
      },
      "message": "am 71ae2bd4: am f87b3a25: am 374db6c3: Merge \"Remove ProcessState::mArgc,mArgV,mArgLen\"\n\n* commit \u002771ae2bd42be21de6d25d1f8c52e3973c172462df\u0027:\n  Remove ProcessState::mArgc,mArgV,mArgLen\n"
    },
    {
      "commit": "71ae2bd42be21de6d25d1f8c52e3973c172462df",
      "tree": "16ce2ca454184f06841a1da827623adeeb1a5b2a",
      "parents": [
        "55da62288dcec75c34721a59d71f917dcb8a62b4",
        "f87b3a25b928f145558f6f60183944f513878b63"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 03 14:11:34 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 03 14:11:34 2014 +0000"
      },
      "message": "am f87b3a25: am 374db6c3: Merge \"Remove ProcessState::mArgc,mArgV,mArgLen\"\n\n* commit \u0027f87b3a25b928f145558f6f60183944f513878b63\u0027:\n  Remove ProcessState::mArgc,mArgV,mArgLen\n"
    },
    {
      "commit": "a23fcd7be8e40078a913b1a99222cdd89229e67b",
      "tree": "9580df860d196b7b1edab40837c0c08fbc4ff6da",
      "parents": [
        "369a00574da218975718ce07ffe6abba5c17bf92"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 28 13:39:21 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 03 12:29:07 2014 +0000"
      },
      "message": "Remove ProcessState::mArgc,mArgV,mArgLen\n\nThese look like historical oddities, and weren\u0027t really being\nused for anything useful.\n\nProcess:setArgV0 was being called by android.util.Process, but\nthat functionality can be moved directly into the implementation\nof that class.\n\nbug: 13647418\n\nChange-Id: I216c8f8a4c065f0cf3a61f19f9e32decd26f93f6"
    },
    {
      "commit": "2a764949c943681a4d25a17a0b203a0127a4a486",
      "tree": "5cacb4e3be3f0c47e25f4e98389110310622e4b0",
      "parents": [
        "30cac644f161433fca92ca65edcb26b351a04e5a"
      ],
      "author": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Wed Apr 02 13:29:20 2014 +0100"
      },
      "committer": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Wed Apr 02 13:44:50 2014 +0100"
      },
      "message": "Rename related users to profiles.\n\nRename the related user concept as profiles.\nWhen returning profiles of a user include the\nuser as a profile of itself.\n\nChange-Id: Id5d4f29017b7ca6844632ce643f10331ad733e1d\n"
    },
    {
      "commit": "f1977b4500e82b72ea6aa5c46d97406a20017caf",
      "tree": "9d6b4e63bc4b4c70eb9fbd5eb2cff9587ba45485",
      "parents": [
        "9ad8a5331ca5eb6390c702ec57952043b56170bf"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Mar 24 16:25:51 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 27 12:37:47 2014 -0700"
      },
      "message": "Expand install observer semantics\n\n...and now fail conservatively when two apps both attempt to define\nthe same permission.  Apps signed with the same certificate are\npermitted to redefine permissions.\n\nWe also finally have a (hidden) interface class for observing package\ninstallation so that we can now rev the interface without breaking\nexisting callers.\n\nBug 13551375\n\nChange-Id: Ifa4e59154dcccbb286ee46a35a6f25e4ad0f0f01\n"
    },
    {
      "commit": "1c14c327e8781d843c3b94252db391d1baeec23d",
      "tree": "1e9da8f7d9a7801f279bda0fc853cf1f223f2c5c",
      "parents": [
        "350159c65a52092db04f1b8efce6943f61e50e73",
        "c1a7d0758de065da80129baa85f1471e67c7fe21"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 27 18:29:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 27 18:29:19 2014 +0000"
      },
      "message": "am c1a7d075: am 232d4224: am f0ffa8a3: Merge \"app_process: use LOCAL_MULTILIB :\u003d both\"\n\n* commit \u0027c1a7d0758de065da80129baa85f1471e67c7fe21\u0027:\n  app_process: use LOCAL_MULTILIB :\u003d both\n"
    },
    {
      "commit": "c1a7d0758de065da80129baa85f1471e67c7fe21",
      "tree": "31e0a53c9339da4782e84f666f71d0f951423126",
      "parents": [
        "6984e4f9bbeb48fb7437183ed2aeb06661bbc228",
        "232d422405d686eb493b48370a2b2f7c35fe96fb"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 27 17:36:27 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 27 17:36:27 2014 +0000"
      },
      "message": "am 232d4224: am f0ffa8a3: Merge \"app_process: use LOCAL_MULTILIB :\u003d both\"\n\n* commit \u0027232d422405d686eb493b48370a2b2f7c35fe96fb\u0027:\n  app_process: use LOCAL_MULTILIB :\u003d both\n"
    },
    {
      "commit": "f130f0aaea58358dafbe83ccec2b5163b5bed1fb",
      "tree": "06be6d4b9de8764d34ef29e7dc2eca085833c2c4",
      "parents": [
        "5daf51c0fe6d5bea858c37291fed88bd3094d3ec"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 27 10:20:29 2014 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 27 10:20:29 2014 -0700"
      },
      "message": "app_process: use LOCAL_MULTILIB :\u003d both\n\nUse LOCAL_MULTILIB :\u003d both to build app_process64 instead of\nduplicating the build rule.\n\nAlso causes PRODUCT_PACKAGES :\u003d app_process to install both\nversions on 64-bit platforms, as the module names for both\napp_process and app_process64 are now app_process.\n\nChange-Id: Ia3c3265d15475771b0cae8bace53b8fbf351c186\n"
    },
    {
      "commit": "1ee4eb074c2d85148658e93e865a18834bdced72",
      "tree": "9ac244717091a290c8c06a3de80b4eeb8d97679b",
      "parents": [
        "460572b22fe8fe5880ad099090b38765e2f8a2f6",
        "7629a18a3f190368e6268d3f2827824905683268"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 20:00:10 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 20:00:11 2014 +0000"
      },
      "message": "Merge \"Revert \"Expand install observer semantics\"\""
    },
    {
      "commit": "7629a18a3f190368e6268d3f2827824905683268",
      "tree": "392b2bde32c959d39d7a37bc0f3c46d7fbe3a55b",
      "parents": [
        "ab8a501f255b272af887acb0e66eb71cdf24c755"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 19:59:48 2014 +0000"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 19:59:48 2014 +0000"
      },
      "message": "Revert \"Expand install observer semantics\"\n\nThis reverts commit ab8a501f255b272af887acb0e66eb71cdf24c755.\n\nChange-Id: I4ab4ae1a96efa2adf9d5a513793d8b84eef38b4e\n"
    },
    {
      "commit": "9067dc03ffc76c5210d26d5a53a211eff046d412",
      "tree": "23576fc1d98647012488024e19b3254fbb4d3382",
      "parents": [
        "583080d87cbf08c253e79feafd6a1b74cf3cddc1",
        "ab8a501f255b272af887acb0e66eb71cdf24c755"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Mar 26 19:23:53 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 19:24:09 2014 +0000"
      },
      "message": "Merge \"Expand install observer semantics\""
    },
    {
      "commit": "ab8a501f255b272af887acb0e66eb71cdf24c755",
      "tree": "4428aa0f60d4a2a309e8882d27fab9c5b20ad5c3",
      "parents": [
        "48a5dbd3cc5dd8a919983455757dc4c7b82500ab"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Mar 24 16:25:51 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Mar 25 19:28:54 2014 -0700"
      },
      "message": "Expand install observer semantics\n\n...and now fail conservatively when two apps both attempt to define\nthe same permission.\n\nWe also finally have a (hidden) interface class for observing package\ninstallation so that we can now rev the interface without breaking\nexisting callers.\n\nBug 13551375\n\nChange-Id: I3a286d024a30e812ee4b098f345401df3c00e178\n"
    },
    {
      "commit": "de898ff42912bd7ca1bfb099cd439562496765a4",
      "tree": "849b591a99a7e6a8fd790aedca3afff6f6b6eade",
      "parents": [
        "05f79758cd2688f89444a38baba326a0a1c1a438"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 29 18:20:45 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 25 12:09:56 2014 -0700"
      },
      "message": "Shared library resource support\n\nShared libraries can now export resources for applications\nto use.\n\nExporting resources works the same way the framework exports\nresources, by defining the public symbols in res/values/public.xml.\n\nBuilding a shared library requires aapt to be invoked with the\n--shared-lib option. Shared libraries will be assigned a package\nID of 0x00 at build-time. At runtime, all loaded shared libraries\nwill be assigned a new package ID.\n\nCurrently, shared libraries should not import other shared libraries,\nas those dependencies will not be loaded at runtime.\n\nAt runtime, reflection is used to update the package ID of resource\nsymbols in the shared library\u0027s R class file. The package name of\nthe R class file is assumed to be the same as the shared library\u0027s\npackage name declared in its manifest. This will be customizable in\na future commit.\n\nSee /tests/SharedLibrary/ for examples of a shared library and its\nclient.\n\nBug:12724178\nChange-Id: I60c0cb8ab87849f8f8a1a13431562fe8603020a7\n"
    },
    {
      "commit": "63665f2ac4f25131728a7efff0a449ecdc3f4c50",
      "tree": "395dec9ab1b065c3038f013b9f7628a888f483f0",
      "parents": [
        "52eb953278ad68ba5e5995feb1c8f8d43a7af4c9",
        "a3633c25033b576ae160ea86194e4f7f20d82fe2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 21:05:40 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 21:05:40 2014 +0000"
      },
      "message": "am a3633c25: am 71a3d40d: am e4360c8e: am 4308a523: Merge \"bootanimation: build 32-bit if 64-bit gl libraries are not available\"\n\n* commit \u0027a3633c25033b576ae160ea86194e4f7f20d82fe2\u0027:\n  bootanimation: build 32-bit if 64-bit gl libraries are not available\n"
    },
    {
      "commit": "adfe8b86e9178a553b6db9722340fa4ff5201cf1",
      "tree": "2054d99dc17b0ada61693b97d9f3e306b4fe4d4a",
      "parents": [
        "aef4f6ebc8f8eb1f9fbfbe4ae2556c9f1a26a63c"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 04 16:23:32 2014 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 20 12:30:51 2014 -0700"
      },
      "message": "App widget backup/restore infrastructure\n\nBackup/restore now supports app widgets.\n\nAn application involved with app widgets, either hosting or publishing,\nnow has associated data in its backup dataset related to the state of\nwidget instantiation on the ancestral device.  That data is processed\nby the OS during restore so that the matching widget instances can be\n\"automatically\" regenerated.\n\nTo take advantage of this facility, widget-using apps need to do two\nthings:  first, implement a backup agent and store whatever widget\nstate they need to properly deal with them post-restore (e.g. the\nwidget instance size \u0026 location, for a host); and second, implement\nhandlers for new AppWidgetManager broadcasts that describe how to\ntranslate ancestral-dataset widget id numbers to the post-restore\nworld.  Note that a host or provider doesn\u0027t technically need to\nstore *any* data on its own via its agent; it just needs to opt in\nto the backup/restore process by publishing an agent.  The OS will\nthen store a small amount of data on behalf of each widget-savvy\napp within the backup dataset, and act on that data at restore time.\n\nThe broadcasts are AppWidgetManager.ACTION_APPWIDGET_RESTORED and\nACTION_APPWIDGET_HOST_RESTORED, and have three associated extras:\n\n    EXTRA_APPWIDGET_OLD_IDS\n    EXTRA_APPWIDGET_IDS\n    EXTRA_HOST_ID [for the host-side broadcast]\n\nThe first two are same-sized arrays of integer widget IDs.  The\n_OLD_IDS values are the widget IDs as known to the ancestral device.\nThe _IDS array holds the corresponding widget IDs in the new post-\nrestore environment.  The app should simply update the stored\nwidget IDs in its bookkeeping to the new values, and things are\noff and running.  The HOST_ID extra, as one might expect, is the\napp-defined host ID value of the particular host instance which\nhas just been restored.\n\nThe broadcasts are sent following the conclusion of the overall\nrestore pass.  This is because the restore might have occurred in a\ntightly restricted lifecycle environment without content providers\nor the package\u0027s custom Application class.  The _RESTORED broadcast,\nhowever, is always delivered into a normal application environment,\nso that the app can use its content provider etc as expected.\n\n*All* widget instances that were processed over the course of the\nsystem restore are indicated in the _RESTORED broadcast, even if\nthe backing provider or host is not yet installed.  The widget\nparticipant is responsible for understanding that these are\npromises that might be fulfilled later rather than necessarily\nreflecting the immediate presentable widget state.  (Remember\nthat following a cloud restore, apps may be installed piecemeal\nover a lengthy period of time.)  Telling the hosts up front\nabout all intended widget instances allows them to show placeholder\nUI or similarly useful information rather than surprising the user\nwith piecemeal unexpected appearances.\n\nThe AppWidgetProvider helper class has been updated to add a new\ncallback, onRestored(...), invoked when the _RESTORED broadcast\nis received.  The call to onRestored() is immediately followed by\nan invocation of onUpdate() for the affected widgets because\nthey will need to have their RemoteViews regenerated under the\nnew ID values.\n\nBug 10622506\nBug 10707117\n\nChange-Id: Ie0007cdf809600b880d91989c00c3c3b8a4f988b\n"
    },
    {
      "commit": "4a1bc7dfc1fc13c29e30353e488bd12ee91836cb",
      "tree": "05f416d9d7563115e3a2a12457e2f3ee89a92682",
      "parents": [
        "1f839d92100c5f05cbd52b8f5d0671d984a48334",
        "e4360c8e14d1ea362fb1d13b7a5c9bf003f3be00"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 17:47:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 17:47:10 2014 +0000"
      },
      "message": "am e4360c8e: am 4308a523: Merge \"bootanimation: build 32-bit if 64-bit gl libraries are not available\"\n\n* commit \u0027e4360c8e14d1ea362fb1d13b7a5c9bf003f3be00\u0027:\n  bootanimation: build 32-bit if 64-bit gl libraries are not available\n"
    },
    {
      "commit": "71a3d40d20c9507efab94260431e330558b90cd0",
      "tree": "f6a131aec0ca2e6c5714e4a5971403dd3f99dbea",
      "parents": [
        "065b8fd1c388812a789be48aaa0a0f7918d2755d",
        "e4360c8e14d1ea362fb1d13b7a5c9bf003f3be00"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 17:46:50 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 17:46:50 2014 +0000"
      },
      "message": "am e4360c8e: am 4308a523: Merge \"bootanimation: build 32-bit if 64-bit gl libraries are not available\"\n\n* commit \u0027e4360c8e14d1ea362fb1d13b7a5c9bf003f3be00\u0027:\n  bootanimation: build 32-bit if 64-bit gl libraries are not available\n"
    },
    {
      "commit": "6ac8a20b8f2a2378e8fc6edec8deb42b7c09c2bf",
      "tree": "eb35166c38dcb562aeb392462d9abf4f21061465",
      "parents": [
        "046e0a7ba68c95e303842812e835e0f321e8d892",
        "a78b389e544894ccb9673e2e416c3a1b51260513"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 01:55:52 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 01:55:52 2014 +0000"
      },
      "message": "am a78b389e: am 49fca697: am 0dccb02b: am 19fc55e1: Merge \"build app_process64 on 64-bit targets\"\n\n* commit \u0027a78b389e544894ccb9673e2e416c3a1b51260513\u0027:\n  build app_process64 on 64-bit targets\n"
    },
    {
      "commit": "49fca697470b8321a02bdd2a828e9beec1ef1182",
      "tree": "ea9e5d4620c179c1c3606f8ec041e0f162c8d714",
      "parents": [
        "c60ac2b825459165b7e708fc2049d04d6f5c3fb2",
        "0dccb02b9fd714af1db91e4ba3ca0b0da4e563c1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 01:23:28 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 01:23:28 2014 +0000"
      },
      "message": "am 0dccb02b: am 19fc55e1: Merge \"build app_process64 on 64-bit targets\"\n\n* commit \u00270dccb02b9fd714af1db91e4ba3ca0b0da4e563c1\u0027:\n  build app_process64 on 64-bit targets\n"
    },
    {
      "commit": "af9205626fdb92c1ebb4a229fd25a654c1cfdfcb",
      "tree": "8ce2c03618ea99d8a64c72a6646cb06c587cd442",
      "parents": [
        "674dd27ca17636360253a8f9ecdd7b382f3b5b8c",
        "0dccb02b9fd714af1db91e4ba3ca0b0da4e563c1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 01:22:59 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 01:22:59 2014 +0000"
      },
      "message": "am 0dccb02b: am 19fc55e1: Merge \"build app_process64 on 64-bit targets\"\n\n* commit \u00270dccb02b9fd714af1db91e4ba3ca0b0da4e563c1\u0027:\n  build app_process64 on 64-bit targets\n"
    },
    {
      "commit": "31d16e5bf9e4edc8c3af08d8405ebe90bde99220",
      "tree": "52893a54e874aafbaf39bb0e9ffd3eaed7cce6fe",
      "parents": [
        "2764fce3a1119599cd231545b16e6a16286e482d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 19 18:09:01 2014 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 19 18:10:31 2014 -0700"
      },
      "message": "bootanimation: build 32-bit if 64-bit gl libraries are not available\n\nSet LOCAL_32_BIT_ONLY if TARGET_32_BIT_SURFACEFLINGER is set.\n\nChange-Id: I76396cc9fe3fe45d1e98a44bf911d6e70922555a\n"
    },
    {
      "commit": "2764fce3a1119599cd231545b16e6a16286e482d",
      "tree": "10afd1b4914b8e5eb448f94514221e93a2167179",
      "parents": [
        "bfc440923ecb8f32448c675095a2096049fe7ebe"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 19 17:47:39 2014 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 19 17:49:47 2014 -0700"
      },
      "message": "build app_process64 on 64-bit targets\n\nOn 64-bit platforms builds two copies of app_process, the 32-bit\napp_process and 64-bit app_process64.\n\nChange-Id: I59d739b5df398ad0bd040c954c57640ff7ab3e72\n"
    },
    {
      "commit": "aea74a5977ca9f1054926eb24f247562c3a4a6ba",
      "tree": "64ea3d6369a984cc8863c7331baa052a3c9891bf",
      "parents": [
        "1cb98aeaad2e04e6f1cc4f67c92808aa1c8f50e5"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sat Mar 08 14:23:10 2014 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Mar 13 11:09:13 2014 -0700"
      },
      "message": "Add Lock Task Mode.\n\nWhen in lock task mode only the specified task may run. All\nattempts to switch to another task are ignored until the task\nfinishes or a call to stopLockTaskMode() is made.\n\nChange-Id: I6cfe92fe1bcf22cd47b5398c08e23c52a4092dda\n"
    },
    {
      "commit": "8392e7e28715b614c7b7a0aa8c95a12f592557d9",
      "tree": "23ee272205838697203b05fc2e76e674e5814ac9",
      "parents": [
        "a6f527b9415b78d88ddffa4c343f133ce59a978d",
        "01de243263d347f2ac13a239d67d41817e34df33"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Fri Mar 07 19:33:55 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 07 19:33:55 2014 +0000"
      },
      "message": "am 01de2432: am 24d8fa73: Merge \"frameworks/base: move idmap from frameworks/native\"\n\n* commit \u002701de243263d347f2ac13a239d67d41817e34df33\u0027:\n  frameworks/base: move idmap from frameworks/native\n"
    },
    {
      "commit": "391d489ce0808630dd56b06259eb6e616bf79d94",
      "tree": "fa279f35a18bea75b86720edee174f81a8534778",
      "parents": [
        "34a0992512a6b991cb9f98034437e205f8170be2",
        "c749b44086722217526f220f3656ba06b2e8cea0"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Mar 06 15:30:51 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 06 15:30:51 2014 +0000"
      },
      "message": "Merge \"FramebufferNativeWindow.h is obsolete\""
    },
    {
      "commit": "c749b44086722217526f220f3656ba06b2e8cea0",
      "tree": "b215189cd0f6172493a0d4f9cdd80cb56a3be09f",
      "parents": [
        "4b131046aa5685112b8f198a989daef13279cadb"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Mar 05 15:36:58 2014 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Mar 05 15:36:58 2014 -0800"
      },
      "message": "FramebufferNativeWindow.h is obsolete\n\nChange-Id: I3c645af7247a520e28d337e567f326375558519a\n"
    },
    {
      "commit": "6143a02f96a5c6c7a0a84f5dbe70732998256a72",
      "tree": "367738fe288412c6a2b340cee90a2198be8a93b2",
      "parents": [
        "48d04ec3b7990f3a58d36b23f07b6cf0a0af65db"
      ],
      "author": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Wed Mar 05 20:43:49 2014 +0000"
      },
      "committer": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Wed Mar 05 22:24:01 2014 +0000"
      },
      "message": "Start related users on boot and user switch.\n\nCollect related initialized users and start\nthem on boot and user switch.\nUpdate list users command to show whether a\nuser is running or not.\n\nChange-Id: Ib3d5debcb01ec55a07d93450b988b0180fc63263\n"
    },
    {
      "commit": "fc9276340897289b8f848fc722152d6fc0f891ed",
      "tree": "14cca48e01e4c491bd5ffe9499a96cd2e42e9d91",
      "parents": [
        "ef23865154bf5e6c1768023dd69845353cf8c543",
        "eece0dda56ae29fff6e9003df97594f6ac50b6e2"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Feb 28 13:23:13 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 28 13:23:15 2014 +0000"
      },
      "message": "Merge \"Fix includes so that they no longer rely on the global Skia includes directories.\""
    },
    {
      "commit": "8a78a807097397ccd9c6ea20868f71c7ee19ef1d",
      "tree": "31230dcc3bf2257996e77a5286114b337980e5f8",
      "parents": [
        "b11e98b2c1dcafd6efe8d517050d740bf94f0152",
        "28600e261c088eddcd0201820ed93730c77af282"
      ],
      "author": {
        "name": "Dale Hawkins",
        "email": "dkhawk@google.com",
        "time": "Thu Feb 27 21:29:31 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 27 21:29:32 2014 +0000"
      },
      "message": "Merge \"Adds support for array string extra.\""
    },
    {
      "commit": "eece0dda56ae29fff6e9003df97594f6ac50b6e2",
      "tree": "46e4cd73a189dabb2e28d2eafaef2b9abf73a82f",
      "parents": [
        "94b5ca811e5716bddb4a4d86df35c29bb9165e5f"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Feb 27 14:31:29 2014 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Feb 27 14:31:29 2014 -0500"
      },
      "message": "Fix includes so that they no longer rely on the global Skia includes directories.\n\nbug:13225538\nChange-Id: Ia5d816dc665f81c7985f21036af4fd0a63c560cf\n"
    },
    {
      "commit": "950fe8f8d4d654e645fa7205ca275b5a03feb214",
      "tree": "4a4e2dfd3f32ebdaf2b57835c19e42afa7f9ee5d",
      "parents": [
        "94b5ca811e5716bddb4a4d86df35c29bb9165e5f"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Feb 27 11:14:55 2014 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Feb 27 16:21:24 2014 +0000"
      },
      "message": "Cleanup unnecessary includes for libskia.\n\nThe libskia target exports all of its public includes directories so\nredefining them here is redundant. Also this cleans up and makes it\nobvious where the framework is making using of private Skia headers.\n\nChange-Id: Ie7ecc9ddd3df780bed6b9af54ba58ca58274e043"
    },
    {
      "commit": "28600e261c088eddcd0201820ed93730c77af282",
      "tree": "53d62682d1e1b993c55055044f4d2bb56845690d",
      "parents": [
        "adcd253a144bc0c8efdfec6de63adf6bfb97acbd"
      ],
      "author": {
        "name": "Dale Hawkins",
        "email": "dkhawk@google.com",
        "time": "Wed Feb 26 16:39:51 2014 -0700"
      },
      "committer": {
        "name": "Dale Hawkins",
        "email": "dkhawk@google.com",
        "time": "Wed Feb 26 18:01:00 2014 -0700"
      },
      "message": "Adds support for array string extra.\n\nAdds support for setting an array string extra on an intent when\nlaunching an activity/service.  Allows inclusion of commas using\nan escape character.\n\nChange-Id: I8857f7d28d60b75ddc65dc47f345a77230d00467\n"
    },
    {
      "commit": "b88a904dfe719a8cbb0b9d73cb4637c22a1deed4",
      "tree": "9c6bd561736fcb428513ac4cba7d0347eefbfdd1",
      "parents": [
        "498aa8bb3c51b7c5ba66cb38167263157d13bcc1",
        "16ec12ae77fdd2b09ea0ea0885ac52f11bd32c59"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Feb 20 00:56:33 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 20 00:56:33 2014 +0000"
      },
      "message": "Merge \"Allow disabling layer rotation during screenshots\""
    },
    {
      "commit": "16ec12ae77fdd2b09ea0ea0885ac52f11bd32c59",
      "tree": "a489ab33cd1706382c24a4f71b4ab45990793c39",
      "parents": [
        "d5c8044e7e1f1402fdd4a035690329294ab07b33"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri Feb 14 15:06:55 2014 -0800"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri Feb 14 23:10:29 2014 +0000"
      },
      "message": "Allow disabling layer rotation during screenshots\n\nAdd the ability to ignore layers\u0027 transformation matrices during\nscreenshot capture, which will allow the window manager to capture\nunrotated images for recents during the device rotation animation.\n\nBug: 11805195\nChange-Id: I96e65506b198d34724eb3aa84815aae6f6de4935"
    },
    {
      "commit": "31d6776a9225be5d4ae521a5b551f413c9481aa3",
      "tree": "15520427eba6bc390353fb5fb340c0132c909982",
      "parents": [
        "a9f387bdf0a836de8bcb12a46a5cdfcb544fbb1a"
      ],
      "author": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Fri Feb 14 17:35:05 2014 +0000"
      },
      "committer": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Fri Feb 14 19:12:03 2014 +0000"
      },
      "message": "Extend pm create-user to handle related and managed users.\n\nChange-Id: I0a290b9debdc8ddf23b72a84bf98908ab7fa7c0d\n"
    },
    {
      "commit": "c63abee945949dc9ac8a3fb9e17726ca420ce1fd",
      "tree": "3c1d21288603edd59c925545c5bbdc9c237a5f73",
      "parents": [
        "c1e0f9be09750055914f873e690d334821739909",
        "6231c948b0dc8dc97a5054f26c398a9a2884921f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Fri Feb 14 02:03:48 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 14 02:03:48 2014 +0000"
      },
      "message": "am 6231c948: am dc3561df: am 01de2432: am 24d8fa73: Merge \"frameworks/base: move idmap from frameworks/native\"\n\n* commit \u00276231c948b0dc8dc97a5054f26c398a9a2884921f\u0027:\n  frameworks/base: move idmap from frameworks/native\n"
    },
    {
      "commit": "dc3561df118a17a099285c9be312fb66f91314ec",
      "tree": "aaa4dfc755da057f36c03acd2dd2658c7793bf1e",
      "parents": [
        "e574f7decf7bc2c6861aff2fd4458b9f96a08a28",
        "01de243263d347f2ac13a239d67d41817e34df33"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Fri Feb 14 01:54:49 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 14 01:54:49 2014 +0000"
      },
      "message": "am 01de2432: am 24d8fa73: Merge \"frameworks/base: move idmap from frameworks/native\"\n\n* commit \u002701de243263d347f2ac13a239d67d41817e34df33\u0027:\n  frameworks/base: move idmap from frameworks/native\n"
    },
    {
      "commit": "9ae000ca8c05ad6f700ad7bf119bbc92fb964b57",
      "tree": "39535e468bacaef05410d512d0794c41d27f8181",
      "parents": [
        "7825334929b098b36e1144872200e75ba6d24b13"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 13 17:22:33 2014 +0000"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 13 17:22:33 2014 +0000"
      },
      "message": "Revert \"Split AndroidRuntime into AndroidRuntimeBase base-class and the rest.\"\n\nThis reverts commit 7825334929b098b36e1144872200e75ba6d24b13.\n\nChange-Id: I1702eb3ff9d7192d64039c8bf4bc3fc5d8e458c4\n"
    },
    {
      "commit": "7825334929b098b36e1144872200e75ba6d24b13",
      "tree": "18f4d807ba8d59e0849ccd2032164d1613dddb9b",
      "parents": [
        "faa91f852e9526b2f112122da9ae0956526cf662"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 06 15:25:25 2014 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 12 15:00:05 2014 -0800"
      },
      "message": "Split AndroidRuntime into AndroidRuntimeBase base-class and the rest.\n\nAndroidRuntimeBase (exported by libandroid_runtime_base.so) is all you need\nto link against to gain the ability to do AndroidRuntimeBase::getJNIEnv()\nthus minimizing build dependencies.\n\nChange-Id: Ia7f0c94c8c02b974c068e0db34774827f96aa95b\n"
    },
    {
      "commit": "13221c9cffdb289851411bdc73a9a5236fcb9291",
      "tree": "838dc670e5df43923b5bb980b0b515cf3cb432cf",
      "parents": [
        "ecbeae74f299f44f9ec4c79ddd885e999d4e1b64"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 11 18:04:44 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 11 18:11:36 2014 -0800"
      },
      "message": "frameworks/base: move idmap from frameworks/native\n\nidmap depends on libandroidfw, so it should go in frameworks/base.\n\nChange-Id: I3c1db3baa355f53d6b523d60f4377e63eff00c30\n"
    },
    {
      "commit": "3de2377d7abb6afcca8acb9a927a25dc99056141",
      "tree": "ee7e51af88cbd4f023f9dd297a9c4551d3c4dc38",
      "parents": [
        "2dfae9bea104c0594fd5641f9704f34b204abd87",
        "8964cbbb508b21b5a1771644466e48d4a1247a9f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jan 08 22:22:26 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 08 22:22:27 2014 +0000"
      },
      "message": "Merge \"sqlite integer fields are long\""
    },
    {
      "commit": "b859449b717b24ac6e678c303d7706d55fd184f7",
      "tree": "1e0168ec14448f8bc13d999fa7bf1611d84bca1c",
      "parents": [
        "7b925fbb87d7bfac17bf04e62ea786e96ee7e6d9",
        "88bfc6ddc846d714bc15518ef6741e39145a1687"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Jan 08 09:51:33 2014 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Jan 08 09:51:33 2014 -0800"
      },
      "message": "resolved conflicts for merge of 88bfc6dd to master\n\nChange-Id: Ib656ac0591b21ad14f2df51021729552e9373515\n"
    },
    {
      "commit": "8964cbbb508b21b5a1771644466e48d4a1247a9f",
      "tree": "b59cf505e87f700dd4a8e4cdf4e97f09f1b8b179",
      "parents": [
        "7b925fbb87d7bfac17bf04e62ea786e96ee7e6d9"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Dec 20 14:09:22 2013 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jan 08 17:19:45 2014 +0000"
      },
      "message": "sqlite integer fields are long\n\nChange-Id: I350ccfe91af707cfc234bead9341d68b55623d7b\n"
    },
    {
      "commit": "e0a3884cb627efc650e19fbe76b1b3343468cf57",
      "tree": "5cdfc0e202bb18c314138dea3f1328c3f6e55ba0",
      "parents": [
        "02d5df1066c07972e1169a338e5fba16c86cc51b"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Dec 16 16:14:02 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Jan 06 08:51:21 2014 -0800"
      },
      "message": "Extend stack management to other displays.\n\n- Abandon ActivityContainer.startActivity() in favor of\nIActivityManager.startActivityAsUserInContainer().\n- Modify Am to test starting an activity on a container.\n- Create a DisplayContext as the base context if the activity token\nis on a different display.\n- Test for home display in more cases when manipulating home stack.\n- Rename mDisplayInfos \u003d\u003e mActivityDisplays.\n- Create new method for moving task to front of stack regardless of\nwhich display it is on.\n\nChange-Id: I4fcb83ae844c5839ee3e2722229623d1a80ed921\n"
    },
    {
      "commit": "ff288f7f57dfd7f12a6e8c36d9d46331077dbc03",
      "tree": "0a7bb2027da086281f8be712c99dc170b51410b2",
      "parents": [
        "ed6649f89f236ea9e665028bd33d6d804b906a92",
        "b7bba718a88e9baa843e51d9871129d8e682c0b0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Dec 19 10:55:17 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Dec 19 10:55:17 2013 -0800"
      },
      "message": "resolved conflicts for merge of b7bba718 to master\n\nChange-Id: Ibbac3f6e3eda0149ae9446d6baed1d1bee5138ac\n"
    },
    {
      "commit": "ed6649f89f236ea9e665028bd33d6d804b906a92",
      "tree": "5d9dc082d318e602dc161623664d8c4757e98153",
      "parents": [
        "8a4c62e3fa89dba0d7681fffed6b2e40b7d539e2"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Dec 02 14:08:25 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Dec 19 10:51:23 2013 -0800"
      },
      "message": "DO NOT MERGE: Eliminate StackBox.\n\nStackBox is too constraining. Adding size and position to TaskStacks\ndirectly makes stack positioning and management more flexible and\nprepares for ActivityView.\n\nChange-Id: I33c6b4e1c23a5a8069fd507c160bcb34e4d287b2\n"
    },
    {
      "commit": "4a1cb22056112f7ffd5f4fad8b7a092b96e7cc7b",
      "tree": "2a30eb0760369a59905895e88f8325fbf9934414",
      "parents": [
        "3bcdbd6b2d96427d7cee835e9ed79aeed51de267"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Dec 04 16:14:06 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Dec 18 15:08:15 2013 -0800"
      },
      "message": "Pair ActivityStacks with Displays\n\n- Introduce concept of ActivityStacks residing on Displays and able\nto be decoupled and moved around.\n- Add a new interface, IActivityContainer for clients to handle\nActivityStacks.\n- Abandon ordering of stacks based on mStackState and instead use\nActivityDisplayInfo.stacks\u003cActivityStack\u003e ordering.\n\nProgress towards closing bug 12078972.\n\nChange-Id: I7785b61c26dc17f432a4803eebee07c7415fcc1f\n"
    },
    {
      "commit": "9d7d4da6b719594a89b4b8b17546f6601b617f33",
      "tree": "863cd571b02ee37919f5713964491d7da13b3063",
      "parents": [
        "d9a32847e51f19822937dc9b916e8b7ea5f50df7",
        "fc800d407d695926ba07299c4e27d1e06284098f"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Dec 16 18:47:03 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 16 18:47:03 2013 +0000"
      },
      "message": "am fc800d40: am fbd6d5a8: am 09fdc159: am 3ddee4de: Merge \"[bootanimation] Drop user loadable bootanimation.zip abiltiy.\"\n\n* commit \u0027fc800d407d695926ba07299c4e27d1e06284098f\u0027:\n  [bootanimation] Drop user loadable bootanimation.zip abiltiy.\n"
    },
    {
      "commit": "fc800d407d695926ba07299c4e27d1e06284098f",
      "tree": "c757c3f9d7830cc3d1faf8499620ebd6a0bf757b",
      "parents": [
        "0f3390f846ed5ee63e3926b78878c7b75ee2f0c0",
        "fbd6d5a8f8f242ab5a079cc6ed12e2ebaa8bb226"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Dec 16 18:44:04 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 16 18:44:04 2013 +0000"
      },
      "message": "am fbd6d5a8: am 09fdc159: am 3ddee4de: Merge \"[bootanimation] Drop user loadable bootanimation.zip abiltiy.\"\n\n* commit \u0027fbd6d5a8f8f242ab5a079cc6ed12e2ebaa8bb226\u0027:\n  [bootanimation] Drop user loadable bootanimation.zip abiltiy.\n"
    },
    {
      "commit": "09fdc159552c85032ce9860fc0d63b6eebeca82a",
      "tree": "1f4926998feab8a79f3676fea0c4d8ebf34085d3",
      "parents": [
        "1e609ac45df13fed93df81e805ea6d6485da3aa0",
        "3ddee4dec9b7ae2265c356f5809eae73e1ef8796"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Dec 16 10:36:39 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 16 10:36:39 2013 -0800"
      },
      "message": "am 3ddee4de: Merge \"[bootanimation] Drop user loadable bootanimation.zip abiltiy.\"\n\n* commit \u00273ddee4dec9b7ae2265c356f5809eae73e1ef8796\u0027:\n  [bootanimation] Drop user loadable bootanimation.zip abiltiy.\n"
    },
    {
      "commit": "cee6a096b155582211f58bb3e541cf431c6ac3dc",
      "tree": "699911902474463f4f5e6c1f93c20f52f296e919",
      "parents": [
        "a0ab49bb52f44eac97f81117d6864edd6a2e0487"
      ],
      "author": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Mon Dec 16 09:42:51 2013 -0500"
      },
      "committer": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Mon Dec 16 09:42:51 2013 -0500"
      },
      "message": "[bootanimation] Drop user loadable bootanimation.zip abiltiy.\n\nA prior change removed the ability of\nthe shell to push to /data/local. Because\nof this, the bootanimation code no longer\nsupports users loading custom bootanimation.zip\nfiles. This patch drops the access attempt\nfrom the code.\n\nChange-Id: Ie30dd73699c8296be00dc6fbf14691e08baa6410\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "362028d6321468ff598a93df7b2ca0dbfcf3405a",
      "tree": "68858ce6d44acf28ca52f18a44ed52430dcafe63",
      "parents": [
        "8883bebd0fd32ca9183bbda6a9fe0f7f163964dd",
        "411954aef072574676462f579847a01af0aed728"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Dec 11 23:05:00 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 11 23:05:00 2013 +0000"
      },
      "message": "am 411954ae: am a6416309: am 1e137549: am efa5c88f: Merge \"Don\\\u0027t try to set service.bootanim.exit\"\n\n* commit \u0027411954aef072574676462f579847a01af0aed728\u0027:\n  Don\u0027t try to set service.bootanim.exit\n"
    },
    {
      "commit": "411954aef072574676462f579847a01af0aed728",
      "tree": "c21a4f7a2f671350a49ca2dce27927cf3458ec65",
      "parents": [
        "851138fcee54877c9a2cc4102427a3ecc126bbea",
        "a64163093e6e55f8bbb0153e783fb0ab635e9e60"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Dec 11 22:08:05 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 11 22:08:05 2013 +0000"
      },
      "message": "am a6416309: am 1e137549: am efa5c88f: Merge \"Don\\\u0027t try to set service.bootanim.exit\"\n\n* commit \u0027a64163093e6e55f8bbb0153e783fb0ab635e9e60\u0027:\n  Don\u0027t try to set service.bootanim.exit\n"
    },
    {
      "commit": "0bc3607c2823752ae68fe9a2f45803ecc7895a84",
      "tree": "10c1cf6220d56b5516991a0bbcf24e26524ec612",
      "parents": [
        "e2fbb2ac6802e54d67a910da790711fbb2f09201",
        "9f09408e3939c5afdb3f9dafc41afd249303ed7f"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 11 22:02:25 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 11 22:02:25 2013 +0000"
      },
      "message": "am 9f09408e: am 336bf2fb: am d21752df: Merge \"Reimplement ZipFileRO in terms of libziparchive.\"\n\n* commit \u00279f09408e3939c5afdb3f9dafc41afd249303ed7f\u0027:\n  Reimplement ZipFileRO in terms of libziparchive.\n"
    },
    {
      "commit": "1e137549fea552377b53c642518af0201e85cafe",
      "tree": "11679069194396503b35e299a58736c039e0781a",
      "parents": [
        "5d819bef3f4bf97c87032cc403e859b1d0d6797a",
        "efa5c88f37165d02e3e11882026c7660c879ff61"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Dec 11 13:53:29 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 11 13:53:29 2013 -0800"
      },
      "message": "am efa5c88f: Merge \"Don\\\u0027t try to set service.bootanim.exit\"\n\n* commit \u0027efa5c88f37165d02e3e11882026c7660c879ff61\u0027:\n  Don\u0027t try to set service.bootanim.exit\n"
    },
    {
      "commit": "e58d09a5526338aa1f550a1c4111fe4d5028554d",
      "tree": "243a0d478a0cd7d28792c3ce879dbf0b200833b1",
      "parents": [
        "ce3bd309b12e9552c05d5a59a06d7883618c5ca0"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Dec 11 13:10:55 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Dec 11 13:10:55 2013 -0800"
      },
      "message": "Don\u0027t try to set service.bootanim.exit\n\ninit has never allowed the bootanimation code to\nset service.bootanim.exit, and has always generated the\ndmesg error message\n\n  \u003c3\u003e[   17.644615] init: sys_prop: permission denied uid:1003  name:service.bootanim.exit\n\nSince setting this property has no effect and never worked, delete\nthe code which tries to do it.\n\nChange-Id: Idacc5467d85479a8cf974702af8895011be585ea\n"
    },
    {
      "commit": "5a74e2df57acb93b61568b90b048016046ef4512",
      "tree": "949871145e8e5dce1ccaa00dddac162796a3129a",
      "parents": [
        "3554740951b91b1487e72c2d2208302c29d43613"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Dec 03 13:16:03 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 11 19:06:18 2013 +0000"
      },
      "message": "Reimplement ZipFileRO in terms of libziparchive.\n\nThis lets us share zip archive processing code with both\nthe runtime (Art, dalvik) and critical java code\n(StrictJarFile).\n\nThis change also moves several utility methods to ZipUtils\nand dedups code across several zip inflation methods.\n\nOne of the side effects of this change is that several\nprocessing loops are now O(n) instead of O(n^2).\n\nbug: 10193060\n\n(cherry picked from commit afd31e08299008fdc5c2813f21b2573f29dc53df)\n\nChange-Id: I86a2c528575d4a3ca86b94be068dcdc3c17c2ed6\n"
    },
    {
      "commit": "336bf2fb497fece49a874da2ca2e11572446d1d1",
      "tree": "bcec014216dfef6a44852595a3f88834cf064540",
      "parents": [
        "5b9437df99b0351d7e94a61c9f599d9031f24c08",
        "d21752dff45c7d8856e63026cfddc303a302df14"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 11 03:45:58 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 11 03:45:58 2013 -0800"
      },
      "message": "am d21752df: Merge \"Reimplement ZipFileRO in terms of libziparchive.\"\n\n* commit \u0027d21752dff45c7d8856e63026cfddc303a302df14\u0027:\n  Reimplement ZipFileRO in terms of libziparchive.\n"
    },
    {
      "commit": "d21752dff45c7d8856e63026cfddc303a302df14",
      "tree": "2aa3f04db9bea55993977f156c4e750a063bcb75",
      "parents": [
        "4a72b3064cecc85c56b8d75bb4a2d9fedbf76ec8",
        "afd31e08299008fdc5c2813f21b2573f29dc53df"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 11 11:41:10 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 11 11:41:10 2013 +0000"
      },
      "message": "Merge \"Reimplement ZipFileRO in terms of libziparchive.\""
    }
  ],
  "next": "bdc748af8ce62778d2ad15040ecdfada6e4635fd"
}
