)]}'
{
  "log": [
    {
      "commit": "a8c6111a88df157240ea40e61f46df8366b1b945",
      "tree": "41fb40d840fdc125217fb8de2d993c2b14c8525c",
      "parents": [
        "7b91c55b3ff4857e904a11a0a67fcc86a32868b4"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Mar 02 16:21:35 2015 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Mar 02 16:24:18 2015 -0800"
      },
      "message": "Content and settings shell commands passing invalid calling package.\n\nChange-Id: Ia80099ba0afba054b70511c0d95265ec303446e0\n"
    },
    {
      "commit": "ff17024e583b170312d82089fd358d278ce16c9a",
      "tree": "8c88e1081fe932f64fbae35b87fad3bb6f4ddd93",
      "parents": [
        "9522055f1d10b30158b772885bf4befe06fb2a08"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Nov 19 10:59:01 2014 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Nov 19 14:29:10 2014 -0800"
      },
      "message": "Fix issue with call backs from media process.\n\nAll but a few lines of this is for issue #16013164, which allowed\napps to do some operations as the media uid by having it call\nback to them to open a file.  The problem here is with the tempory\nidentity stuff in the activity manager, allowing us to make the open\ncall as the original caller...  ideally we should figure out a way\nto just get rid of all of that, but the solution here is actually\neasier (even though it doesn\u0027t look it) -- we now hand a token over\nto the openFile() call that it can use when doing permission checks\nto say \"yes I would like the check to be against whoever is responsible\nfor the open\".  This allows us to do the uid remapping for only this\none specific set of permission checks, and nothing else.\n\nAlso fix issue #17487348: Isolated services can access system services\nthey shouldn\u0027t be able to.  Don\u0027t send any system service IBinder objects\ndown for the first initialization of an isolated process.\n\nChange-Id: I3c70e16e0899d7eef0bae458e83958b41ed2b75e\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": "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": "c2235472dacd31aa30ffc13de2c29488c3b6c338",
      "tree": "e2f8be37960234ee5c5afb6823d66999e9a10712",
      "parents": [
        "9fbdda42a2acff8179c251f6455fd3e2c9971545",
        "f7497c9e551dd3bcbb7438211f5022cc6341c527"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@android.com",
        "time": "Tue Feb 26 18:04:33 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 26 18:04:33 2013 +0000"
      },
      "message": "am f7497c9e: am 755205ad: Merge \"Fix spelling error s/SORT_OREDER/SORT_ORDER/ in \"content --help\"\"\n\n* commit \u0027f7497c9e551dd3bcbb7438211f5022cc6341c527\u0027:\n  Fix spelling error s/SORT_OREDER/SORT_ORDER/ in \"content --help\"\n"
    },
    {
      "commit": "64d0b3f9186bfb41cd14203d11f34c6fe0121945",
      "tree": "78f214cd7c8aa66270205161057b75e388948255",
      "parents": [
        "08a92a335fd84ca427b55c6c2d39f72970d82b76"
      ],
      "author": {
        "name": "Martin Olsson",
        "email": "martin@minimum.se",
        "time": "Tue Feb 26 17:54:39 2013 +0100"
      },
      "committer": {
        "name": "Martin Olsson",
        "email": "martin@minimum.se",
        "time": "Tue Feb 26 17:54:39 2013 +0100"
      },
      "message": "Fix spelling error s/SORT_OREDER/SORT_ORDER/ in \"content --help\"\n\nChange-Id: I8f869c9d2243ae8ff414399b7d6835c7ca74d500\nSigned-off-by: Martin Olsson \u003cmartin@minimum.se\u003e\n"
    },
    {
      "commit": "33c29b0e16a98753aecad894cbc344a87a6307a5",
      "tree": "1ea25e19fe365591e86513617833f56a6519d3c4",
      "parents": [
        "f9b9ead5d4f7bee34ec8a6b083065b624a7f6809"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Feb 19 16:42:16 2013 -0800"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Feb 19 16:42:16 2013 -0800"
      },
      "message": "Use BUILD_PREBUILT to install the shell script\n\nNOTICE files will be picked up automatically.\n\nChange-Id: Ia4938aff013f1c010cbbfceacf5685722c86c39a\n"
    },
    {
      "commit": "d2c0c1021e7da8b2a4d9a6e61d52766381fca23f",
      "tree": "c3d3672fcc0ab1a8e6da6abf39edc00e9c7270ba",
      "parents": [
        "572ec703d5b647cb7de4f30f2db4dc35a5e1a17e"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Jan 29 13:47:04 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Jan 29 14:27:21 2013 -0500"
      },
      "message": "Implement support for method calls in the `content` tool.\n\n  $ content call\n    --uri content://com.example\n    --method methodname\n    [--arg optional_string_arg]\n    [--extra name:s:foo --extra value:i:0]\n\nThe URI is just used to resolve the provider. --extra has\nthe same syntax as --bind.\n\nChange-Id: I98cb89f0174a00e7c29ca0d8c8d809d453de3623\n"
    },
    {
      "commit": "35654b61e8fe7bc85afcb076ddbb590d51c5865f",
      "tree": "0f42a90b4deaa0156d84df5d79b78cd6f2ac8807",
      "parents": [
        "8a8b047f2d28f6b2d728731a7e71eeaf16f89700"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jan 14 17:38:02 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 16 12:11:01 2013 -0800"
      },
      "message": "More work on App Ops service.\n\nImplemented reading and writing state to retain information\nacross boots, API to retrieve state from it, improved location\nmanager interaction to monitor both coarse and fine access\nand only note operations when location data is being delivered\nback to app (not when it is just registering to get the data at\nsome time in the future).\n\nAlso implement tracking of read/write ops on contacts and the\ncall log.  This involved tweaking the content provider protocol\nto pass over the name of the calling package, and some\ninfrastructure in the ContentProvider transport to note incoming\ncalls with the app ops service.  The contacts provider and call\nlog provider turn this on for themselves.\n\nThis also implements some of the mechanics of being able to ignore\nincoming provider calls...  all that is left are some new APIs for\nthe real content provider implementation to be involved with\nproviding the correct behavior for query() (return an empty\ncursor with the right columns) and insert() (need to figure out\nwhat URI to return).\n\nChange-Id: I36ebbcd63dee58264a480f3d3786891ca7cbdb4c\n"
    },
    {
      "commit": "a4256d1d7b17b86a4446448f54ab9b443c3094f7",
      "tree": "53c33ca3a8c43af94d068901645240c5e4a672d8",
      "parents": [
        "d2955cb121924e6031c75c7d60ee9837075d6bae"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Nov 01 13:55:28 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Nov 01 13:55:28 2012 -0700"
      },
      "message": "Fix typo\n\nChange-Id: I8c3797fb2d343ec6f25765fba49ac097e816d1cf\n"
    },
    {
      "commit": "6d51571835737c7502a2e111ee9dc2527ebad984",
      "tree": "8298f3a36bdfbdb95a4fdd52681f82e7f396d31b",
      "parents": [
        "08681adda06f4699f85838861170fbb062c9fdfe"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 20 16:06:08 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Sep 21 19:49:43 2012 -0700"
      },
      "message": "Allow acquiring ContentProviders across users.\n\nOtherwise services like SystemUI will always open content://-style\nUris as USER_OWNER.  Surfaces through createPackageContextAsUser()\nwhich points all ContentResolver operations towards a given user.\n\nStart using in RemoteViews, so that Notifications correctly resolve\nimage Uris to the sending user.  Also add user support for \"content\"\nshell tool.\n\nBug: 7202982\nChange-Id: I8cb7fb8a812e825bb0b5833799dba87055ff8699\n"
    },
    {
      "commit": "8486bc11baa717390796f2ebd55c7b2ae9294bb7",
      "tree": "16e33a640cc642da10598e412c4834e40d9dda7c",
      "parents": [
        "6f9d697d8316f25be0e2a472604fd7e17d214c64"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 29 14:02:06 2012 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 29 14:06:36 2012 -0800"
      },
      "message": "Update to allow passing empty string in a binding.\n\nChange-Id: Ia16bd5dc78da1f5c8e52070d9c0e8431744224e8\n"
    },
    {
      "commit": "3f55172f7b3957a37b094c2afcbaa673a8b488fa",
      "tree": "3982d27341e9f35513f7ba48abbf685843bfae1b",
      "parents": [
        "b6ad5b14cbb09f8a10c3155895337c773e7a850b"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 22 12:49:35 2012 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 22 12:49:40 2012 -0800"
      },
      "message": "Fixing the content build file to include the command on user builds.\n\nChange-Id: Ic4a1627eff869702d04c81dcb9a877c74ed65f2a\n"
    },
    {
      "commit": "09ff963b085b3934d52112e2b74688125304e3f9",
      "tree": "c7ff8b2141c9272398c686f1a20be3b513820f8e",
      "parents": [
        "25872aa3ef189ae5506a923398af11ce5eb1a9b9"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Feb 16 14:10:36 2012 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Feb 16 14:10:36 2012 -0800"
      },
      "message": "Fixing the build.\n\nChange-Id: I9ba599adea16b68c3c3af166a2845979624aef80\n"
    },
    {
      "commit": "25872aa3ef189ae5506a923398af11ce5eb1a9b9",
      "tree": "ece1cffcc342e5e7133ca42d33ce97bbf403f779",
      "parents": [
        "91ec0b722f659bb5e4bcc64339f2fbbe30a31287"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 03 19:19:09 2012 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 15 14:55:47 2012 -0800"
      },
      "message": "Adding shell commands for modifying content.\n\n1. Added methods to the ActivityManagerService remote interface\n   that allow accessing content providers outside of an application.\n   These methods are guarded by an internal signature protected\n   permission which is given to the shell user. This enables a\n   shell program to access content providers.\n\n2. Implemented a shell command that takes as input as standart\n   fagls with values and manipulates content via the content provider\n   mechanism.\n\nChange-Id: I2943f8b59fbab33eb623458fa01ea61a077b9845\n"
    }
  ]
}
