)]}'
{
  "log": [
    {
      "commit": "63d0a067997cecf9c6e97a17852f9b657bbba48e",
      "tree": "f0adf8683e433a706074a5390292fce6df56928e",
      "parents": [
        "02a4cec107f1f07409fd03106b1cde56043894fa"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Mar 01 16:12:55 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Mar 01 16:36:52 2013 -0800"
      },
      "message": "Improve performance of storage measurement.\n\nWhen calculating directory sizes of data living on emulated external\nstorage, translate the path to use the internal backing data, which\navoids going through the emulation layer.  It carefully retreats to\nthe original path when it runs into trouble.\n\nTesting with a hierarchy of 10 directories deep and 2 directories\nand 10 files wide at each level, this change improves performance\nfrom 5900ms before to 250ms after; over 20 times faster (!).\n\nBug: 8172425\nChange-Id: Ia7365416f091e102bf7345a49f7d7209a22580a9\n"
    },
    {
      "commit": "40e9f2922cae76ffcbc521481e5be8e80e8744ef",
      "tree": "8eb1822dd2832b729d4b262b616ecc050d9cf266",
      "parents": [
        "ba4ac51823c59152e2167365b81ac56857b6b4d0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 27 19:12:23 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 27 19:12:23 2012 -0800"
      },
      "message": "Quiet down a lot of logging.\n\nAlso fix a little problem where the USER_STARTED broadcasts\nwere not being sent as ordered broadcasts(!).\n\nChange-Id: I3aa3e0a9b3900967cdd2d115ee103371b0a50c41\n"
    },
    {
      "commit": "cea3743499f4bb8e5f28a2e57686d7af313169c5",
      "tree": "f762b85645c8e05ab1ad5f322e9f45daa7cffc26",
      "parents": [
        "a3e90798b7ad3ed62e5b31842c699b2f98bd457b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 18 14:57:33 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 18 17:21:59 2012 -0700"
      },
      "message": "Try to free cache before giving up on install\n\nTry to get installd to free up cache before giving up when there is too\nlittle space free.\n\nBug: 7232123\nChange-Id: Ie3c8ca8dfc190abbb9a29a7baee31f32e9de7d69\n"
    },
    {
      "commit": "625239a05401bbf18b04d9874cea3f82da7c29a1",
      "tree": "b7d6cdc6c51342262763ad251870350759800ed3",
      "parents": [
        "e00d33cf05a111c9be605d3d59db911cd983fcb9"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Sep 26 22:03:49 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 27 16:22:53 2012 -0700"
      },
      "message": "Migrate more Secure settings to Global.\n\nMigrate networking, storage, battery, DropBox, and PackageManager\nrelated Secure settings to Global table.\n\nBug: 7232014, 7231331, 7231198\nChange-Id: I772c2a9586a2f708c9db95622477f235064b8f4d\n"
    },
    {
      "commit": "752cd922f7091dfd5401faf70dc248934a9dbb6d",
      "tree": "687e7c87a3fa71ac84c3fc5db8327d452a7cddc3",
      "parents": [
        "5a370882f87321629f98f6149ac946a57e25dfa8"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Sep 23 16:25:12 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Sep 23 16:44:34 2012 -0700"
      },
      "message": "Always bind to DefaultContainerService as OWNER.\n\nWhen PackageManagerService deals with external storage, always bind\nto DefaultContainerService as USER_OWNER.  This avoids binding to a\nstopped user, which would fail.\n\nBug: 7203111\nChange-Id: I8e303c7558e8b5cbe4fea0acc9a472b598df0caa\n"
    },
    {
      "commit": "7767eac3232ba2fb9828766813cdb481d6a97584",
      "tree": "41cc717fb9f11190e9da3dc12d61faf23a22861d",
      "parents": [
        "1552586283f329253edc4786a6cf40c5bb69ea36"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 23 18:25:40 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 24 13:53:13 2012 -0700"
      },
      "message": "Keep track of whether an app is installed for each user.\n\nThis add a new per-user state for an app, indicating whether\nit is installed for that user.\n\nAll system apps are always installed for all users (we still\nuse disable to \"uninstall\" them).\n\nNow when you call into the package manager to install an app,\nit will only install the app for that user unless you supply\na flag saying to install for all users.  Only being installed\nfor the user is just the normal install state, but all other\nusers have marked in their state for that app that it is not\ninstalled.\n\nWhen you call the package manager APIs for information about\napps, uninstalled apps are treated as really being not visible\n(somewhat more-so than disabled apps), unless you use the\nGET_UNINSTALLED_PACKAGES flag.\n\nIf another user calls to install an app that is already installed,\njust not for them, then the normal install process takes place\nbut in addition that user\u0027s installed state is toggled on.\n\nThe package manager will not send PACKAGE_ADDED, PACKAGE_REMOVED,\nPACKAGE_REPLACED etc broadcasts to users who don\u0027t have a package\ninstalled or not being involved in a change in the install state.\nThere are a few things that are not quite right with this -- for\nexample if you go through a full install (with a new apk) of an\napp for one user who doesn\u0027t have it already installed, you will\nstill get the PACKAGED_REPLACED messages even though this is\ntechnically the first install for your user.  I\u0027m not sure how\nmuch of an issue this is.\n\nWhen you call the existing API to uninstall an app, this toggles\nthe installed state of the app for that user to be off.  Only if\nthat is the last user user that has the app uinstalled will it\nactually be removed from the device.  Again there is a new flag\nyou can pass in to force the app to be uninstalled for all users.\n\nAlso fixed issues with cleaning external storage of apps, which\nwas not dealing with multiple users.  We now keep track of cleaning\neach user for each package.\n\nChange-Id: I00e66452b149defc08c5e0183fa673f532465ed5\n"
    },
    {
      "commit": "183ce028f10442dd6ada59de8fa531d690134663",
      "tree": "bb826af501467e58f564c7bf0675fa4868aba77d",
      "parents": [
        "074b54fbc0b6254c0ba308e0cf2e86c1cc929348"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 29 15:00:21 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 29 15:00:21 2012 -0700"
      },
      "message": "Fix issue #6761130: Clearing app data in settings does not clear app\u0027s USB storage\n\nThe package manager calls to clear data / clear cache were not also\nhaving default container service clear the data on external storage.  Now\nthey do.\n\nChange-Id: Ib5e5eb6adf2cac5a4cc094cc1a02ac8cfb6a2edf\n"
    },
    {
      "commit": "a69b7eb1fc6ab6f47411493a17463fe7a43b8b3f",
      "tree": "d62579288a0c7b6575999070a86c2308023fd884",
      "parents": [
        "728e43948c9b4d18a900fa50acad8d2734947b21"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon May 14 14:47:06 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon May 14 15:02:19 2012 -0700"
      },
      "message": "Change thread priority for disk measurement to bg\n\nChange the thread priority for all disk measurement and statfs calls to\nbackground priority.\n\nAlso move the measurement fully into the measurement task since it makes\nmore sense.\n\nBug: 6332097\nChange-Id: Iafc2151313ad9b14117daf67e933dccd32f68d54\n"
    },
    {
      "commit": "103d53005e7a3c2735f4ac76fa9b795a7e7e39d7",
      "tree": "da5b4a423467f932654ca2db1494bd9e34210f58",
      "parents": [
        "a25079e6bafcfd77135a852f0e838738d80606ef"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 10 10:21:06 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 10 11:48:21 2012 -0700"
      },
      "message": "Use long instead of int for file offsets\n\nUse long instead of int so we don\u0027t run into a 2GB file limit.\n\nFix possible overflows in offset and length.\n\nChange-Id: Idb3a34f5600f9c2372b9c89256f21757049fa43b\n"
    },
    {
      "commit": "ceb1b0bfaea56251796b08c07b963de7403d84eb",
      "tree": "fea73b05f6b4d47da174eca362693958cf5d785a",
      "parents": [
        "476b03b0c0d5cae4d1b114c6f80858d59ba36cad"
      ],
      "author": {
        "name": "Anonymous Coward",
        "email": "nobody@android.com",
        "time": "Tue Apr 24 10:35:16 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon May 07 16:34:49 2012 -0700"
      },
      "message": "Add encryption parameters to package installation\n\nChange-Id: Ic9f8ab9f8110f08bb3c00725cfce5b8ee7b766f3\n"
    },
    {
      "commit": "bf023589b3d9994f43823c7cb0450d278b084f9b",
      "tree": "6ed973d10a584b68efd2efd6654953ab158538c4",
      "parents": [
        "e849230f444653e692024b4321044cb9f6188919"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed May 02 16:56:15 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed May 02 17:09:57 2012 -0700"
      },
      "message": "Fix some problems with ASECs\n\nOn devices that had external storage, permissions weren\u0027t set correctly\non non-forward-locked applications. Also, moving forward locked\napplications didn\u0027t work since DefaultContainerService wasn\u0027t able to\nread it.\n\nFixed some faulty unit tests as well.\n\nBug: 6427212\nChange-Id: I5c1f0bf5278549069c78939f0708c4c43a7d4006\n"
    },
    {
      "commit": "6dceb88f1c7c42c6ab43834af2c993d599895d82",
      "tree": "cbdc33b4dd84f7ad388a4f331c0e7a3056e142e5",
      "parents": [
        "7725180c646d1976a2a2097735862a75ec47c544"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Apr 12 14:23:49 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Apr 25 14:17:02 2012 -0700"
      },
      "message": "Allow forward locked apps to be in ASECs\n\nWe couldn\u0027t put forward-locked apps in ASEC containers before since we\ndidn\u0027t have any permissioned filesystems. This adds the ability for\nforward-locked applications to be in ASEC containers.\n\nThis means that forward locked applications will be able to be on the SD\ncard now.\n\nThis change also removes the old type of forward-locking that placed\nparts of apps in /data/app-private.  Now all forward-locked applications\nwill be in ASEC containers.\n\nChange-Id: I17ae0b0d65a4a965ef33c0ac2c47e990e55707ad\n"
    },
    {
      "commit": "9cbe986a446dffea2e9f59b86800f834b02d766a",
      "tree": "63725587ac50668011a054f82c69f6ddf25b9248",
      "parents": [
        "816e4f758302aaf3b115b5914d48732ed78af946"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Apr 22 18:56:43 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Apr 22 18:56:43 2012 -0700"
      },
      "message": "Expose statfs() through IMediaContainerService.\n\nBug: 6346248\nChange-Id: I03ae02578f546fc9f19652cbdece56e2e0ab6a1c\n"
    },
    {
      "commit": "05ca4c90644921df9193d92b2abdc81ef77e4a62",
      "tree": "94c9e61b0c3d364f68a194c0a65199451410fc35",
      "parents": [
        "15bbaeb0753f5336a5e8ee07e6f796657ecefb73"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 15 10:36:25 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Sep 23 16:03:03 2011 -0700"
      },
      "message": "Allow non-required package verifiers\n\n* Verifiers can be specified in the AndroidManifest.xml\n\n* Those verifiers can respond to the new Intent action\n\n* PackageManager API for those verifiers: verifyPendingInstall\n\nChange-Id: I4892bce2e6984871e6e93c60a1ca0dae145f5df5\n"
    },
    {
      "commit": "61942c579dd8d30f77a9a501b31bd7a485b0d4bc",
      "tree": "0ae70b82b2f15a3c7789c9318640c17fcc8b766a",
      "parents": [
        "186c1683ce6a6c7e845b06b8c0706ef7950c6608"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 15 12:46:04 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 15 12:46:35 2011 -0700"
      },
      "message": "Fix external size calculations\n\nUnfortunately fixed internal size calculations for HC, but never the\nexternal size calculations.\n\nBug: 5113898\nChange-Id: Idfe8af0ba74a20aa767eb9abac431ee1c74dcf8e\n"
    },
    {
      "commit": "f5121a9b802c6ddd3661ed5cae602380dbe67090",
      "tree": "a1a10eddf61e5e159f0d71a17e2cc47a09856752",
      "parents": [
        "260e9105d7fc7b11c26a6843658df89b98d65971"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 10 16:23:32 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 10 17:00:30 2011 -0700"
      },
      "message": "Better errors from copyResource\n\nCopy resource would fail without a good error code when the file\ncouldn\u0027t be found during copy.\n\nAlso destroy the target container ID during move operations since it\nmight exist. If the copy failed due to it existing, it would get\ndestroyed anyway. This way the user has a chance to have a good outcome\nthe first time.\n\nBug: 3375299\nBug: 5113898\nChange-Id: I00559833f0801bc50e7cc031b462495e37a6b4ab\n"
    },
    {
      "commit": "1ebd74acf9977daa42133507e970dab88e08f0ef",
      "tree": "c95bde1090f19e78201f15b54866ada88ab7cbf2",
      "parents": [
        "62c7b37590b1a692384a55949d3b9eba221a3652"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 03 15:09:44 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 03 16:03:42 2011 -0700"
      },
      "message": "Better error codes for missing files\n\nMake sure that files that don\u0027t exist aren\u0027t returning bogus \u0027out of\nspace\u0027 error codes.\n\nAdd some Javadoc so I can remember what each thing does in an IDE.\n\nAdd copyright header to NativeLibraryHelper\n\nBug: 3375299\nChange-Id: Iac46019160921daca65b21d38897e5165063316e\n"
    },
    {
      "commit": "66269ea6f68f2f25888ce1080c94ac782742fafc",
      "tree": "0ecbefcdbecf98cbacd428a422e6a2a846ac726e",
      "parents": [
        "e432a0005180ba9ac2c1d7822c4761b475fddc51"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jul 12 14:14:01 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jul 26 10:14:58 2011 -0700"
      },
      "message": "Move extract native libraries to JNI code\n\nThe built-in ZipFile class was quite a long time to find an unpack\nlibraries. Move everything to using the libutils ZipFileRO class that\ngoes quite a bit faster. Initial measurements are 6 times faster than\nthe Java code.\n\nAlso, read files off the disk and compare their CRC against the APK\u0027s\nCRC to see if we need to write the new file to disk. This also cuts down\nthe bootup time by up to a second per APK that has native files.\n\nChange-Id: Ic464a7969a17368fb6a6b81d026888c4136c7603\n"
    },
    {
      "commit": "62e1b4e9d41a01db423b5e4684ecf529ed46106d",
      "tree": "661d7d6a17fade942bcfb6ff2e3b03292c3e698e",
      "parents": [
        "6f3a75e13b86a3f40fe34e3ebd17b118791a73a4"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Mar 14 17:13:39 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Mar 14 17:18:24 2011 -0700"
      },
      "message": "Revise free space checks for package installs\n\nChange-Id: Ie72bbab77aa89a50ec096edc1f471eab74829e67\n"
    },
    {
      "commit": "300c13a48132f03d48462b9cd3ec41331a71a411",
      "tree": "b784943ca9d8e6988d9e0db62da448b8e9d10441",
      "parents": [
        "26c1ab2e58f47ac94e638f69b9b626cc6b1925b6"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jan 18 13:04:40 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jan 18 13:55:42 2011 -0800"
      },
      "message": "Erase OBB files when removing packages\n\nOBB files on USB storage or SD card should be removed when an\napplication is removed.\n\nBug: 3356804\nChange-Id: Ifbbf043368b125fcd47fd74e5cd2e5167a8deb00\n"
    },
    {
      "commit": "366949c2d934435ff9ef8082408ca36ff14a2241",
      "tree": "5821f9a8976fa55430d071850242604a51259ae9",
      "parents": [
        "3c372789ea0b7836c6a9fe4852fac0de3f29fbbf"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Jan 14 17:18:14 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sun Jan 16 16:21:15 2011 -0800"
      },
      "message": "Put externalSize measurements in PackageStats\n\nWhen measuring a package\u0027s usage, put the external size in the\nPackageStats as well. This will allow programs using a lot of space on\nthe external card to be held accountable.\n\nBug: 3308791\nChange-Id: If2df07bdbf6ffb31577074fad8f4a87ca4e89086\n"
    },
    {
      "commit": "aa183e2c9a279cb6aef7dc77855facfae795b6f8",
      "tree": "9f0a53f90dcfb2e720a5e62e38e357cc98fdabd9",
      "parents": [
        "d8b3f2e8eee5f24de6653a918613674e9495f751"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Dec 02 18:00:38 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sat Dec 04 08:29:23 2010 -0800"
      },
      "message": "Add measurement API to DefaultContainerService\n\nSystem applications that don\u0027t have \"media_rw\" access need some way to\nmeasure the size of directories on the SD card and other internal media.\nAdd this API to DefaultContainerService so they can simply bind to the\nservice and make an RPC.\n\nBug: 3203974\nChange-Id: I4e1bcd7a1b702b156c011ecc04f6915022cb258a\n"
    },
    {
      "commit": "e1ff214e32ed5c546a7603b07b054908c4d93312",
      "tree": "d61485a78a33eaedf4494cbdf21e48225d49b4e7",
      "parents": [
        "84e8827a477cdf3d8c2b67e370395b22ec1963ad"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 12 11:20:01 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 12 11:30:56 2010 -0700"
      },
      "message": "Add API to check for emulated external storage\n\nWhen the storage is emulated, we don\u0027t want to install ASEC containers\nto it. This adds the API to check when the external storage is emulated\nand uses it to check whether or not to install packages to the external\nstorage in an ASEC container.\n\nBug: 3024387\nChange-Id: Ia0318aca9e4938a4897deaada5603a4c7c1d0f48\n"
    },
    {
      "commit": "735de3b38abbd6564082a819377673ee593744a6",
      "tree": "ec309587616c5abbc49df83d7d21b6a3b3e9dfbd",
      "parents": [
        "27358a69b33eaa268ee75ef778ec824c8085adcc"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 30 14:11:39 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 30 17:25:05 2010 -0700"
      },
      "message": "Hash keys with MD5; track IBinders not IInterface\n\nUsing a plaintext password doesn\u0027t work unless it\u0027s a certain length, so\njust hash the plaintext password with MD5 to make it the right length\nfor the twofish encryption.\n\nTracking the IInterface doesn\u0027t make much sense since it\u0027s different\neach time, so track the IBinder instead. That way we can unlinkToDeath\nthe binder when the last thing it\u0027s holding onto goes away.\n\nChange-Id: Id828d25b4d74f27e9d8b4bfb3909c964469cc473\n"
    },
    {
      "commit": "05105f7abe02b2dff91d6260b3628c8b97816bab",
      "tree": "f42676d818548d76b2c55045a1bcc4866d6feec1",
      "parents": [
        "ea2cf2f936b03f1720bc43863e41c89ea2a7903a"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 22 17:29:43 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 28 17:23:26 2010 -0700"
      },
      "message": "Update OBB API to include callbacks\n\nAdd a callback for users of the StorageManager API to be able to receive\nnotifications when the requested operation completes for mountObb and\nunmountObb.\n\nAdd NDK API to get to ObbInfo like the Java API has.\n\nAlso update the docs for the API and remove the \"STOPSHIP\" comments.\n\nChange-Id: I23a4409c7f8b74d3169614beba920b4d667990a4\n"
    },
    {
      "commit": "85387d7ba36e56b291cbde87acb5a5b2200fe01c",
      "tree": "adea29b181a25c2ffd8ecaebded62fb4d2dc1a93",
      "parents": [
        "4f8c2f26bfd9de8c8a31369dbedd415c7d6d9699"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 26 10:13:11 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 27 16:40:06 2010 -0700"
      },
      "message": "Allow native shared libraries in ASEC containers\n\nThis change moves the native library handling earlier in the package\ninstallation process so that it may be inserted into ASEC containers\nbefore they are finalized in the DefaultContainerService.\n\nNote that native libraries on SD card requires that vold mount ASEC\ncontainers without the \"noexec\" flag on the mount point.\n\nChange-Id: Ib34b1886bf6f94b99bb7b3781db6e9b5a58807ba\n"
    },
    {
      "commit": "a02b8b05dd1e8b8cf169e1f89542ef835b11fc13",
      "tree": "aa1b5fb6b900c064d9914f51c9c3817a2c46f9df",
      "parents": [
        "9902196f9885d369e37cf44084e3f04513511ab0"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 05 16:14:17 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 11 11:20:53 2010 -0700"
      },
      "message": "Move OBB file reading to DefaultContainerService\n\nThe system_server shouldn\u0027t touch files on the SD card. This change\nmoves the things that touch the SD card out to the\nDefaultContainerService so that it will get killed if the SD card goes\naway instead of the system_server.\n\nChange-Id: I0aefa085be4b194768527195532ee6dddc801cfc\n"
    },
    {
      "commit": "930d3af75f9e9663222f4c4a1d75b326cf811e35",
      "tree": "30950867a1eec93131934190d0faae893cacd4e3",
      "parents": [
        "7c600369c9695de73ca37db552eb81b8b89d5e76"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Jul 30 16:52:29 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 02 07:52:56 2010 -0700"
      },
      "message": "Do not deference before null check\n\nThe return of parsePackageLite wasn\u0027t checked until after it was\ndeferenced. Move the deference below the null check and remove redundant\nset.\n\nBug: 2852726\nChange-Id: I3eaaea5050948145eed44b64507dc846993d98eb\n"
    },
    {
      "commit": "d345bb6e5b42ff644ce224fe57e4d7b4e546a48d",
      "tree": "e6af91677bacbcc1b040af1863a9506760046117",
      "parents": [
        "05fa2144e458dc8f024235ea01b8682055d828bf"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Thu Apr 22 13:22:17 2010 -0700"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Thu Apr 22 13:43:20 2010 -0700"
      },
      "message": "Fix error code when media is filled up.\n\nChange-Id: Id8dae2e7c967e3f103aecd2f31abb7e292af8f1d\n"
    },
    {
      "commit": "315a5fb91dbafe6073435a13d937cee9d26877f6",
      "tree": "3e5bdebfa89ae4e997a726e5e600751823cca580",
      "parents": [
        "40b6996a8fb7da131e8b91453b08e292723662be"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Tue Apr 13 14:32:16 2010 -0700"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Apr 14 18:24:06 2010 -0700"
      },
      "message": "Dont fall back to installing on sdcard when internal storage is filled up\nwhen the install location is set to internal only. Similary if install\nlocation is set to external only(via adb), dont fall back to installing on\ninternal storage if sdcard is filled up.\nIf nothing is specified ie install location is set to let system decide,\nwe just check on internal storage.\nFix tests\n\nChange-Id: I7400ccc131782d9c45284bd9ebd0dee43a3b412b\n"
    },
    {
      "commit": "40e472521a544f26cb6956995788f7c36fff1404",
      "tree": "b579a480e80d8ac15128c31c142b22d0938a44f8",
      "parents": [
        "4b18ced6b5409bb9dd4013c06b9562b76a062939"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Apr 07 16:15:50 2010 -0700"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Apr 07 20:43:54 2010 -0700"
      },
      "message": "Fix 2579461\nMove install location values to secure settings.\nDiable attribute for UI. Set default value to auto.\nAdd command line interface to set install location via pm.\n\nChange-Id: I80e97b3d24845adad7102f40dcbe238f00efa406\n"
    },
    {
      "commit": "14b6abda1309631d49d4bebbb0317a7e1dfc0a50",
      "tree": "bee361e635743a09bb7253fef333d6fb94df6322",
      "parents": [
        "d246ca811575eee9122070648e93b7484f6edd81"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Mar 17 08:37:04 2010 -0700"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Mar 17 18:43:31 2010 -0700"
      },
      "message": "Add new install flag to install on internal flash only\nChange default install location policy for new flag.\nNew error code for media unavailable.\n\nChange-Id: I5a5d0828b067692b2b94a15a2bcc7534f796c1a2\n"
    },
    {
      "commit": "8a9ab24a5c9b595ac0268fcade4b5bbfe7c45c2d",
      "tree": "f445dbf1504f02783b550a80a01ee06d45fbcb4a",
      "parents": [
        "50fdbef2fbcd390035517090bc54220c265f5c75"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Thu Mar 11 16:49:16 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Tue Mar 16 16:36:26 2010 -0700"
      },
      "message": "Do storage checks before initiating a move.\nAdd new remote method to check for insufficient error conditions.\nSome fixes in MountService when updating media status on PackageManagerService\nFix size calculation condition in installd.\n\nAdd new error code if media is unavailable.\nNew tests for testing error codes.\nSome additional debugging statements in MountService.\n\nChange-Id: Ibfe90d5ed6c71d57f9c1c67806f38b5ae9ecdfbf\n"
    },
    {
      "commit": "15a4d2ffd04dc6c70f2cd17dae12ac6bc14c69ab",
      "tree": "2dbbf0c31082373354fb17308de3681e22c66169",
      "parents": [
        "8abb26ee6c77e01a23d26c305a65b25a33710024"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 11 18:20:12 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 11 18:22:10 2010 -0800"
      },
      "message": "Add correct copyright headers to multiple files\n\nFormat for the list of changes shows the origin commit reference followed\nby the file name.\n\n33931-p9 awt/org/apache/harmony/awt/gl/font/AndroidGlyphVector.java\n33931-p9 awt/org/apache/harmony/awt/gl/image/PngDecoderJava.java\n133776-p9 core/java/android/app/IntentService.java\n127013-p9 core/java/android/appwidget/AppWidgetHost.java\n27863-p9 core/java/android/bluetooth/BluetoothAudioGateway.java\n60765-p9 core/java/android/content/SyncResult.java\n43920-p9 core/java/android/content/pm/ActivityInfo.java\n43920-p9 core/java/android/content/pm/ApplicationInfo.java\n43920-p9 core/java/android/content/pm/InstrumentationInfo.java\n43920-p9 core/java/android/content/pm/PackageInfo.java\n44103-p9 core/java/android/content/pm/PackageItemInfo.java\n68960-p9 core/java/android/content/pm/PackageStats.java\n43920-p9 core/java/android/content/pm/ResolveInfo.java\n43920-p9 core/java/android/content/pm/ServiceInfo.java\n60641-p9 core/java/android/content/res/Configuration.java\n60734-p9 core/java/android/content/res/TypedArray.java\n137672-p9 core/java/android/inputmethodservice/ExtractButton.java\n123112-p9 core/java/android/inputmethodservice/ExtractEditText.java\n119291-p9 core/java/android/inputmethodservice/IInputMethodSessionWrapper.java\n112946-p9 core/java/android/inputmethodservice/IInputMethodWrapper.java\n115078-p9 core/java/android/os/BatteryStats.java\n124790-p9 core/java/android/text/style/UpdateAppearance.java\n45083-p9 core/java/android/view/RawInputEvent.java\n101491-p9 core/java/android/view/inputmethod/EditorInfo.java\n114701-p9 core/java/android/view/inputmethod/ExtractedText.java\n123112-p9 core/java/android/view/inputmethod/ExtractedTextRequest.java\n119291-p9 core/java/com/android/internal/os/HandlerCaller.java\n129279-p9 core/java/com/android/internal/os/PkgUsageStats.java\n114701-p9 core/java/com/android/internal/view/IInputConnectionWrapper.java\n114701-p9 core/java/com/android/internal/view/InputConnectionWrapper.java\n84364-p9 opengl/java/android/opengl/EGLLogWrapper.java\n11355-p9 opengl/tools/glgen/src/CFunc.java\n11355-p9 opengl/tools/glgen/src/CType.java\n11355-p9 opengl/tools/glgen/src/CodeEmitter.java\n11355-p9 opengl/tools/glgen/src/GenerateGL.java\n11355-p9 opengl/tools/glgen/src/JFunc.java\n11355-p9 opengl/tools/glgen/src/JType.java\n11355-p9 opengl/tools/glgen/src/JniCodeEmitter.java\n11355-p9 opengl/tools/glgen/src/ParameterChecker.java\n57236-p9 services/java/com/android/server/status/AnimatedImageView.java\n66754-p9 services/java/com/android/server/status/CloseDragHandle.java\n57188-p9 services/java/com/android/server/status/DateView.java\n46928-p9 services/java/com/android/server/status/ExpandedView.java\n70590-p9 services/java/com/android/server/status/FixedSizeDrawable.java\n45968-p9 services/java/com/android/server/status/IconData.java\n57470-p9 services/java/com/android/server/status/IconMerger.java\n82719-p9 services/java/com/android/server/status/LatestItemView.java\n45968-p9 services/java/com/android/server/status/NotificationData.java\n66754-p9 services/java/com/android/server/status/NotificationLinearLayout.java\n57458-p9 services/java/com/android/server/status/NotificationViewList.java\n45968-p9 services/java/com/android/server/status/StatusBarException.java\n45968-p9 services/java/com/android/server/status/StatusBarIcon.java\n46130-p9 services/java/com/android/server/status/StatusBarNotification.java\n45968-p9 services/java/com/android/server/status/StatusBarView.java\n46199-p9 services/java/com/android/server/status/Ticker.java\n62286-p9 services/java/com/android/server/status/TickerView.java\n57188-p9 services/java/com/android/server/status/TrackingView.java\n86041-p9 telephony/java/android/telephony/PhoneStateListener.java\n87020-p9 telephony/java/com/android/internal/telephony/TelephonyIntents.java\n136269-p9 telephony/java/com/android/internal/telephony/gsm/SpnOverride.java\n34409-p9 tests/FrameworkTest/src/com/android/frameworktest/FrameworkTestApplication.java\n55717-p9 tests/FrameworkTest/src/com/android/frameworktest/performance/InvalidateCycle.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityLandscape.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityPortrait.java\n129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollablePanScan.java\n129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollableResize.java\n129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollablePanScan.java\n129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollableResize.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityPanScan.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityResize.java\n127341-p9 tests/ImfTest/src/com/android/imftest/samples/ButtonActivity.java\n129347-p9 tests/ImfTest/src/com/android/imftest/samples/DialogActivity.java\n129372-p9 tests/ImfTest/src/com/android/imftest/samples/EditTextActivityDialog.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityNoScrollPanScan.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollPanScan.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollResize.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivityNotSelected.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivitySelected.java\n25959-p9 tests/framework-tests/src/android/test/FrameworkTests.java\n46162-p9 tests/framework-tests/src/com/android/internal/http/multipart/MultipartTest.java\n77101-p9 tools/layoutlib/bridge/tests/com/android/layoutlib/bridge/NinePatchTest.java\n9788976b1465ce982b5ae7c741345edd0ecd9322 core/java/android/accounts/AuthenticatorDescription.java\n53332883543868fb83e111a07306368b7772b340 core/java/android/app/UiModeManager.java\n93e7e22ec91dbc641d10ca6d70423e1357a95bba core/java/android/app/FullBackupAgent.java\n328c0e7986aa6bb7752ec6de3da9c999920bb55f core/java/android/content/CursorEntityIterator.java\n307da1a46b4c9b711bafe8fbaaa6b98e8868c18e core/java/android/content/SyncQueue.java\n307da1a46b4c9b711bafe8fbaaa6b98e8868c18e core/java/android/content/SyncOperation.java\neb034652c2037a47ebfd99779e8383bb8bb528af core/java/android/content/pm/LabeledIntent.java\n49237345d83e62fdb9eb8d50b13ad086636a04fa core/java/android/content/pm/FeatureInfo.java\na2b6c3775ed6b8924232d6a01bae4a19740a15f8 core/java/android/content/pm/PackageInfoLite.java\n3ecd5f437580e49d80beecd29489d5fb1f7a7db0 core/java/android/content/pm/RegisteredServicesCacheListener.java\n5ebbb4a6b3e16f711735ae0615b9a9ea64faad38 core/java/android/content/pm/XmlSerializerAndParser.java\nc4516a7b62de525e3d6d5e76851bdfaf12c11f05 core/java/android/database/sqlite/SQLiteTransactionListener.java\n9bbc21a773cbdfbef2876a75c32bda5839647751 core/java/com/android/internal/backup/LocalTransport.java\n21f1bd17b2dfe361acbb28453b3f3b1a110932fa core/java/com/android/internal/content/PackageMonitor.java\n4c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3 core/java/com/android/internal/view/BaseSurfaceHolder.java\n4c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3 core/java/com/android/internal/view/BaseIWindow.java\ne540833fdff4d58e37c9ba859388e24e2945ed45 core/java/com/android/internal/os/SamplingProfilerIntegration.java\n192ab903887bbb8e7c7b6da5c581573850e30f46 core/tests/coretests/src/android/widget/expandablelistview/PositionTesterContextMenuListener.java\n1619367ab823150fa8856d419abe02ceb75886f1 media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java\n27f8002e591b5c579f75b2580183b5d1c4219cd4 opengl/tools/glgen/stubs/gles11/glGetString.java\n560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.java\n560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.java\n560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glShaderSource.java\n1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/GenerateGLES.java\n1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/Jsr239CodeEmitter.java\n1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/GLESCodeEmitter.java\n69e21f5f6e0d04539cd92848ea009dd615d88c2c opengl/tests/gldual/src/com/android/gldual/TriangleRenderer.java\nc028be4f3b8c7476b46859f66c3f33d528adf181 packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java\n7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerMeasurement.java\n7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestActivity.java\n7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestRunner.java\ndf8a3f31d871db25e952972c2eb346a71186e9e3 tests/BrowserTestPlugin/src/com/android/testplugin/TestPlugin.java\ncfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/ActivityManagerPermissionTests.java\ncfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/ServiceManagerPermissionTests.java\ncfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java\n\nCopyright header moved to top in following file:\n\ncore/tests/coretests/src/android/widget/ListViewTest.java\n\nChange-Id: I3c3198be5a0ba36e18679ed834170432bf0b8418\n"
    },
    {
      "commit": "089262dc022d87e31eefc536025be6c015c7ebde",
      "tree": "2c4706dc952c2c3a4407427579a01057564fab52",
      "parents": [
        "e182a92ae408f27f46d15de01c8a263cfe6f9246"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Mar 10 14:19:21 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Mar 10 16:08:51 2010 -0800"
      },
      "message": "Dont include code size for apps on sdcard.\nUse constants defined in PackageHelper for user preferences\nto install auto, internal, external.\nSet default install location to external.\nUpdate settings db version number\n\nChange-Id: Ib5110c9377990e20a48cee923e55898dfddfd1e6\n"
    },
    {
      "commit": "a2b6c3775ed6b8924232d6a01bae4a19740a15f8",
      "tree": "f78953add86351bd04f2788c712b1285497e2016",
      "parents": [
        "a9fb0a2497e563c2066e10a816ff1f7baaf8aa9b"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Mar 05 17:40:11 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Tue Mar 09 09:24:35 2010 -0800"
      },
      "message": "Add conditions to check for updated system applications. Restrict them\nto internal flash only even before we copy.\n\nReturn error codes when install flag options mismatch.\nSome conditions for existings apps\n - install flags override existing location\n - explicity manifest option install location overrides previous location\n - if upgraded package\u0027s install location is unspecified or auto, fall\n   back to recommended install policy which considers user setting as well.\n\nCheck for sdcard status before finding available size on sdcard\nAdd light weight parsing for manifest attributes including package name and\ninstall location only\n\nChange-Id: I5143dda87c88c595f564b317326c926d0ec3ceb8\n"
    },
    {
      "commit": "3602f76d417b0940a26f28b7ad892abcfe03ef7c",
      "tree": "07859c25cd8a91092da0fa3d023f90795501af3d",
      "parents": [
        "01f4385d86537cf656cfc70ea075177d50619206"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Mar 03 17:29:33 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Mar 03 18:21:07 2010 -0800"
      },
      "message": "Null check for scheme.\nIf scheme is unspecified let package parse continue. We will return\nerrors if parsing fails anyway.\nIf scheme is not null, restrict it to being a file uri.\n"
    },
    {
      "commit": "9b10ef5fe85e9d29721ff0cd15161f960d38a8db",
      "tree": "a6830aad34d62273b02f0e3dbaa054dd7ec7c270",
      "parents": [
        "a034cd3e15b6626be03e60f2d6a0f929dcb950d9"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Mar 03 09:45:24 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Mar 03 14:06:10 2010 -0800"
      },
      "message": "Rework the way PackageManager binds to default container service.\n\nClean up stale containers when enabling/disabling packages on sdcard.\nCheck the path of packages which are being enabled.\nMake sure gc\u0027s are done prior to destroying containers when moving applicati\nas well as enabling/disabling packages for sdcard mount status changes.\n\nSome miscellaneous issues\n   Remove hack to avoid renaming containers.\n   Fix test with forward locked apps\n   Remove adding container id to asec list when renaming\n   Some cosmetic changes to DefaultContainerService\n"
    },
    {
      "commit": "cf6eaeaae9e6745dd6e07540812c79821d7043c2",
      "tree": "fe1224c5b492a8ad09d00e167b66a45413fb3d73",
      "parents": [
        "2a399f066d4f3870385002cdcda8082a0eeeb770"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Tue Feb 23 19:37:45 2010 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Feb 24 11:31:36 2010 -0800"
      },
      "message": "Some framework fixes for apps on sd\nchange hard coded path in installd\nfix tests\nWork around for renaming containers.\nDo forced unmount when destroying containers.\nForce a gc in default container service to release handle to parsed package\nand thus avoid getting killed by vold\nSome cosmetic changes to PackageManager api.\nUnit tests for renaming container for MountService\nRemove internal size limit on app to be installed.\n"
    },
    {
      "commit": "8946dd3355fc1dcbad872c0546e356474d4cc5de",
      "tree": "8b614c938152df8ad809fd9bf03c6876c8a7a58e",
      "parents": [
        "eac461cf7c246df737d2b0e7bd30be176a34c36e"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Feb 19 09:19:34 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Feb 19 14:20:54 2010 -0800"
      },
      "message": "Move package from internal to external and vice versa.\n"
    },
    {
      "commit": "679bba339ef6948091180c776d6a284cddd812f5",
      "tree": "03c629b1f8bd427a3917efd3fa9a61c6ee9930e7",
      "parents": [
        "642b7c0f1964389ed0b049df275c7b4daaf35b7a"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Tue Feb 16 11:52:44 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Tue Feb 16 15:11:04 2010 -0800"
      },
      "message": "Move mount service wrapper calls to PackageHelper\n\nFix bug related to forward locked apps.\n"
    },
    {
      "commit": "5b993ce7bc29e43a3215a50ce6ce5d6550d4e5e2",
      "tree": "fc25f9f6adee005c287454a74837f6cbc1a072a0",
      "parents": [
        "70251b1704b9bb81443e7533d365400645dd5eaa"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Feb 12 09:43:29 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Feb 12 18:50:47 2010 -0800"
      },
      "message": "Include install location preference when installing packages.\nChanges include\nAdd new remote call in default container service to determine\ninstall location.\nRename INSTALL_ON_SDCARD\nRemove recommentAppInstall method\nAdd some additional flags used in remote stubs.\nMove check for protected apps prior to copy.\nUnit tests\n\nDefaultContainerService first parses the file uri(if content uri is specified\nit returns a default install internal only value) and returns\na recommended location. Based on which the temporary id is determined\neither a file name or a container id and the file is copied there.\nThis is then later renamed during install.\nTodo\u0027s light weight parsing of package when determining location since we\njust need the install location attribute only when finding out\nrecomended location. This will also enable to move the check for\nupdated system apps(cannot be on sdcard) prior to copying.\n"
    },
    {
      "commit": "e83cefcef07f9ac025642c1ffec76b4c7ab39cf2",
      "tree": "130696ee2a90150129c3ee98544c5814528c90f9",
      "parents": [
        "72e5a8820a996c547eacea534b11b6b8f6eca83b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 04 17:38:14 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 09 14:20:55 2010 -0800"
      },
      "message": "New external storage APIs.\n\nThis implements the spec for external storage organization, and\nproperly reflects how the media scanner organizes the files it finds.\n\nAlso includes package manager support for removing app private\nfiles from external storage when the application is uninstalled.\n\nFor the new APIs and paths, the main place to look is Environment\nand Context.\n"
    },
    {
      "commit": "b104340496e3a531e26c8f428c808eca0e039f50",
      "tree": "11247cb68359d43ca4871c0cb0165c9bec339a6f",
      "parents": [
        "3ee1317173260252d475772fec09d492f8fcfd33"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Feb 05 08:26:50 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 11:03:16 2010 -0800"
      },
      "message": "Framework: Clean up / Refactor Mount APIs\n\n - Move android.storage.* -\u003e android.os.storage.* and refactor users\n - Refactor generic shares back to explicit ums enable/disable/isEnabled\n - Remove media insert/removed event callbacks (not ready for Froyo)\n - Remove \u0027label\u0027 from volume state change callbacks\n - Add public API functions for enabling/disabling USB mass storage (permissions enforced\n   in MountSevice)\n - Remove some stray un-needed import lines\n - Move android.os.IMountService / android.os.IMountServiceListener -\u003e android.os.storage\n - Improve code comments\n\nUpdated:\n  MountService: Add dup state check and move debugging behind a conditional\n  UsbStorageActivity: Fix review comments + a TODO\n  StorageNotification: Add @Override tags\n  StorageManager: Don\u0027t use a static Listener list\n  MountService: Reduce bloat and fix \u003d\u003d where I meant .equals()\n  PackageManagerTests: Update for new API\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "08675a3376819a82aa5ab344bc3e7b1635c30b05",
      "tree": "9a16e6be377fe367639ef9e02c5421e0ce9b9044",
      "parents": [
        "57405b93f194851eb2187a8ed3362be18a483a17"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Thu Jan 28 09:57:30 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Tue Feb 02 18:33:29 2010 -0800"
      },
      "message": "Apps on sdcard: Add new broadcasts\n\nAdd new broadcasts ACTION_MEDIA_RESOURCES_AVAILABLE and\nACTION_MEDIA_RESOURCES_UNAVAILABLE that get broadcast by\nPackageManagerService when sdcard gets mounted/unmounted\nby MountService so that packages on sdcard get recognized by\nvarious system services as being installed/available or\nremoved/unavailable by the system.\nThe broadcasts are sent before the actual package cleanup which includes\nmounting/unmounting the packages and we force a gc right after so\nthat any lingering file references to resources on sdcard get\nreleased.\n"
    },
    {
      "commit": "63d15ee6ae4ff5079c7551ca4131c6d7f23ad91c",
      "tree": "4adae3b65891dc1455a6be9539d60c265e99300b",
      "parents": [
        "be16cb15b39f5140b764854bc78c139bfa9fbe8b"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 29 05:35:53 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 02 11:17:47 2010 -0800"
      },
      "message": "DefaultContainerService: Refactor MountService calls (new api)\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "c028be4f3b8c7476b46859f66c3f33d528adf181",
      "tree": "8a740e6207e958572706a636fcb92425dbf13a6e",
      "parents": [
        "aeb4126736c1b93abe5252e1723c568a13da7c81"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Mon Jan 25 12:19:12 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Jan 27 10:26:43 2010 -0800"
      },
      "message": "AppsOnSd feature - Add default container\n\nAdd new remote interface to do temporary copies. The new\nremote stub handling is done on mHandler thread and doesn\u0027t need locking\nfor now.\nAdd new InstallArgs class and subclasses to isolate cases for installation.\nMove resource deletion for failed installs/upgrades to later on in installation\ncycle.\nFix code path for forward locked apps when using scanPackageLI\n\nTODO\u0027s\nFix installation paths to completely use InstallArgs based design later on.\nGet rid of using flags in various install/uninstall code paths.\nIdeally InstallArgs should be created using these flags and used in the\nrest of the code.\nFunction renames.\nRevisit mount api\u0027s.\n"
    }
  ]
}
