)]}'
{
  "log": [
    {
      "commit": "4f0e4a9ada1192e103d43409d83e177608571c68",
      "tree": "9a50bb1cb2d24def5ac42474a59cbcf009753c63",
      "parents": [
        "9522055f1d10b30158b772885bf4befe06fb2a08"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Nov 19 14:21:07 2014 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Nov 19 14:21:07 2014 -0800"
      },
      "message": "Add new empty app test entry points.\n\nChange-Id: Ib899c95de6b7bb936d2114e86bec4c5aef5f7eda\n"
    },
    {
      "commit": "2d7576b082b84068fb9d68419b710b9bec49139b",
      "tree": "90842d7939ca423ed778ba88978b83fbe4962683",
      "parents": [
        "1e2e4307ff381e5cb9d8d19eb6a1aca763ba9415"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Oct 03 16:26:04 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Oct 03 16:26:04 2014 -0700"
      },
      "message": "Fix issue #17752399: Multiple apps broken by GET_TASKS permission change\n\nKeep around GET_TASKS as a permission available to apps, so apps still\nthink they have it and don\u0027t get all uppity because they don\u0027t.\n\nAdd a new REAL_GET_TASKS that is the actual permission now.\n\nPlus some temporary compatibility code until everyone can transition\nfromn GET_TASKS to REAL_GET_TASKS.\n\nChange-Id: I12c1102eed24844685dcbd2fa3b612811603958f\n"
    },
    {
      "commit": "eeb2c7e712dbae91de04ab2338c1fbccfbce7ba2",
      "tree": "02ff12fb190fc18e32f69f16438fb2f719a0ee4f",
      "parents": [
        "4c45b649c36d6c28d22a98d979fbda3b7c36677a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 23 16:45:39 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 23 16:45:39 2014 -0700"
      },
      "message": "Work on issue #17628623: Need to update default preferred activities for YouTube\n\nImprove the warning logs when setting up preferred activities\nto help identify when there are issues and what they are.  Also\nimprove the algorithm a little to still apply permissions when\nresetting them and there are additional third party apps, as long\nas the additional app is something like another browser and the\npreferred activity being set is more specific (has a better match).\n\nAnd add an example of using manifest-based preferred activities\nin to ActivityTest -- and yes it DOES work! :p\n\nChange-Id: I1ff39e03a5df6526206e0c3882085396b355d814\n"
    },
    {
      "commit": "89ad456ea49cb62615ebdcac83a2515743bbe5fa",
      "tree": "4fdd6b948f74930ad10beca0a042e40f36efc50c",
      "parents": [
        "1ce1ba68acbfcbd4100d8c4be7d17a1f0623fd62"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Aug 24 16:45:38 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 26 11:16:59 2014 -0700"
      },
      "message": "Fix issue #16311398: Limit number of documents a process can open\n\nIn application processes, monitor for when we start getting close\nto the Dalvik heap limit, and ask the activity manager to try to\nprune old activity instances in that case.\n\nAdd an explicit API for apps to ask that they have their own\nactivity instances cleaned up, if they want.\n\nFix some bugs in launching activities that were not correctly\napplying the \"multi task\" behavior in the appropriate situations\nof document-centric recents.\n\nClean up the activity manager\u0027s process removal code to all share\na common path.\n\nAdd a new \"Spam\" option to ActivityTests, which continually creates\nnew tasks, checking that the activity manager will now prune old\ntasks rather than letting the app run out of RAM.\n\nAnd while I was was doing this, I found problems with the path\nfor bringing an empty task to the foreground -- it could make\na new task instead of re-starting the root activity in the\nexisting task.  This is fixed, and some code in the recents\nUI for working around the bug is removed.\n\nAnd as long as I am doing that, we now have nice hooks in to\nthe activity manager for AppTask to give some APIs for better\nmanaging the task, so add those along with more tests for these\nAPIs in ActivityTests.\n\nWe should look at also having the activity manager try to prune\nold tasks when it sees app processes being killed, to better balance\nmemory use across multiple processes when some processes may host\nmany documents.  That however is for another CL...\n\nChange-Id: I2bb81c3f92819350c868c7a7470b35817eb9bea9\n"
    },
    {
      "commit": "15ed2754a308546a54ab1061b4e365d6fe9b898d",
      "tree": "454e2961bd63f756b36fe77187b4225fb55982e7",
      "parents": [
        "f52233df74bb4a3efa1f7b9107353c841eafc933"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 18 15:08:33 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 18 15:48:41 2014 -0700"
      },
      "message": "Fix path for handling system window with app token.\n\nIt is wrong to turn the token into a null appWindowToken; we\nneed to create a new top-level token as if they had passed in null.\n\nChange-Id: I870d8167c6ed456ea8fd58b149809ec9e0103bce\n"
    },
    {
      "commit": "3992645bf333c56669ef2fa19c26b2947884a4f3",
      "tree": "e75d77024860894fd438a6926ccd7e3546b737d3",
      "parents": [
        "2fd6cb043901c1bfbf5f566d13522cc3c1c21fb4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 25 14:53:52 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 25 17:14:22 2012 -0700"
      },
      "message": "More activity tests.\n\nChange-Id: Id381ee2db55b135a0734c193fce44c55ef1cdae6\n"
    },
    {
      "commit": "7d19e0242faac8017033dabb872cdf1542fa184c",
      "tree": "ab12d3c6597bc42bc7c0dca10ded546192c5c249",
      "parents": [
        "03ad783c5078c7bd487e47bb2a2af67dfbe89f1a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:12:33 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:19:22 2012 -0700"
      },
      "message": "More mult-user API work.\n\n- You can now use android:singleUser with receivers and providers.\n- New API to send ordered broadcasts as a user.\n- New Process.myUserHandle() API.\n\nFor now I am trying out \"user handle\" as the name for the numbers\nrepresenting users.\n\nChange-Id: I754c713ab172494bb4251bc7a37a17324a2e235e\n"
    },
    {
      "commit": "b4163a6e12ee7100c758c6d3d062ade1f2843fce",
      "tree": "2948e83dec184906f2c44ee332431f219b78359d",
      "parents": [
        "b1758cf8cd007bfffb3d8adceca25f3b0c82bd77"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 02 18:31:26 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 02 19:07:57 2012 -0700"
      },
      "message": "Add APIs for interacting across users.\n\n- Expose the existing Context.sendBroadcast() as\n  Context.sendBroadcastAsUser().\n- Add new android:singleUser attribute for services.\n- Add new INTERACT_ACROSS_USERS_FULL permission for full\n  system-level access to cross-user interface (allows\n  sendBroadcastAsUser() to send to any receiver).\n- Add new INTERACT_ACROSS_USERS_FULL permission for\n  more restricted cross-user interaction: this is required\n  for android:singleUser, and allows you to use\n  sendBroadcastAsUser() but only to send to your own\n  receivers.\n\nChange-Id: I0de88f6718e9505f4de72e3f45d29c0f503b76e9\n"
    },
    {
      "commit": "0c5001d776d56bae02a5cc2663286a125d99bc5e",
      "tree": "ea7458737297e313c454f18d672e2b997af13990",
      "parents": [
        "26b05f7dc35f47bc62bf9630df288ae2d6e4657e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Apr 12 18:16:08 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Apr 12 18:28:06 2011 -0700"
      },
      "message": "Add APIs to remove tasks.\n\nYou can remove sub-tasks inside of a task, or an entire task.\n\nWhen removing an entire task, you can have its process killed\nas well.\n\nWhen the process is killed, any running services will get an\nonTaskRemoved() callback for them to do cleanup before their\nprocess is killed (and the service possibly restarted).\n\nOr they can set a new android:stopWithTask attribute to just\nhave the service automatically (cleanly) stopped at this point.\n\nChange-Id: I1891bc2da006fa53b99c52f9040f1145650e6808\n"
    },
    {
      "commit": "f26fd99a7c2f554b0297760bb66336473c7db61f",
      "tree": "292bc65e6d068857bda10f2f45727a7c88601b64",
      "parents": [
        "bdf7b013f81b0b56a18cc9dd2fb987b56d595650"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 08 18:14:09 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 08 18:16:21 2011 -0700"
      },
      "message": "Rework thumbnails in activity manager.\n\nWe now only keep a thumbnail for the task, not for each\nactivity.  However if you use FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET,\nwe will make a new secondary thumbnail for that series of\nactivities.  There is a new API for the app to get these\nsecondary thumbnails.\n\nAlso set a default thumbnail size for non-xlarge screens\nso we have thumbnails on phones.  (We need some smarter\ncode in the platform for computing the actual thumbnail\ndimensions of the current device).  And add a test app\nto show recent tasks + thumbnails.\n\nChange-Id: Ic36759f6635522118a2cb7f156662229a610c492\n"
    }
  ]
}
