)]}'
{
  "log": [
    {
      "commit": "ebed7d6e35f7f960e6e6add2b8ab7c7a31a511c3",
      "tree": "ae346479a6c069a3a57acecb18a0b0a563325e3f",
      "parents": [
        "cbc38e74f028d9e337eba0f3ed7c435310cc10c2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 16 17:08:42 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 24 12:01:25 2011 -0700"
      },
      "message": "Support wrapping app processes to inject debug instrumentation.\nBug: 4437846\n\nChange-Id: I4552501c693716b14714afb5c5248edaca9547ab\n"
    },
    {
      "commit": "a51b6fd6f8a53f040894ef07cf23695581595e6b",
      "tree": "b2e2b02e6a0568054fa279c54f50b7d2c80a9b18",
      "parents": [
        "3a9e712aca65ac49e7155e98e5d6b815da76f94b",
        "b2d0ee164a1cf7bab31302c5d3cdd62322574271"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 19 15:02:18 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 19 15:02:18 2011 -0700"
      },
      "message": "resolved conflicts for merge of b2d0ee16 to master\n\nChange-Id: I4483a6d0ccecfea4a1e66bb6eba80d13e8b9a3a4\n"
    },
    {
      "commit": "e6cd0c747e76723bc51a23925c239ae10f9d3b5c",
      "tree": "6fd4fa9f3e207f5a0aaf50edf972374196390a49",
      "parents": [
        "0a36cec642fb58e295d0608026890d95d0ae3cc0",
        "2433c443bb5fe96d9a39b59e10e3c03d791e2278"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 19 12:48:14 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 19 12:48:14 2011 -0700"
      },
      "message": "resolved conflicts for merge of 2433c443 to honeycomb-plus-aosp\n\nChange-Id: I3385f57e5761679e6700bcbe3c41deb3ecd43ba1\n"
    },
    {
      "commit": "2433c443bb5fe96d9a39b59e10e3c03d791e2278",
      "tree": "7feb2b64268b9b476e4fa5c91b19cdee3f86c117",
      "parents": [
        "4b999030ad3e9f8d392d72c725134ec3fb6d2290",
        "f2006f3123dcdf598e052051041b49c89710b53e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 19 11:04:01 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 19 11:04:01 2011 -0700"
      },
      "message": "am f2006f31: Merge \"Break apart queries to getInstalled* API\" into gingerbread\n\n* commit \u0027f2006f3123dcdf598e052051041b49c89710b53e\u0027:\n  Break apart queries to getInstalled* API\n"
    },
    {
      "commit": "cb4d1a91fc09fed1281781c4507e1e69afb476e5",
      "tree": "84590335e162c7904108fc7b2afc3110bab0dace",
      "parents": [
        "78ae81efa9d49b2697629f576e9f4beec6ec8b2b"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Tue May 17 21:35:54 2011 -0700"
      },
      "committer": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Tue May 17 21:35:54 2011 -0700"
      },
      "message": "dumpstate: don\u0027t attempt to use vril-dump, it breaks adb bugreport\n\n\nhttp://b/4442803 vril-dump\u0027s usage of adb causes bugreport to hang\n\nlcm-dump.sh re-uses adb which breaks.\n\nChange-Id: I5eeb30f78793c0a6d10bfaf0097d6aa7b811cf66\nSigned-off-by: JP Abgrall \u003cjpa@google.com\u003e\n"
    },
    {
      "commit": "9d31154d0b0ecbc5a36733ac3a8b70dcae18bf9c",
      "tree": "21da3d76fd4b3e8d65228155844ee138f28e3f2c",
      "parents": [
        "14a2935809e73a9d824888dc837f2f017100fd26",
        "b68c768ddb57407bc253230c677056329c9e4bae"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 21:39:47 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 16 21:39:47 2011 -0700"
      },
      "message": "am b68c768d: am 41744836: am 7916ac65: Add new command line option to change global screen size.\n\n* commit \u0027b68c768ddb57407bc253230c677056329c9e4bae\u0027:\n  Add new command line option to change global screen size.\n"
    },
    {
      "commit": "417448369c170a34d76c477aa19c5293e3caa1df",
      "tree": "a19b5658af4abd13b8c132102898ab1b32669bb8",
      "parents": [
        "7b0339a8adca1347fe7ac3ac118c903ff32442a8",
        "7916ac65dc492e4e1431879875c77d7121fbf82e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 21:21:24 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 16 21:21:24 2011 -0700"
      },
      "message": "am 7916ac65: Add new command line option to change global screen size.\n\n* commit \u00277916ac65dc492e4e1431879875c77d7121fbf82e\u0027:\n  Add new command line option to change global screen size.\n"
    },
    {
      "commit": "7916ac65dc492e4e1431879875c77d7121fbf82e",
      "tree": "a673e4cc163ea0e1d27d5a38fd2d37003812e37d",
      "parents": [
        "8f3dbe1c377e64584c3ec10edf664fb278648109"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 20:45:48 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 20:55:41 2011 -0700"
      },
      "message": "Add new command line option to change global screen size.\n\nFor example:\n\nadb shell am display-size 1024x600\n\nChange-Id: I5df462acd3323bdaaaefa3126faea7dd8595b726\n"
    },
    {
      "commit": "14a2935809e73a9d824888dc837f2f017100fd26",
      "tree": "408f6decede257f9c219355bb470906fefac84f1",
      "parents": [
        "4383243d0067d76a07966ff2178ea4d0c20271d3"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon May 16 16:22:06 2011 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon May 16 16:57:32 2011 -0700"
      },
      "message": "bu - add handling for both \u0027backup\u0027 and \u0027restore\u0027 modes\n\nRequires a parallel change in adb to support the new syntax.\n\nChange-Id: Iff30cb247e424b6817af121c018f3c4e40b9f81a\n"
    },
    {
      "commit": "2a20583a5f436d66ab73cd6c0fdc73e59a3cecad",
      "tree": "5fd55da4396a2179afdc4ffc3329db03b1117b95",
      "parents": [
        "4bfc1cc0a9bea7d7529b6c92daeb65660961b7d4",
        "700ab1c75862babba90f54e02bdc877becd4f4fc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 11:06:28 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 16 11:06:28 2011 -0700"
      },
      "message": "am 700ab1c7: Merge \"DO NOT MERGE.  Integrate from master: Improve activity manager debug dumps.\" into honeycomb-mr2\n\n* commit \u0027700ab1c75862babba90f54e02bdc877becd4f4fc\u0027:\n  DO NOT MERGE.  Integrate from master: Improve activity manager debug dumps.\n"
    },
    {
      "commit": "7b06e3516ccd452224d9b160c8cf54c3b9f3597d",
      "tree": "b3ab80f5539f7ba3c035d25c1949a70a0ca183bf",
      "parents": [
        "32ebca5ba2ebd58a41a5b1ede1105db896bef060",
        "7a2a87d6457885c5d3d4dbf335be101aa9c5c3ab"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Sun May 15 14:47:45 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun May 15 14:47:45 2011 -0700"
      },
      "message": "am 7a2a87d6: am a1c29d30: Merge \"Support for Vendor RIL dump of baseband logs\" into honeycomb-LTE\n\n* commit \u00277a2a87d6457885c5d3d4dbf335be101aa9c5c3ab\u0027:\n  Support for Vendor RIL dump of baseband logs\n"
    },
    {
      "commit": "71bbe7a87cc75dba446db807a0f223cba8fa2e6c",
      "tree": "45adc30bc6bf457162e94cfa9213eba4288e9d15",
      "parents": [
        "6e41b32dd08a866cb7158b387646e96c9105831b"
      ],
      "author": {
        "name": "John Michelau",
        "email": "john.michelau@motorola.com",
        "time": "Wed Sep 22 16:49:19 2010 -0500"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Sat May 14 18:54:47 2011 -0700"
      },
      "message": "Support for Vendor RIL dump of baseband logs\n\nAdded hook for Vendor RIL to provide a dump of the underlying\nbaseband\u0027s logs.  The Vendor RIL must implement the actual executable\nthat does the capture.\n\nChange-Id: I40fdf2ccc4bb14a9cef92b7866fad19684502524\n"
    },
    {
      "commit": "9a84983a9fd9959671e102045eaf185b83291269",
      "tree": "7235da3c8ad520b16425fee7984cbcd0cacf9b0b",
      "parents": [
        "f9dd34f4d3203fd50363b3b0247c5d0db6fe2c8f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 07 15:11:57 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 13 18:38:19 2011 -0700"
      },
      "message": "DO NOT MERGE.  Integrate from master: Improve activity manager debug dumps.\n\nActivity manager now does all dump requests into apps\nasynchronously, so it can nicely timeout if there is an\napp problem.  Also lots of general cleanup of the am\ndump output.\n\nChange-Id: I99447b87f77a701af52aeca984d93dfe931f065d\n"
    },
    {
      "commit": "88bf0e5ae7d0573f7d7aa88ce6c0a47a59b3047d",
      "tree": "287852fc49e0b8ac326f792c4e1c2a8354332a2d",
      "parents": [
        "c51ab9b93ddf964f79cde3c2b47d6ac0a53cac2f",
        "3d0724dc220a2e027b9e38f61c39c84c28a505d5"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 17:15:22 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 12 17:15:22 2011 -0700"
      },
      "message": "Merge \"resolved conflicts for merge of 0e59729b to master\""
    },
    {
      "commit": "3d0724dc220a2e027b9e38f61c39c84c28a505d5",
      "tree": "d0bb402a46c3de05da7f086c629b78c3b175b3ba",
      "parents": [
        "674b595fa5299d138e068b2b786027d6d6225394",
        "0e59729b104e48c7d935026f565c4b45f1f37d12"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 15:39:41 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 15:39:41 2011 -0700"
      },
      "message": "resolved conflicts for merge of 0e59729b to master\n\nChange-Id: I2d3a6bddf66b1df0c101c45ea2fec1cf65caf01b\n"
    },
    {
      "commit": "972808164adde6c0784e9c836d06219a9cf7eb7f",
      "tree": "5aa738ac6daee71126ec21792618328ee643fe65",
      "parents": [
        "76a118dd9e1bc8be33e1e22b7264b7f918f6f050",
        "0f1de9adde0b52d2a385a76232bd7ac30c3eeea2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 15:01:53 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 12 15:01:53 2011 -0700"
      },
      "message": "am 0f1de9ad: New compat mode front end: UI and persistence.\n\n* commit \u00270f1de9adde0b52d2a385a76232bd7ac30c3eeea2\u0027:\n  New compat mode front end: UI and persistence.\n"
    },
    {
      "commit": "34bb419e5946ab28112e9e27a4d1b3928d31e0e2",
      "tree": "3186b2ce206a101b19285660af602ec66bdbc831",
      "parents": [
        "b856f43ea7a3a5261a93e432e5ea80005e972530"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed May 11 14:15:23 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu May 12 14:09:57 2011 -0700"
      },
      "message": "update for new audio.h header location\n\nChange-Id: Ic4c62c4037800802427eb7d3c7f5eb8b25d18876\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "0f1de9adde0b52d2a385a76232bd7ac30c3eeea2",
      "tree": "6d30064324ea987411955a88cb0272ddb27d39b2",
      "parents": [
        "f3cdea937b8b659f959d5e77f4a17f749f85c6ae"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 11 17:34:49 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 13:28:45 2011 -0700"
      },
      "message": "New compat mode front end: UI and persistence.\n\nAdds a really crappy UI for toggling compat mode.\n\nPersists compat mode selection across boots.\n\nTurns on compat mode by default for newly installed apps.\n\nChange-Id: Idc83494397bd17c41450bc9e9a05e4386c509399\n"
    },
    {
      "commit": "4a627c71ff53a4fca1f961f4b1dcc0461df18a06",
      "tree": "270190b1e030424210b6375ca886c45db10c4fb6",
      "parents": [
        "2bb51bb203c117649db10ad8bd497f199ca797b0"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Apr 01 14:43:32 2011 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue May 10 17:52:51 2011 -0700"
      },
      "message": "Full local backup infrastructure\n\nThis is the basic infrastructure for pulling a full(*) backup of the\ndevice\u0027s data over an adb(**) connection to the local device.  The\nbasic process consists of these interacting pieces:\n\n1. The framework\u0027s BackupManagerService, which coordinates the\n   collection of app data and routing to the destination.\n\n2. A new framework-provided BackupAgent implementation called\n   FullBackupAgent, which is instantiated in the target applications\u0027\n   processes in turn, and knows how to emit a datastream that contains\n   all of the app\u0027s saved data files.\n\n3. A new shell-level program called \"bu\" that is used to bridge from\n   adb to the framework\u0027s Backup Manager.\n\n4. adb itself, which now knows how to use \u0027bu\u0027 to kick off a backup\n   operation and pull the resulting data stream to the desktop host.\n\n5. A system-provided application that verifies with the user that\n   an attempted backup/restore operation is in fact expected and to\n   be allowed.\n\nThe full agent implementation is not used during normal operation of\nthe delta-based app-customized remote backup process.  Instead it\u0027s\nused during user-confirmed *full* backup of applications and all their\ndata to a local destination, e.g. via the adb connection.\n\nThe output format is \u0027tar\u0027.  This makes it very easy for the end\nuser to examine the resulting dataset, e.g. for purpose of extracting\nfiles for debug purposes; as well as making it easy to contemplate\nadding things like a direct gzip stage to the data pipeline during\nbackup/restore.  It also makes it convenient to construct and maintain\nsynthetic backup datasets for testing purposes.\n\nWithin the tar format, certain artificial conventions are used.\nAll files are stored within top-level directories according to\ntheir semantic origin:\n\napps/pkgname/a/  : Application .apk file itself\napps/pkgname/obb/: The application\u0027s associated .obb containers\napps/pkgname/f/  : The subtree rooted at the getFilesDir() location\napps/pkgname/db/ : The subtree rooted at the getDatabasePath() parent\napps/pkgname/sp/ : The subtree rooted at the getSharedPrefsFile() parent\napps/pkgname/r/  : Files stored relative to the root of the app\u0027s file tree\napps/pkgname/c/  : Reserved for the app\u0027s getCacheDir() tree; not stored.\n\nFor each package, the first entry in the tar stream is a file called\n\"_manifest\", nominally rooted at apps/pkgname.  This file contains some\nmetadata about the package whose data is stored in the archive.\n\nThe contents of shared storage can optionally be included in the tar\nstream. It is placed in the synthetic location:\n\nshared/...\n\nuid/gid are ignored; app uids are assigned at install time, and the\napp\u0027s data is handled from within its own execution environment, so\nwill automatically have the app\u0027s correct uid.\n\nForward-locked .apk files are never backed up.  System-partition\n.apk files are not backed up unless they have been overridden by a\npost-factory upgrade, in which case the current .apk *is* backed up --\ni.e. the .apk that matches the on-disk data.  The manifest preceding\neach application\u0027s portion of the tar stream provides version numbers\nand signature blocks for version checking, as well as an indication\nof whether the restore logic should expect to install the .apk before\nextracting the data.\n\nSystem packages can designate their own full backup agents.  This is\nto manage things like the settings provider which (a) cannot be shut\ndown on the fly in order to do a clean snapshot of their file trees,\nand (b) manage data that is not only irrelevant but actively hostile\nto non-identical devices -- CDMA telephony settings would seriously\nmess up a GSM device if emplaced there blind, for example.\n\nWhen a full backup or restore is initiated from adb, the system will\npresent a confirmation UI that the user must explicitly respond to\nwithin a short [~ 30 seconds] timeout.  This is to avoid the\npossibility of malicious desktop-side software secretly grabbing a copy\nof all the user\u0027s data for nefarious purposes.\n\n(*) The backup is not strictly a full mirror.  In particular, the\n    settings database is not cloned; it is handled the same way that\n    it is in cloud backup/restore.  This is because some settings\n    are actively destructive if cloned onto a different (or\n    especially a different-model) device: telephony settings and\n    AndroidID are good examples of this.\n\n(**) On the framework side it doesn\u0027t care that it\u0027s adb; it just\n    sends the tar stream to a file descriptor.  This can easily be\n    retargeted around whatever transport we might decide to use\n    in the future.\n\nKNOWN ISSUES:\n\n* the security UI is desperately ugly; no proper designs have yet\n  been done for it\n* restore is not yet implemented\n* shared storage backup is not yet implemented\n* symlinks aren\u0027t yet handled, though some infrastructure for\n  dealing with them has been put in place.\n\nChange-Id: Ia8347611e23b398af36ea22c36dff0a276b1ce91\n"
    },
    {
      "commit": "aa9d84c37e05f696ec158dac98ce38cf41e18314",
      "tree": "49a8e08d51840eec7ff20b624c59408f2f7523aa",
      "parents": [
        "28e77e616d8f005c8e07d6f28a83f8ca9772aedf",
        "05be6d6fe09ddfb706d1bef3b20c3d37f45e3c8a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 19:00:59 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 19:00:59 2011 -0700"
      },
      "message": "resolved conflicts for merge of 05be6d6f to master\n\nChange-Id: Ic6a6c5bb300f6f1d43f9ed550b284282b4f16212\n"
    },
    {
      "commit": "4907d1d5e2c7d244b07579b8c52153df69754e85",
      "tree": "6e670ce463590a36bcbdec8df5a093e6fc3d2f4e",
      "parents": [
        "45364dc4bfe3e6118ad61f1d38489fe63418699a",
        "0c6cbf410a642f6e9cea7cca0a6e53a4a3cdd324"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 17:08:40 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 09 17:08:40 2011 -0700"
      },
      "message": "am 0c6cbf41: Merge \"Better compat mode part one: start scaling windows.\" into honeycomb-mr2\n\n* commit \u00270c6cbf410a642f6e9cea7cca0a6e53a4a3cdd324\u0027:\n  Better compat mode part one: start scaling windows.\n"
    },
    {
      "commit": "e2515eebf42c763c0a2d9f873a153711778cfc17",
      "tree": "ee159940f05c439d0524771bfbfe6b551c82c2d4",
      "parents": [
        "158e3582c03ab9e0221718da20fc8854bb9216d0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 27 18:52:56 2011 -0400"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 17:03:24 2011 -0700"
      },
      "message": "Better compat mode part one: start scaling windows.\n\nFirst step of improving app screen size compatibility mode.  When\nrunning in compat mode, an application\u0027s windows are scaled up on\nthe screen rather than being small with 1:1 pixels.\n\nCurrently we scale the application to fill the entire screen, so\ndon\u0027t use an even pixel scaling.  Though this may have some\nnegative impact on the appearance (it looks okay to me), it has a\nbig benefit of allowing us to now treat these apps as normal\nfull-screens apps and do the normal transition animations as you\nmove in and out and around in them.\n\nThis introduces fun stuff in the input system to take care of\nmodifying pointer coordinates to account for the app window\nsurface scaling.  The input dispatcher is told about the scale\nthat is being applied to each window and, when there is one,\nadjusts pointer events appropriately as they are being sent\nto the transport.\n\nAlso modified is CompatibilityInfo, which has been greatly\nsimplified to not be so insane and incomprehendible.  It is\nnow simple -- when constructed it determines if the given app\nis compatible with the current screen size and density, and\nthat is that.\n\nThere are new APIs on ActivityManagerService to put applications\nthat we would traditionally consider compatible with larger screens\nin compatibility mode.  This is the start of a facility to have\na UI affordance for a user to switch apps in and out of\ncompatibility.\n\nTo test switching of modes, there is a new variation of the \"am\"\ncommand to do this: am screen-compat [on|off] [package]\n\nThis mode switching has the fundamentals of restarting activities\nwhen it is changed, though the state still needs to be persisted\nand the overall mode switch cleaned up.\n\nFor the few small apps I have tested, things mostly seem to be\nworking well.  I know of one problem with the text selection\nhandles being drawn at the wrong position because at some point\nthe window offset is being scaled incorrectly.  There are\nprobably other similar issues around the interaction between\ntwo windows because the different window coordinate spaces are\ndone in a hacky way instead of being formally integrated into\nthe window manager layout process.\n\nChange-Id: Ie038e3746b448135117bd860859d74e360938557\n"
    },
    {
      "commit": "59f19e48c1c043bb9debdc35d166e397e2125d33",
      "tree": "5277f58327257cab63baaa7052573e1883501eb6",
      "parents": [
        "a5720192fe78337bcad9f509c1bbb1f8f3abb3c3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 06 19:22:12 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 06 19:22:12 2011 -0700"
      },
      "message": "clear boot-animation background with black (not transparent) pixels\n\nChange-Id: I2fcf9f303e8324cefaa2d96f1c46647f70980bb2\n"
    },
    {
      "commit": "7277744e8de8ad66a5e4e1d44db6057047edf1c3",
      "tree": "50bb1ddf46d6da9e7123c9ca83a673b50dd39c8b",
      "parents": [
        "8e3b17ad13a07ccfe904fa787c0be4cc92d85c0b",
        "67c92fbdfe52a94804f021c2255132c0f3550875"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Apr 29 10:26:26 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 29 10:26:26 2011 -0700"
      },
      "message": "am 67c92fbd: am 5f2ff42b: Add data to bugreports.\n\n* commit \u002767c92fbdfe52a94804f021c2255132c0f3550875\u0027:\n  Add data to bugreports.\n"
    },
    {
      "commit": "5f2ff42b282e093b61b9e7b07c79a74ea8ce3272",
      "tree": "d0593b837f864d5ba2724937edf3e5af23e5a311",
      "parents": [
        "d7f739b13e0336d6dd02df18d16a73636a795c3f"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Thu Apr 28 17:10:23 2011 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Apr 29 09:43:49 2011 -0700"
      },
      "message": "Add data to bugreports.\n\nInclude IPv6 routes and iptables data.\n\nChange-Id: Ie9bca8a935f93933082eef0c45f83a17be76b7ed\n"
    },
    {
      "commit": "24fc2fb1c541e954b83fd31ea9f786a5e9b45501",
      "tree": "e85b3ff86b73d56e16ab640919d251c046371c65",
      "parents": [
        "4dc22e77cfd2a1c3671e5646ee87c5e4c15596a0"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 22:30:36 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 13:10:10 2011 -0700"
      },
      "message": "audio/media: convert to using the audio HAL and new audio defs\n\nChange-Id: Ibc637918637329e4f2b62f4ac7781102fbc269f5\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "9638e5c167be321643bf3f3ee39e3fb45541fb3b",
      "tree": "ec79a54e7f44db04b4b5cc7f09ba944f6836a258",
      "parents": [
        "2a231f8435dba525c838779e0fd44710ea23cd98"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:19:32 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:26:11 2011 -0700"
      },
      "message": "Get rid of the \"pid\" parameter from createSurface\n\nChange-Id: I28635e3f803e6abe965d79998e305f54a202465d\n"
    },
    {
      "commit": "25641ca1ac5b09727f86fe01389877332a00455d",
      "tree": "e18f66c852164f4fbc6fbdf3d7c689b9b2ac3d83",
      "parents": [
        "08d1f937236230756bffde241ad6b335da368cf9",
        "0b285499db739ba50f2f839d633e763c70e67f96"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Apr 19 10:41:20 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 19 10:41:20 2011 -0700"
      },
      "message": "Merge \"Plumbing in PackageManager and installd for multi-user support.\""
    },
    {
      "commit": "08d1f937236230756bffde241ad6b335da368cf9",
      "tree": "f8cf94503698be7605dd6b7675bb4eab137a3ad0",
      "parents": [
        "7f9968c2ef07f7bff15b396f6d17f6fb2676aef5",
        "f68327e7e23d78e209acc76ccecbc4601e3f5fc2"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 19 10:10:54 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 19 10:10:54 2011 -0700"
      },
      "message": "Merge \"Make installd resistant to umask changes.\""
    },
    {
      "commit": "0e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3",
      "tree": "f39c38afc819ce0d75513880cca7fefcdab6925c",
      "parents": [
        "71a556f24e2b8d489bf81b22fab6fe5e99a9eae0"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Apr 15 17:50:10 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 19 09:57:54 2011 -0700"
      },
      "message": "Break apart queries to getInstalled* API\n\nTo avoid blowing past the Binder IPC limit, change the\nPackageManagerService to have a DB-like interaction where the client\ntells the service the last \"row\" that it read.\n\nThe fact that we use a HashMap instead of a TreeMap makes this\nproblematic. For now we\u0027re just making a new ArrayList for the keys and\nthen sorting them for each call. This can make the API slower for callers\nof this, but it\u0027s probably greatly overshadowed by the cost of the data\ntransfer itself.\n\nBug: 4064282\nChange-Id: Ic370fd148d4c3813ae4f2daffa1a7c28d63d5a09\n"
    },
    {
      "commit": "0b285499db739ba50f2f839d633e763c70e67f96",
      "tree": "77e6ecb6572cefdfae2095dcf64c4388adae15c2",
      "parents": [
        "4123211637dcc0155091016f0c0987b80e56ab7b"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Apr 14 17:35:23 2011 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Apr 15 15:15:27 2011 -0700"
      },
      "message": "Plumbing in PackageManager and installd for multi-user support.\n\n- Create /data/user directory and symlink /data/user/0 -\u003e /data/data for\n  backward compatibility\n- Create data directories for all packages for new user\n\n- Remove data directories when removing a user\n\n- Create data directories for all users when a package is created\n\n- Clear / Remove data for multiple users\n\n- Fixed a bug in verifying the location of a system app\n\n- pm commands for createUser and removeUser (will be disabled later)\n\n- symlink duplicate lib directories to the original lib directory\n\nChange-Id: Id9fdfcf0e62406a8896aa811314dfc08d5f6ed95\n"
    },
    {
      "commit": "f68327e7e23d78e209acc76ccecbc4601e3f5fc2",
      "tree": "5fd429b956afff5084ac28d815d2950c2768242a",
      "parents": [
        "3758321fcecf1a6af653937d295a14a5289e8e5b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Apr 14 16:20:03 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Apr 14 16:20:03 2011 -0700"
      },
      "message": "Make installd resistant to umask changes.\n\nBug: 3272072\nChange-Id: Ic2d241afcb4d0dabd63fcdadf13b2d48b7f398e8\n"
    },
    {
      "commit": "d195e5ab401432ddac659791640a2927fc668699",
      "tree": "61169b923b4d530a097ac8ff9e3029dfe468b7cd",
      "parents": [
        "966f9e558d714d9d41189e989b21e6d5fec35047"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 13 15:39:37 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 13 16:43:15 2011 -0700"
      },
      "message": "Replace a custom AndroidRuntime::findClass with a more targeted fix.\n\nThis seems simpler and more contained, and I think the comment explaining\nwhy hoop-jumping is necessary is a bit clearer now.\n\nChange-Id: Ief4afd7cbb42188ed835fce23e497520bdb753a8\n"
    },
    {
      "commit": "162ee49e1ce8800de80697fdd0e0e42ad7e9374e",
      "tree": "fb729edc49c75aa905daa34211810bd92c959f8c",
      "parents": [
        "a58ee55f490953247882298d56003cbf94285344"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Apr 11 17:23:27 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Apr 13 11:11:34 2011 -0700"
      },
      "message": "- Add another parameter in notify() to be able to send timed text sample\nthrough listener during video playback.\n- Add OnTimedTextListener in the MediaPlayer\nFor feature request 800939.\n\nChange-Id: I65072c27acb4c0037109a72be38c73e9f667420f\n"
    },
    {
      "commit": "8c2a1a90a81f04573bfa578eab32f5fd4a30eafb",
      "tree": "fba8d0b7e475a502ae396603a7089f1d5695c1ae",
      "parents": [
        "5008e92d1fd573d926cd55c39ca723a6fbdf7c4b"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Apr 08 13:44:08 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Apr 08 14:06:39 2011 -0700"
      },
      "message": "Add keychain user with special keystore access permissions\n\nChange-Id: I02fe5171add62c5cd9f57b01bc137f3bc1cb3a69\n"
    },
    {
      "commit": "e17aeb31030cfeed339a39a107912ad5e9178390",
      "tree": "e0773ea106c5504e2ef107a91f5871827cd76b75",
      "parents": [
        "097786507b07ff7137b305b5cf71b5ecbc6b029e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 07 15:11:57 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 07 18:26:15 2011 -0700"
      },
      "message": "Improve activity manager debug dumps.\n\nActivity manager now does all dump requests into apps\nasynchronously, so it can nicely timeout if there is an\napp problem.  Also lots of general cleanup of the am\ndump output.\n\nChange-Id: Id0dbccffb217315aeb85c964e379833e6aa3f5af\n"
    },
    {
      "commit": "86c9584559439504fc57ece2ccd9b6cbd568430c",
      "tree": "8c9cc83b3a980394b7cbe23dfd3c44fcc189b6b4",
      "parents": [
        "7f5a026d255fdcbd600a01b4abbd87eb0b528e37"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 31 13:16:12 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 05 10:45:35 2011 -0700"
      },
      "message": "Update installd to allow multiuser\n\n* Add ability to select different personas to generate the path to be\n  created.\n\n* Move hardcoded paths to read from init\u0027s set environment.\n\n* Add unit tests for all the utility functions that build strings to\n  make sure they\u0027re correct.\n\n* Fill in persona with \"0\" all the time now. Will be plumbed through in\n  later CL.\n\nChange-Id: I0a7f6e3640cb6b052f8823080886ee79e90b679f\n"
    },
    {
      "commit": "829f8e5ae5be10dbadd93b89881d0b87def4f236",
      "tree": "1ab65c69f7ac0957c876baf376f330339e50c442",
      "parents": [
        "6e923274c593bb52232321fc9ebbd966657e69f8",
        "9abfeb4123d1c76ca11a192f137daa1ff0260873"
      ],
      "author": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Tue Mar 29 16:28:00 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 29 16:28:00 2011 -0700"
      },
      "message": "Merge \"bugreport: Add ping wlan gateway, dns1 and dns2 servers\""
    },
    {
      "commit": "9abfeb4123d1c76ca11a192f137daa1ff0260873",
      "tree": "5021ae252ec005acb343f2337eadc79a8b3833bd",
      "parents": [
        "8b41bc91e55e8933e4c6bd6558a65c3632b4a387"
      ],
      "author": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Mon Mar 28 13:45:21 2011 -0700"
      },
      "committer": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Tue Mar 29 16:21:12 2011 -0700"
      },
      "message": "bugreport: Add ping wlan gateway, dns1 and dns2 servers\n\nChange-Id: I91c2b9be217fabe8f854c637c972377bc811cca8\nSigned-off-by: Dmitry Shmidt \u003cdimitrysh@google.com\u003e\n"
    },
    {
      "commit": "696257ccf315a1da042787c5b2d1f80c7146fc94",
      "tree": "39c185c6f97540243e5d071e545343822f46f2cc",
      "parents": [
        "1be6cce70175bd90744498d5fca95e3f9eec1cf6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "message": "merge libsurfaceflinger_client into libgui\n\nthis is the first step in unifying surfacetexture and surface.\nfor this reason the header files were not moved, as most of them\nwill eventually go away.\n\nNOTE: currently we keep libsurfaceflinger_client.so as an empty\nlibrary to workaround prebuilt binaries wrongly linking against\nit.\n\nChange-Id: I130f0de2428e8579033dc41394d093f4e1431a00\n"
    },
    {
      "commit": "199d1c131d29b5356f71fbd7826a592c1dd8575f",
      "tree": "b02c7ab5a0662020447a3324c7a09c1d4294c5e0",
      "parents": [
        "2f1f2248c8439adbd686810e306c55f9e6a5abc3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 11:48:13 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 14:43:12 2011 -0700"
      },
      "message": "Fix missing AOSP copyright headers for more files\n\no Update the copyright date on InputDispatcher_test.cpp and InputReader_test.cpp\n  because these two files were moved from other places to the current location,\n  and were actually created in 2010.\n\nbug - 4119349\n\nChange-Id: Ic93b81ddafb58e9e72a2e9e02ca3d9f173d6dca7\n"
    },
    {
      "commit": "3dee21eb0f253a7e78572872b8dfc7b5d990a063",
      "tree": "97486f257e38dcbc1654ade0c2c71838e157e283",
      "parents": [
        "79cabf8c855e415cd2528736557da1af1cf6d620",
        "c39bb4aaa7be1b9b0cc9fb0b1f03d54f7609ffeb"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 02 08:50:42 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 02 08:50:42 2011 -0800"
      },
      "message": "Merge \"Switch to returnCode for IPackageDeleteObserver\""
    },
    {
      "commit": "c39bb4aaa7be1b9b0cc9fb0b1f03d54f7609ffeb",
      "tree": "a17b98261c9fa066d13363442585f0a227a29ce7",
      "parents": [
        "051d4430715ea257f0afd124b919a14ced6385b8"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 28 13:27:19 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Mar 01 09:27:57 2011 -0800"
      },
      "message": "Switch to returnCode for IPackageDeleteObserver\n\nBefore the IPackageDeleteObserver only knew whether the deletion\nsucceeded or failed, but not the reason why.\n\nBug: 2520191\nChange-Id: I1f0d7c04f06c539660b6e17e7e133defb0f61b5b\n"
    },
    {
      "commit": "190c03cb32ab5ce2d139c8d003dff91175b66cec",
      "tree": "7b5e8e4f28481ce2bb2875bdfaf2415813a6773a",
      "parents": [
        "d2e91d1dc7c9fcbf792cbc21d283a5915b32cb54"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 28 09:23:13 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 28 09:23:13 2011 -0800"
      },
      "message": "Add the option \u0027-S\u0027 to use surface allocated buffers in the stagefright cmdline tool.\n\nChange-Id: Ic84eeed1679d6bf68c92de0e20d30e7a3c4d410f\n"
    },
    {
      "commit": "285a8f52c50a7d532b1f1009d513786e0e72aa71",
      "tree": "8bf19031164fe761cc16742c8867c2a981e77693",
      "parents": [
        "95d6b782a2b96f6f1c4657de09b34a6bef1b36ed"
      ],
      "author": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Mon Feb 14 11:08:01 2011 -0800"
      },
      "committer": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Mon Feb 14 11:08:01 2011 -0800"
      },
      "message": "bugreport: Remove wlan FW dump log\n\nChange-Id: I7f211c8125e6c3ba99e9c34e1221dfaa5ac1bee1\nSigned-off-by: Dmitry Shmidt \u003cdimitrysh@google.com\u003e\n"
    },
    {
      "commit": "1eac1c8e48ec1dd5df695196514545453c908a9e",
      "tree": "b7fc71bbd46df7c24c3c19757353e25eaffd6bf9",
      "parents": [
        "ac018be84f91c3853f0f006e75a26218d91626e7",
        "bfe9e9cf18ca84214bc59d875d74ca63a27e2414"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 09 13:27:01 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 09 13:27:01 2011 -0800"
      },
      "message": "am bfe9e9cf: am cc24170d: Merge \"fix [3374821] Cannot take screenshot of HC preview\" into honeycomb\n\n* commit \u0027bfe9e9cf18ca84214bc59d875d74ca63a27e2414\u0027:\n  fix [3374821] Cannot take screenshot of HC preview\n"
    },
    {
      "commit": "9afc7b02facf4918d3033ebb4548b76a59b1373c",
      "tree": "366eebda875a7a06647195969133e6552b86994e",
      "parents": [
        "5cf98da85c1698cacbeed8d4883373d0e0774fd8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 08 20:43:00 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 08 20:43:00 2011 -0800"
      },
      "message": "fix [3374821] Cannot take screenshot of HC preview\n\nthe screencap tool will now fallback to /dev/graphics/fb0 is the\nscreenshot API fails.\n\nChange-Id: I3f593847c72f4ca5429d4f64ca22bd5436dd2051\n"
    },
    {
      "commit": "5ea137203b1304d607ee37ddebf60b60598ac2d3",
      "tree": "2a33800b63341a1d5c5bf1152758293854497c9f",
      "parents": [
        "8adacd8e22e2a44c941e2b930cc53b7b843f4063"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 04 10:14:08 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 04 10:14:08 2011 -0800"
      },
      "message": "Ignore format change message in sf2 instead of asserting\n\nChange-Id: I2d7cdf371c07109398c53c7ffc37d7b10b6b6312\n"
    },
    {
      "commit": "35ab3ad61fcc349380d7e7f2fcf9a0dfbf76ae11",
      "tree": "a5db3c2583c81b59c28b1f7d9ab72ff2e00a317f",
      "parents": [
        "6f6ef48dc9a40d6afe2b66db4d1a411771e85a5b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 02 16:42:14 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 02 16:42:18 2011 -0800"
      },
      "message": "Remove defunct secure FS work\n\nBug: 3365047\nChange-Id: I68eaea295881f5431907e1b93bdd73e644e84aa5\n"
    },
    {
      "commit": "4dc5c4a19a030210e8330ce8df5502a02e8960ca",
      "tree": "84672a70c9a960e8df81a48e82e231e26d7425ce",
      "parents": [
        "74c86d3e3a5206fef8d2e0ad1727bf903a76a638",
        "31d3963bd6f8f14268adf26b2b7b6cac9cd949f0"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Tue Feb 01 13:24:35 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 01 13:24:35 2011 -0800"
      },
      "message": "am 31d3963b: am f370391f: Merge \"Show the encryption boot animation.\" into honeycomb\n\n* commit \u002731d3963bd6f8f14268adf26b2b7b6cac9cd949f0\u0027:\n  Show the encryption boot animation.\n"
    },
    {
      "commit": "bd9a08d318f94a3d0b2f8f9d7b16b10736d80c5c",
      "tree": "a636c061499dd9b3f9be7816708da85cfe21dd23",
      "parents": [
        "e3004e7867925e70bf4930384a265106f45f87d6"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Mon Jan 31 15:04:34 2011 -0600"
      },
      "committer": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Mon Jan 31 15:04:43 2011 -0600"
      },
      "message": "Show the encryption boot animation.\n\nChange-Id: I15892a35238d97302b30f26bec170b9f231a3e15\n"
    },
    {
      "commit": "8935bcacd2b760bd81ea5636b0e9b27629b957f8",
      "tree": "09768953711010a942c0167b08f4e22e2aa045b6",
      "parents": [
        "1df27c02ec96fd2a4a17494cdef4fea8610ecc7c"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Fri Jan 21 22:32:00 2011 -0800"
      },
      "committer": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Wed Jan 26 10:58:29 2011 -0800"
      },
      "message": "dumpstate: improved collection, better error handling.\n\n- Some of the commands used by dumpstate, which drops root, will not collect\nanything during a bug report. E.g. df fails on /mnt/secure/asec.\n- force flushing of error message\n  . without the flush (using gingerbread and not master)\n     *** netcfg: Exit code 255\n  . with the flush()\n     *** exec(netcfg): Permission denied\n     *** netcfg: Exit code 255\n- add a check before using WEXITSTATUS()\n\nChange-Id: Ia3924b9cc8a12cecab894cbf7f2c79614a358d34\nSigned-off-by: JP Abgrall \u003cjpa@google.com\u003e\n"
    },
    {
      "commit": "e9b467d7dd26d508b29fbecd555cb562c0a8b472",
      "tree": "d6183c863d289f431ae82e54f8b979d30da8a780",
      "parents": [
        "28f37efe309d51c877bdd8c5ac31946db3ff06e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 20 07:50:59 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 20 07:50:59 2011 -0800"
      },
      "message": "Bug 3361124 Remove drmioserver\n\nChange-Id: I64cba4be8a38b60bf3873836b4cd0d1039e19706\n"
    },
    {
      "commit": "9286cfe5017363d95798d85163ec4f28aeb0c675",
      "tree": "cd0907a081cd799a4dc67f00072006fd850c016a",
      "parents": [
        "ef6abd8a3e4b05cb9d94f29f4e8ffc7bb2ecec77",
        "83fdc69ea0beb715dd45f0a4285cb5d780f8018a"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jan 14 18:33:51 2011 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jan 14 18:33:51 2011 -0800"
      },
      "message": "merge 83fdc69e from gingerbread - do not merge\n\nChange-Id: Ib1e9e12244a44f75a93d66142e71915de6386680\n"
    },
    {
      "commit": "9efe47374b61afd0ce84afa64e9fa5b41dfaef22",
      "tree": "4bb85e1b5ef19ce8cad358a9a52ab05f2e6077e4",
      "parents": [
        "a29bf14e1d2857debc632ce4304a1c72dded348c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Dec 02 17:42:08 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 12 17:12:46 2011 -0800"
      },
      "message": "Squash commits of the following patches, cherry-picked from other branch - do not merge.\n\no Prepare for publishing MediaMetadataRetriever as public API\n  step one:\n  o replaced captureFrame with getFrameAtTime\n  o removed getMode\n\no Replace MediaMetadataRetriever.captureFrame() with MediaMetadataRetriever.getFrameAtTime()\n  as part of the preparation for publishing MediaMetadataRetriever as public Java API\n\no Remove captureFrame from MediaMetadataRetriever.java class\n  It has been replaced by getFrameAtTime() method\n\no Replace extractAlbumArt() with getEmbeddedPicture() in MediaMetadataRetriever.java\n\no Publish MediaMetadataRetriever.java as public API\n  o Removed setMode() methods and related mode constants\n  o Removed some of the unused the metadata keys\n  o Updated the javadoc\n  o part of a multi-project change.\n\nbug - 3309041\n\nChange-Id: I2efb6e8b8d52897186b016cb4efda6862f5584c4\n"
    },
    {
      "commit": "11eab056dd0133a390169d3581edf3eef26d6a54",
      "tree": "efcb4b7e4e289be17db5ed1356f365e0e18f87e6",
      "parents": [
        "1415bb7a948e0add9f6beb6dccbea70e9d2bedd0"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 06 12:20:35 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 12 14:14:11 2011 -0800"
      },
      "message": "Publish MediaMetadataRetriever.java as public API\n\no Removed setMode() methods and related mode constants\no Removed some of the unused the metadata keys\no Updated the javadoc\n\no part of a multi-project change.\n\nbug - 2433195\n\nChange-Id: I5ed167f1fd6a53cb143b7dc385b149431d434438\n"
    },
    {
      "commit": "9b1bd2c7d1acffa1079d589811450140518e5ce5",
      "tree": "1de29f3463ac2962b2dff7f0bcbe23e88dc6607f",
      "parents": [
        "412ebd6f9d18eebc11d8473318316aef1dfc5caa",
        "6ec91731cbf6ee1a9a914d341fab9567d1599018"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@google.com",
        "time": "Sun Jan 09 13:04:01 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jan 09 13:04:01 2011 -0800"
      },
      "message": "am 6ec91731: DO NOT MERGE : Permission fix: don\\\u0027t require BACKUP perm for self-restores\n\n* commit \u00276ec91731cbf6ee1a9a914d341fab9567d1599018\u0027:\n  DO NOT MERGE : Permission fix: don\u0027t require BACKUP perm for self-restores\n"
    },
    {
      "commit": "6ec91731cbf6ee1a9a914d341fab9567d1599018",
      "tree": "c8726515bae31736ebf1061006b5056d201879df",
      "parents": [
        "433863b1085248a8fdc9bcd0ac8501cc6a7b8ace"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@google.com",
        "time": "Tue Nov 16 15:10:49 2010 -0800"
      },
      "committer": {
        "name": "Chris Tate",
        "email": "ctate@google.com",
        "time": "Sun Jan 09 12:49:47 2011 -0800"
      },
      "message": "DO NOT MERGE : Permission fix: don\u0027t require BACKUP perm for self-restores\n\nThe public API is not supposed to require the BACKUP permission in order\nfor an application to restore its own last-known-good backup data.  However,\nas currently implemented, BackupManager.requestRestore() [the public API\nin question] depends on private Backup Manager methods that *do* enforce\nthat permission.  The net result is that the method cannot be successfully\nused by third party applications: it will throw an exception if attempted.\nThis CL restructures the permission checking involved.\n\nFirst, the underlying beginRestoreSession() operation can now be passed a\n\u0027null\u0027 transport name; if this is done, then the restore session is begun\non whatever the currently-active transport is.  Looking up the name of the\nactive transport is one of the permission-guarded actions that was required\nwith the initial implementation.\n\nSecond, a package name can now be passed to beginRestoreSession().  If\nthis is done, then the restore session can only be used to perform a\nsingle-package restore of that one application.  The BACKUP permission is\nnot required if the caller is tying the restore to its own package name.\n\nIn combination, these changes permit BackupManager.requestRestore() to\nfunction without the calling app needing to hold any special permission.\nThe no-permission case is intentionally quite narrow:  the caller must\nhold the permission unless they both (a) pass \u0027null\u0027 for the transport\nname, thereby accepting whatever the currently active transport is, and\n(b) pass their own package name to restrict the restore session only\nto their own app.\n\nExternal bug http://code.google.com/p/android/issues/detail?id\u003d10094\nInternal bug 3197202\n\n(Cherrypick from master to gingerbread)\n\nChange-Id: Ie20b0bd2420345ce6eda178f854680b558f6372a\n"
    },
    {
      "commit": "4f05220d10338b6ad668c87e70cbe7b9914a9047",
      "tree": "fe400e54a2fa2ad9dfd09a4f09f8255f22df1171",
      "parents": [
        "bdd8d17d81c4ef41a2ae82c7f73ecff6b48f493e",
        "690d20bb53ba2485f59d128b365eff991d5cc3e6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Jan 09 11:59:12 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Jan 09 11:59:12 2011 -0800"
      },
      "message": "Merge commit \u0027690d20bb53ba2485f59d128b365eff991d5cc3e6\u0027 into manualmerge\n"
    },
    {
      "commit": "95db1cfc741c23c7f4192128e3b7bb3c43761bdb",
      "tree": "903faca55d157e428f374f010243f21b3b22981e",
      "parents": [
        "9688fdf51edb82a73e1a6d436bf7bce706c049fb",
        "cd23823d4f533431c76baa104eb50b7803b3b391"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Jan 09 11:44:17 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jan 09 11:44:17 2011 -0800"
      },
      "message": "am cd23823d: Merge \"Fix issue # 3227963: SecurityException: Neither user 10023 nor...\" into gingerbread\n\n* commit \u0027cd23823d4f533431c76baa104eb50b7803b3b391\u0027:\n  Fix issue # 3227963: SecurityException: Neither user 10023 nor...\n"
    },
    {
      "commit": "b4ff35df5c04aec71fce7e90a6d6f9ef7180c2ad",
      "tree": "e4473f1b22e3051a8f82239256148820d4e097d5",
      "parents": [
        "a5af5d6b122b5d7337e6640deabf7886689679eb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jan 02 16:37:43 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 04 17:31:24 2011 -0800"
      },
      "message": "Mouse pointer integration.\n\nAdded support for loading the pointer icon from a resource.\n\nMoved the system server related bits of the input manager out\nof libui and into libinput since they do not need to be linked into\napplications.\n\nChange-Id: Iec11e0725b3add2b905c51f8ea2c3b4b0d1a2d67\n"
    },
    {
      "commit": "54e6649e4cac3475593f3acb7894837fa1dc61eb",
      "tree": "c8160f64420a90b870954b7dcc7aec8d3844bb66",
      "parents": [
        "d486375c148b54be209468d83311b981ef3258cc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 23 10:27:40 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 23 10:27:40 2010 -0800"
      },
      "message": "Squashed commit of the following:\n\ncommit eaeaa2672d4e0a82891493b2bde8bdd0c0e79a1b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Dec 23 10:26:48 2010 -0800\n\n    Remove lowest bandwidth stream if using the legacy player.\n\n    Change-Id: I2f885e26344996de9152f8fda9fd6bdef89bf953\n\ncommit 7d652972615b2750fd8f1c21b9fab0e136df2b82\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Dec 23 10:14:36 2010 -0800\n\n    Don\u0027t clear the packet source\u0027s format for legacy discontinuities.\n\n    Change-Id: I9bd5a21b9bd28043ad38bd0658ccc8eda3c1079a\n\ncommit 2b18a45aac17cbfe1aa089d0f6510957d438dd64\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Dec 23 10:13:55 2010 -0800\n\n    Use NuPlayer for HTTP live streaming based on runtime property.\n\n    adb shell setprop media.httplive.enable-nuplayer true\n\n    Change-Id: I22738df3403985dc8e6992b1ab5da5747309f773\n\ncommit 50d899fb7b9ea52c3994b0a58e993998d926aeed\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 16:25:22 2010 -0800\n\n    Make ACodec a lot less verbose.\n\n    Change-Id: I94c7e499b61032321ffaf999f5ad2c913cde6a48\n\ncommit b19e1740cb4d02990a56844654b5d019987c6405\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 16:22:22 2010 -0800\n\n    Wait until we have fresh codec-specific-data before instantiating the decoders\n\n    after a discontinuity involving a format change.\n\n    Change-Id: I7bcf9b5ae3319f08bf8978a117e8ee5220902e37\n\ncommit 06428c006906c9099e430aface3b439ff1d36ecc\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 15:20:38 2010 -0800\n\n    Disable random seeks in the streaming tool for now.\n\n    Change-Id: Ie86fde422dcfc4b2c7a01be51a193fda9c88cd71\n\ncommit e19db68f3bea8a61c191f60f6940f30e3a0d5f1b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 15:20:27 2010 -0800\n\n    Tweak HTTP live parameters.\n\n    Change-Id: If4b71e12485facc523a8a43d8213d0feb190daab\n\ncommit 1e9942791538c2256b579d96c6c04264b0d8b087\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 14:48:23 2010 -0800\n\n    Enable http live streaming through NuPlayer for http URLs containing the string m3u8\n\n    Change-Id: I1691fe12ae8f1507fe3673313959cd50bc324624\n\ncommit 4c33f96a6e499ee0efe0e70b687094430cb7c1c0\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 14:40:27 2010 -0800\n\n    Support for HTTP live streaming in NuPlayer.\n\n    Change-Id: Iacba1c3ebaeb8d3b972185deaf4cff18c8009c54\n\ncommit ddf705ce553708bc5b13d89a878484cf839bd674\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 13:42:47 2010 -0800\n\n    StreamingSource now a subclass of abstract NuPlayer::Source\n\n    Change-Id: Ia6c7c639628910b9d1f37decc55da48b07a70de3\n\ncommit 9e04a8406b1882a8e3fdeb7b4d52db5ae70b970a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 13:33:52 2010 -0800\n\n    Refactor media data sourcing to NuPlayer::Source.\n\n    Change-Id: I1db9fb08c4e527bf7b19c29978cf342c2b0a0bc9\n\nChange-Id: I9610a097481dda58f22142eacda3ac2dba0b63f9\n"
    },
    {
      "commit": "690d20bb53ba2485f59d128b365eff991d5cc3e6",
      "tree": "dc9e90632571711a17a963e39d04fa85613cdc11",
      "parents": [
        "3ce86481cbde92e2cb6fe3a46cbedd8b2a5c4b48"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Dec 22 14:03:29 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Dec 22 16:31:44 2010 -0800"
      },
      "message": "Fix issue # 3227963: SecurityException: Neither user 10023 nor...\n\n...current process has android.permission.WAKE_LOCK\n\nWhen updating a system app, we would actually uninstall the package\nof the system app, which also meant removing its uid...!  It was just\nluck that we would get the same uid when installing the update after\nthat.  During that time, if anyone tried to do anything related to\nthat uid, it would be unknown.\n\nThis change tweaks how we go about replacing system apps by making\nit more like normal apps -- to make this work, if we need to disable\nthe system app, we generate a new PackageSetting from the current\nsystem app and replace it into our data structures, so we can update\nthat without trashing the current correct information about the (still\nactually there) system app.\n\nAlso fixed a problem where we were not killing the currently running\napp before installing, like we do when updating a normal application.\n\nAnd fixed a problem where we were not deleting the /data .apk when\nuninstalling a system app update.\n\nAnd added a new option to the \"pm\" command to clear the data associated\nwith an app.\n\nChange-Id: I0e879677849aa42950a3c360bf78ad820e87674b\n"
    },
    {
      "commit": "a15874665fa785c82afa9f2e8cb3512470c297cb",
      "tree": "0a2d5bc416eb12e5d4c4c21dfb4e7111389b7a8c",
      "parents": [
        "ebf90ac7a82c9a0fa5c02702ccba36bc5082240f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 15 15:17:42 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 15 15:18:26 2010 -0800"
      },
      "message": "Initial support for a true streaming player for mpeg2 transport streams.\n\nChange-Id: I153eec439d260a5524b21270e16d36940ec3161a\n"
    },
    {
      "commit": "ccc714131359eb1022d8c6702b7d82ab9e93f27c",
      "tree": "150c9798fc3d0d5dfee9c83d75845014a5edf983",
      "parents": [
        "ffdd591a829af7fddd36a7b80d2a3b8188c871a6",
        "78e9f4cbaece783b7b87ce3fb0a157dae766012a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 13 14:55:25 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 13 14:55:25 2010 -0800"
      },
      "message": "resolved conflicts for merge of 78e9f4cb to master\n\nChange-Id: I1135361e6d66f524c3f349e2bf1f31bd4191c634\n"
    },
    {
      "commit": "78e9f4cbaece783b7b87ce3fb0a157dae766012a",
      "tree": "92ab76a16e62d5284f826fa58499bae963245b84",
      "parents": [
        "6d13b146e0444f40f45b9fe5812093c5e611b68e",
        "e4a5951925f16f18dae91ed65567e96528f17fee"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 13 14:37:09 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 13 14:37:09 2010 -0800"
      },
      "message": "am e4a59519: Fix issue #3154576: battery stats checkin should include UID -\u003e packages+ map\n\n* commit \u0027e4a5951925f16f18dae91ed65567e96528f17fee\u0027:\n  Fix issue #3154576: battery stats checkin should include UID -\u003e packages+ map\n"
    },
    {
      "commit": "e4a5951925f16f18dae91ed65567e96528f17fee",
      "tree": "b96636542b481ce23865326f49c5ddff934e71cd",
      "parents": [
        "e3f6336bcffc250da90ec864bccfa73ad1d016b9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 07 11:08:07 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 13 14:31:40 2010 -0800"
      },
      "message": "Fix issue #3154576: battery stats checkin should include UID -\u003e packages+ map\n\nIncludes some other small fixes to battery collection and a few\nother things.\n\nOutput of package info looks like this:\n\n5,0,i,uid,1000,com.android.settings\n5,0,i,uid,1000,com.android.providers.subscribedfeeds\n5,0,i,uid,1000,com.android.providers.settings\n5,0,i,uid,1000,com.android.server.vpn\n5,0,i,uid,1000,android\n5,0,i,uid,1000,com.android.systemui\n5,0,i,uid,1000,com.google.android.backup\n5,0,i,uid,1001,com.android.phone\n5,0,i,uid,1001,com.android.providers.telephony\n5,0,i,uid,1022,com.android.nfc\n5,0,i,uid,10021,com.google.android.location\n5,0,i,uid,10021,com.google.android.syncadapters.calendar\n5,0,i,uid,10021,com.google.android.gsf\n5,0,i,uid,10021,com.google.android.syncadapters.contacts\n5,0,i,uid,10026,com.android.providers.downloads.ui\n5,0,i,uid,10026,com.android.providers.media\n5,0,i,uid,10026,com.android.providers.drm\n5,0,i,uid,10026,com.android.providers.downloads\n5,0,i,uid,10032,com.android.launcher\n5,0,i,uid,10039,com.google.android.gm\n5,0,i,uid,10041,com.google.android.gallery3d\n5,0,i,uid,10049,com.android.providers.calendar\n\nChange-Id: I9e38f254eef146339113ad270f5c6e8b60fb7a1d\n"
    },
    {
      "commit": "1d8843897e1e108586a6a51e05392ff509b3dd7e",
      "tree": "b0be7ab51444255b6e3158e7ec6fbce66a23bc45",
      "parents": [
        "436786e759ed5f5eee34137ea6bfe57414bb9ff4"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Dec 08 11:21:24 2010 -0800"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Dec 08 18:27:29 2010 -0800"
      },
      "message": "service_manager: duplicate registrations override previous ones\n\nWhen a process that has registered one or several binder services with\nthe service manager crashes, that process will usually be restarted by\ninit (see init.rc).  When the process comes back up, it will attempt\nto re-register itself with the service manager.  However, the binder\ndriver may not deliver the death notification to the service manager\nbefore the the new service-registation request, in which case the\nservice manager will reject the request as a duplicate.\n\nThe same may occur if a process takes a while to actually exit.  Since\nthe init language\u0027s restart command does not wait for a process to\nexit before restarting it, there may be for a brief instant two\nprocesses.  The new one will attempt to register before the old\none has exited, causing the same problem.\n\nThis patch does not treat duplicate registrations as an error.\nInstead, the service manager force-releases the old instance and\nproceeds with registering the new instance of a service.\n\nChange-Id: Ib70640ab13f5e22460fff6af2f9520b8a9ac9713\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "ae9d5072534de65d9ea41def2e1b4258a1731ca4",
      "tree": "830c5d190218294b95df9b1e84dc395d8779c7a6",
      "parents": [
        "b5590846c035a28399818451201aaf1256913ec3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 06 10:36:06 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 06 12:45:50 2010 -0800"
      },
      "message": "API Support for both synchronous and queued commands, optionally associated metadata.\n\nChange-Id: Idb90d64cb638942210c5822b3cba2f05b087d601\n"
    },
    {
      "commit": "b5590846c035a28399818451201aaf1256913ec3",
      "tree": "94841822da5b896e8c05e581bb040b87041f7fe0",
      "parents": [
        "768ec6f2be1ca7bd7ac5ae34498bdfaa1fbe19dc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 03 16:12:25 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 06 08:28:36 2010 -0800"
      },
      "message": "Squashed commit of the following:\n\ncommit 9254c845d7c82976fd4b8be406ce4b17eeb0e119\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Dec 3 15:26:12 2010 -0800\n\n    Remove obsolete code from the cached data source.\n\n    Change-Id: I794b986ac8977cbc834dff189221a636ba564e36\n\ncommit 2ee33711064c58c53ba65ed9e63dd4b01ec2380e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Dec 3 15:23:13 2010 -0800\n\n    LiveSource is dead, long live LiveSession.\n\n    Change-Id: Ibcd0731ecf9c94f0b3e5db3d53d012d9da2a1c66\n\ncommit 9eabb2c3cd8571ab859bdeae0aa7f655c414d8fa\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Dec 3 12:49:31 2010 -0800\n\n    Respect explicitly signalled discontinuities.\n\n    Change-Id: I3c0c16a2de7a99742d25db7d1b2ff0258de52271\n\ncommit 7f7f7b6b906b6ece6e4d43af7fd5f494e805c5e5\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Dec 3 11:45:57 2010 -0800\n\n    Better protection against syncword emulation in AAC ADTS content.\n\n    Change-Id: I867e80a4556dd46d24ab3e781177c248a5221719\n\ncommit fe765766582efcc350aed01135ea603576adccf6\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Dec 3 09:15:59 2010 -0800\n\n    New implementation of http live driving code.\n\n    Change-Id: I31ddf3d6a0d5929b121be704a2b9c3d6775f7737\n\nChange-Id: Id8d1829c8fcb173756965013f848c1d426ef1048\n"
    },
    {
      "commit": "5cff0630eb970faf1682095ca434b204628b4d62",
      "tree": "4c7934304cb64bb0d5aefb57c279f4c4a822bda0",
      "parents": [
        "988f382308f4d6c743a3d85462184ed077c3a36e"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Dec 03 16:01:57 2010 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Dec 03 16:07:08 2010 -0800"
      },
      "message": "make screencap able to save pngs.\n\nChange-Id: Idf3542ff05670bc872bd91770810ed775266514f\n"
    },
    {
      "commit": "faf09ba9405ff019b5ca7e2317debe4ff269d4f8",
      "tree": "4e455c7318659101ff36e280abb91be3689fb778",
      "parents": [
        "848024f744729a131a461f3d13151b2d0393de17"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Dec 02 17:42:08 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Dec 03 15:32:47 2010 -0800"
      },
      "message": "Prepare for publishing MediaMetadataRetriever as public API\n\nstep one:\no replaced captureFrame with getFrameAtTime\no removed getMode\n\nbug - 2433195\n\nChange-Id: I38a8cecef29014692f0b08b8818326e3ebb40a12\n"
    },
    {
      "commit": "592f4dd8c173f774ac3735211b301e51856d5175",
      "tree": "a54b81d49f33605574f837da1ab079f22c3c37f7",
      "parents": [
        "3b7fec8d56e0634d4c7795258f03023f4885f723",
        "33b2264ea9ab0f1980c49698729a0ab3c51d07fe"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 03 11:23:48 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 03 11:23:48 2010 -0800"
      },
      "message": "Merge \"Move disk usage utilities to its own library\""
    },
    {
      "commit": "edebb2fe1d1c4d3ad17db91cd7e2bfe8feafd0b7",
      "tree": "763749fe5178479da84f47bc75e5d4f9607fdff7",
      "parents": [
        "0d76ca7a979b8e7cdf27a619a2a6df8b331a0d31",
        "b087ceead79bcb304e5793c6ae9109ce590847dc"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Dec 02 08:03:25 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 02 08:03:25 2010 -0800"
      },
      "message": "am b087ceea: am 40eade14: Merge from open-source master\n\n* commit \u0027b087ceead79bcb304e5793c6ae9109ce590847dc\u0027:\n  Fix crash by \"adb shell pm list permissions -f|-s\"\n"
    },
    {
      "commit": "40eade14bb87d24903588de04449fdfe2e1795cb",
      "tree": "22cf7f66ad807234c28cf352552e9a7e50cfb5ad",
      "parents": [
        "077bc4ac019ad33abd613448e11d3ad501218991",
        "e1de3f390e7be3f82fa5e3e5bf6d6c8cc8414091"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Dec 02 07:55:02 2010 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Dec 02 07:55:06 2010 -0800"
      },
      "message": "Merge from open-source master\n\nChange-Id: Ie25bbfbf12fa8902d9ba82cf2d4ed4c60d439e39\n"
    },
    {
      "commit": "33b2264ea9ab0f1980c49698729a0ab3c51d07fe",
      "tree": "0c30e474c5ddb66c8bc0bcdc44126447f26afd92",
      "parents": [
        "0b44476a23660baabc1984c2fa8ee2c0c114460b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Nov 30 13:49:32 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Nov 30 16:51:13 2010 -0800"
      },
      "message": "Move disk usage utilities to its own library\n\nDisk usage calculation will happen in more places now, so move the\ninstalld calculation utilities out to its own library that only gets\nbuilt for the target.\n\nChange-Id: Idceb6bd663ca6ab3d38fa00e57ee74a25b784855\n"
    },
    {
      "commit": "1c3274ca12a6931568693b897c269107f0346eab",
      "tree": "f16be948fd0c11f124c2e8b402b1f290c1956879",
      "parents": [
        "f0f6c54b13831b11bd7a3bd7a01dc49b7505e56e"
      ],
      "author": {
        "name": "Ali Utku Selen",
        "email": "aliutku.selen@sonyericsson.com",
        "time": "Tue Nov 30 10:37:10 2010 +0100"
      },
      "committer": {
        "name": "Kenneth Andersson",
        "email": "kenneth.andersson@sonyericsson.com",
        "time": "Tue Nov 30 16:22:56 2010 +0100"
      },
      "message": "Fix crash by \"adb shell pm list permissions -f|-s\"\n\npm command makes the assumption that every permission should\ncontain android:description and android:label attributes while\nthey are not mandatory. If a permission does not contain these\ntwo attributes, we get \"android.content.res.\nResources$NotFoundException: String resource ID #0x0\"\nfollowed by a NPE when using -f or -s options.\n\nWith the following change, users will get \"null\" in output for\nrespective fields.\n\nChange-Id: I4e7f407592fa071abdab1d979775f46ec27dc9d2\n"
    },
    {
      "commit": "997d15e1a6e4a74c69c03f164973b7ddd21c6fff",
      "tree": "dd2bfc118a587fe2df72e465f2b1379c691e230d",
      "parents": [
        "a84a744bb1804d7817093c0ab96d9cbaae3916f0",
        "d7c8672ccc8ccd1f99da60accc63d6817d41ac52"
      ],
      "author": {
        "name": "Olivier Bailly",
        "email": "olivier@google.com",
        "time": "Mon Nov 29 15:12:33 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 29 15:12:33 2010 -0800"
      },
      "message": "Merge \"fix int vs. pointer mismatch in return statement. Add missing include header for compilation on x86 target.\""
    },
    {
      "commit": "52b52cdfb7502d5a0fd7bba21d1daa3e36a54e42",
      "tree": "040a33d75806c53592501343999f16c4c3cf114c",
      "parents": [
        "57914381a80c9f19cf5227b4af9e822fa0c74ea9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 23 11:41:34 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 23 14:46:13 2010 -0800"
      },
      "message": "Support streaming data across binder boundaries.\n\nChange-Id: Ifbac61406dcb81343765f99ccba08bd90f9274cc\n"
    },
    {
      "commit": "1bb0ffd0981bec26f906bc62d449e136111af4f8",
      "tree": "91c6a21c85bd5dc4b74663fa4c665f81d0d67a09",
      "parents": [
        "1ca562635117e10fae0888689909e6c39d66b0a4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 22 13:06:35 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 22 14:05:21 2010 -0800"
      },
      "message": "Squashed commit of the following:\n\ncommit 0870f7bdd10a7cd36087d723d1957d8e1b967ca7\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Nov 22 12:57:04 2010 -0800\n\n    set_surface_crop doesn\u0027t seem to work right yet, stop using it in the SoftwareRenderer.\n\n    Change-Id: If0a24f78b7810a6cecaa82eb4f23d0f90c22cc42\n\ncommit 4767b52bee3a54ae117a8708d6832276a44e6a6a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Nov 22 11:14:57 2010 -0800\n\n    info-\u003emMediaBuffer may still be NULL at this point...\n\n    Change-Id: I25a71569015b1bb87f1ea7efff7588958774426f\n\ncommit 0cef79874e1f1ddb10b7402177a87d3cffc7de92\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Nov 22 10:55:12 2010 -0800\n\n    QCOM\u0027s YVU420 color format conversion has now been tested.\n\n    Change-Id: I7fef4b642a928af15d42f006f7cdc107d5ff1d67\n\ncommit 84fe05a6c969ede0ce8a85a530e110afca07c7a7\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Nov 22 09:59:50 2010 -0800\n\n    Removed remaining traces of suspend/resume. Proper reporting of video dimensions based on cropping rectangle.\n\n    Change-Id: Ib238b80cbc1f19e7d312f2422eb5e9ab6b06b1bc\n\ncommit 50970cdc837c5c498bcf0cb61b436196ca9e2ef7\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Nov 19 16:11:06 2010 -0800\n\n    Revamped Software Renderer respects the crop rectangle.\n\n    Removed obsolete ADRENO support code.\n\n    Change-Id: I984cbc8a99c4d97e09e7d1b1292099c88b9ae535\n\ncommit 8abbc6a5608bff650f968540f24a2eab75f254ed\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Nov 19 16:10:41 2010 -0800\n\n    The metadata retriever now respects the crop rectangle while capturing a video frame.\n\n    Change-Id: Id3377176060086d16717f62c77ce26fabe899050\n\ncommit 2d42e4466609d304e88bd2cdd6eb7b297340cc21\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Nov 19 16:09:50 2010 -0800\n\n    Changed ColorConverter APIs to be more general.\n\n    Clients can now refer to crop rectangles in both source and destination.\n\n    Change-Id: Ief151d736818396d0389ec04e7df5650e3ad7c04\n\ncommit 273184303d54a54febd3e9c3dd4df30507ea78b5\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Nov 19 15:04:06 2010 -0800\n\n    The stagefright commandline tool now writes the extracted video frame to /sdcard/out.jpg\n\n    Change-Id: Ieb2ab3fda7a7cd9294beccb8db0eed75096eeef4\n\ncommit 2d43390328cadf4ba94c1c3c02e4fb30baa29690\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Nov 19 14:36:55 2010 -0800\n\n    The AVC software decoder now properly advertises the cropping rectangle.\n\n    Change-Id: Idb7a8a7e2fde5740f0fc34b7e8c92eca2577104b\n\ncommit 9a7ed23c2fac8ce19dce7a34a603acee945a89f6\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Nov 19 13:40:39 2010 -0800\n\n    OMXCodec now signals a format change if the cropping rectangle changes.\n\n    ...and puts the cropping info into its output format.\n\n    Change-Id: I3ffbd8e877ba286fe06a82c536ef20d92548d2e2\n\ncommit efe0323947029df1c502599ccc288c8d676dfd31\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Nov 19 11:29:39 2010 -0800\n\n    Stagefright\u0027s MetaData object now supports rectangle items.\n\n    Change-Id: I5667bb5ee6622c76104b99fb57f60abb802a8504\n\nChange-Id: I27cb78f2c5e0353f95fdfc5cb53991949ed75b70\n"
    },
    {
      "commit": "482a1b16cb805920b427f0b1adca300571fda92d",
      "tree": "34bdcd1986621aa5f4265e0ca7d76e13ab267a74",
      "parents": [
        "86e735375eb4f681ec8501e12df4730397b4331c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Nov 19 11:45:16 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Nov 19 18:39:16 2010 -0800"
      },
      "message": "Display AVC video sample profile and level for \"stagefright\" util\n\nChange-Id: I04b3f67d162cf3827bc74ad98cd1e1a0f5f14172\n"
    },
    {
      "commit": "d7c8672ccc8ccd1f99da60accc63d6817d41ac52",
      "tree": "9fa8486829c5f9db3f579e6410f161e459cb7acc",
      "parents": [
        "c7bc3d09bda82c0641035966559b911785ccf90e"
      ],
      "author": {
        "name": "Olivier Bailly",
        "email": "olivier@google.com",
        "time": "Thu Nov 18 14:43:36 2010 -0800"
      },
      "committer": {
        "name": "Olivier Bailly",
        "email": "olivier@google.com",
        "time": "Thu Nov 18 14:43:36 2010 -0800"
      },
      "message": "fix int vs. pointer mismatch in return statement.\nAdd missing include header for compilation on x86 target.\n\nChange-Id: I3651fb3be0178b888c5ada3d3754fb379b55a847\n"
    },
    {
      "commit": "6b53e8daa69cba1a2a5a7c95a01e37ce9c53226c",
      "tree": "db912c6cdf230ef7f2cf406c545b3bbae3f09ea2",
      "parents": [
        "a914f340ae5b267dc3ab36c1156c795b8fa18f5d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Nov 10 16:03:06 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 18 09:49:03 2010 -0800"
      },
      "message": "Added support for full PC-style keyboards.\n\nBREAKING CHANGE: Redesigned the key character map format to\naccomodate full keyboards with more comprehensive suite of modifiers.\nOld key character maps will not work anymore and must be updated.\nThe new format is plain text only and it not compiled to a binary\nfile (so the \"kcm\" tool will be removed in a subsequent check-in).\n\nAdded FULL keyboard type to support full PC-style keyboards.\n\nAdded SPECIAL_FUNCTION keyboard type to support special function\nkeypads that do not have any printable keys suitable for typing\nand only have keys like HOME and POWER\n\nAdded a special VIRTUAL_KEYBOARD device id convention that maps\nto a virtual keyboard with a fixed known layout.  This is designed\nto work around issues injecting input events on devices whose\nbuilt-in keyboard does not have a useful key character map (ie.\nwhen the built-in keyboard is a special function keyboard only.)\n\nModified several places where events were being synthesized\nto use the virtual keyboard.\n\nRemoved support for the \"qwerty\" default layout.\nThe new default layout is \"Generic\".  For the most part \"qwerty\"\nwas being used as a backstop in case the built-in keyboard did\nnot have a key character map (probably because it was a special\nfunction keypad) and the framework needed to be able to inject\nkey events anyways.  The latter issue is resolved by using the\nspecial VIRTUAL_KEYBOARD device instead of BUILT_IN_KEYBOARD.\n\nAdded the concept of a key modifier behavior so that\nMetaKeyKeyListener can distinguish between keyboards that use\nchorded vs. toggled modifiers.\n\nWrote more robust key layout and key character map parsers\nto enable support for new keyboard features and user installable\nkey maps.\n\nFixed a bug in InputReader generating key ups when keys\nare released out of sequence.\n\nUpdated tons of documentation.\n\nCurrently QwertyKeyListener is being used for full keyboards\nwith autotext and capitalization disabled.  This mostly works\nbut causes some problems with character pickers, etc.\nThese issues will be resolved in subsequent changes.\n\nChange-Id: Ica48f6097a551141c215bc0d2c6f7b3fb634d354\n"
    },
    {
      "commit": "44ab8453e1c4c46790f792a46d026fa1017d8cfe",
      "tree": "9c499e6c6c1c894bd00c203e8ce6f815cf580187",
      "parents": [
        "64f1163084433952766eed31dbd26df420ba6cfb"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@google.com",
        "time": "Tue Nov 16 15:10:49 2010 -0800"
      },
      "committer": {
        "name": "Chris Tate",
        "email": "ctate@google.com",
        "time": "Tue Nov 16 16:57:29 2010 -0800"
      },
      "message": "Permission fix: don\u0027t require BACKUP perm for self-restores\n\nThe public API is not supposed to require the BACKUP permission in order\nfor an application to restore its own last-known-good backup data.  However,\nas currently implemented, BackupManager.requestRestore() [the public API\nin question] depends on private Backup Manager methods that *do* enforce\nthat permission.  The net result is that the method cannot be successfully\nused by third party applications: it will throw an exception if attempted.\nThis CL restructures the permission checking involved.\n\nFirst, the underlying beginRestoreSession() operation can now be passed a\n\u0027null\u0027 transport name; if this is done, then the restore session is begun\non whatever the currently-active transport is.  Looking up the name of the\nactive transport is one of the permission-guarded actions that was required\nwith the initial implementation.\n\nSecond, a package name can now be passed to beginRestoreSession().  If\nthis is done, then the restore session can only be used to perform a\nsingle-package restore of that one application.  The BACKUP permission is\nnot required if the caller is tying the restore to its own package name.\n\nIn combination, these changes permit BackupManager.requestRestore() to\nfunction without the calling app needing to hold any special permission.\nThe no-permission case is intentionally quite narrow:  the caller must\nhold the permission unless they both (a) pass \u0027null\u0027 for the transport\nname, thereby accepting whatever the currently active transport is, and\n(b) pass their own package name to restrict the restore session only\nto their own app.\n\nExternal bug http://code.google.com/p/android/issues/detail?id\u003d10094\nInternal bug 3197202\n\nChange-Id: Ibc9d652323f2da03727d850f991b4096af6520d2\n"
    },
    {
      "commit": "75611c8a97e93105f13e22c242ffd2f9672f87c7",
      "tree": "4ab3461e5f0c4b780bd6ac70f8dc16676fbc0d68",
      "parents": [
        "6e1a56d6c8304f24bfda17adc81022e2463d9a42"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Nov 14 10:57:28 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Nov 14 10:57:28 2010 -0800"
      },
      "message": "Switch to use kKeyFrameRate for recordvideo utility\n\nChange-Id: I3f6abfed9c39223fe5c1a1b9c094b7ce8a8ca67f\n"
    },
    {
      "commit": "93e496f0ba5cc1db29387e0c7ef9cd9193c89510",
      "tree": "4fef587a060174084bb7aad9be0ea0b21ec8584d",
      "parents": [
        "dfa448f759e0e91b788e2620a4cf7187b893d24e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 09 11:16:03 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 09 11:16:03 2010 -0800"
      },
      "message": "Added a commandline option \"-x\" to the stagefright commandline tool.\n\nTo display a histogram of decoding times and ideal frame rate distributions.\n\nChange-Id: Id8d70fd2960858c75f5f91ae9ebb9902ad5c37d3\n"
    },
    {
      "commit": "975d24d5af84bee8176877956468eb72347647d5",
      "tree": "57fe261d09971da7f09227ea5c9c628763ab74ab",
      "parents": [
        "b9def8e721fd646246d98a53c24a68737592f216",
        "2b799198bb8d6d4e5bc2f14a32ac7658b5ad3340"
      ],
      "author": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Thu Nov 04 14:53:17 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 04 14:53:17 2010 -0700"
      },
      "message": "Merge \"bugreport: Add bcm4329 internal counters dump\""
    },
    {
      "commit": "2b799198bb8d6d4e5bc2f14a32ac7658b5ad3340",
      "tree": "20d390b1864f6d20070275d34fedc39cff83a084",
      "parents": [
        "8182cd36cfbf5049f72b4be18f67c40ddef89d8b"
      ],
      "author": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Thu Nov 04 14:39:24 2010 -0700"
      },
      "committer": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Thu Nov 04 14:39:24 2010 -0700"
      },
      "message": "bugreport: Add bcm4329 internal counters dump\n\nChange-Id: I8e74bc1bf9a269e2a429ada1b1141d10cb7d914f\nSigned-off-by: Dmitry Shmidt \u003cdimitrysh@google.com\u003e\n"
    },
    {
      "commit": "e9418ffc5bb5ab443452af938e733a54cabdf9d7",
      "tree": "6a26126693935b075b485a72ec47439e6eacaf85",
      "parents": [
        "10644106b819acad4f88c3882d5688638951728c",
        "0d7c66b3a555356315c17da48969fee28181ceda"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Nov 04 10:57:34 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 04 10:57:34 2010 -0700"
      },
      "message": "am 0d7c66b3: Merge 42c94791 from open-source master\n\n* commit \u00270d7c66b3a555356315c17da48969fee28181ceda\u0027:\n  Fix the animation disappeared issue\n"
    },
    {
      "commit": "0d7c66b3a555356315c17da48969fee28181ceda",
      "tree": "7e2ee97d9ff616ba1a657ba3e2deb41befd05a83",
      "parents": [
        "c25c28a496012f64da57f5beb3b99f7424abb602",
        "42c94791b08022b9b214c1efb10b252567d1f0fa"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Nov 04 07:22:33 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Nov 04 07:22:44 2010 -0700"
      },
      "message": "Merge 42c94791 from open-source master\n\nChange-Id: Id17a1a787b6d46c44ba39d628129a3a27f6d70be\n"
    },
    {
      "commit": "2c3197bf46130e32194fbfeef6dc6a7940401215",
      "tree": "84be40ef6c8daf6e145a2bb6fa417be772d7c226",
      "parents": [
        "cbaff3c1c6ca28beb6956d60d326684eb614ea09"
      ],
      "author": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Wed Nov 03 16:59:47 2010 -0700"
      },
      "committer": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Wed Nov 03 16:59:47 2010 -0700"
      },
      "message": "bugreport: Fix dump of netcfg command\n\nChange-Id: Id2f507f4b094cd9cbe5c5eae9030321d1c3ed71a\nSigned-off-by: Dmitry Shmidt \u003cdimitrysh@google.com\u003e\n"
    },
    {
      "commit": "2978751310b4efef1faa87b116fcaee9423c007f",
      "tree": "1dd4b37421a49568191c4c37eb65f24b672ef1f2",
      "parents": [
        "9df48a0305818122298a86ae9949f6688814928b"
      ],
      "author": {
        "name": "Chih-Wei Huang",
        "email": "cwhuang@linux.org.tw",
        "time": "Wed Nov 03 15:33:00 2010 +0800"
      },
      "committer": {
        "name": "Chih-Wei Huang",
        "email": "cwhuang@linux.org.tw",
        "time": "Wed Nov 03 15:33:00 2010 +0800"
      },
      "message": "Fix the animation disappeared issue\n\nThe animation movie disappears due to the incorrect logic of\ncommit c11f46259a1e8f4e7e58925aefd1ed9eaf57a7fc.\n\nChange-Id: I9c0eac2bf2950fe20e931da367036ddf38d81f52\n"
    },
    {
      "commit": "7a0fc8776782a18374ec6e3b4418027c3c685b1a",
      "tree": "10c6de4405abf313c3d13cefbfd627e4d5090e60",
      "parents": [
        "de4077487dc32b3b00ec76f8f8ef11a02cccd0f2"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@google.com",
        "time": "Mon Nov 01 15:50:35 2010 -0700"
      },
      "committer": {
        "name": "Chris Tate",
        "email": "ctate@google.com",
        "time": "Mon Nov 01 15:50:35 2010 -0700"
      },
      "message": "Don\u0027t crash bmgr if there are no available restore sets\n\nProperly guard against a null set of available restore sets when\nvalidating the token passed to \u0027bmgr restore TOKEN\u0027 against what\u0027s\nknown to exist on the backend.\n\nFixes bug 3153986\n\nChange-Id: I74bdd4c6242f682833c1633baa4fefccb2b165a7\n"
    },
    {
      "commit": "95fb8396cad0f947f9d666c4c6b5a9fe4a39afde",
      "tree": "55e4f79fa1e9ba6dc808621c05c1080ffa7daf56",
      "parents": [
        "22c4b8958d0e794c372ded884e21fe765db42e43",
        "faf53c0bf2bd942cc06149364a5425396d958a23"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 22 12:31:26 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 22 12:31:26 2010 -0700"
      },
      "message": "am faf53c0b: am 40763914: Merge \"Exit immediately on some linklib failures\" into gingerbread\n"
    },
    {
      "commit": "faf53c0bf2bd942cc06149364a5425396d958a23",
      "tree": "0b1dbffb9a56ace1b15d250c82eea2315e50314a",
      "parents": [
        "02482e205a9cae28c9f0b40492c24b777b26dbdc",
        "40763914e3c999a88e2c8254317bc1ac7196ed37"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 22 12:18:46 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 22 12:18:46 2010 -0700"
      },
      "message": "am 40763914: Merge \"Exit immediately on some linklib failures\" into gingerbread\n"
    },
    {
      "commit": "2f791fd868043cf3de738300dceed324ea20842a",
      "tree": "754fbd7e43f8a4c0fbeac7a34734c714aea9cb2a",
      "parents": [
        "eb95b0877aa386938ed20e9429a211eac8b8b805"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Oct 07 13:38:09 2010 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Fri Oct 22 09:48:19 2010 -0700"
      },
      "message": "Change dumpstate so the logs use threadtime instead of time as the default.\n\nThe threadtime option display both the pid and tid which can\nassist pinpointing bugs.\n\nChange-Id: Ib4620d3534a59b291507b757352f9fecb06f7cef\n"
    },
    {
      "commit": "eb95b0877aa386938ed20e9429a211eac8b8b805",
      "tree": "73ceba181879f8468b27bcaecc68358947e0f23d",
      "parents": [
        "8d0083423ff338abdd6a4d74dd008409abaaa4fd"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Thu Oct 21 14:54:19 2010 -0400"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Oct 22 12:36:07 2010 -0400"
      },
      "message": "Show app services in adb bugreport (dumpstate).\n\nThere is a 60s timeout for this command.  I\u0027d rather do it as an individual timeout\nfor each of the services, but this is easier and will probably cover for busted apps\nwell enough.  Also, this is running last in dumpstate, so if it\u0027s lost... oh well.\n\nAlso, clean up the formatting of the service dump so it\u0027s more readable in bugreport.\n\nChange-Id: Ibd727f4b3366f7af9e7ef1e231868f5cedc48132\n"
    },
    {
      "commit": "0332d1c5a5a0353df9e9b02422b33656930c2941",
      "tree": "4d10e11973d21478b437de7b0f62e12ddbff846c",
      "parents": [
        "703aae06c0925b19657877bb1872bb2f28874969"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 21 16:14:06 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 21 16:14:06 2010 -0700"
      },
      "message": "Exit immediately on some linklib failures\n\nIf the library couldn\u0027t be printed to the string, installd should fail\nearly instead of trying to chmod() back to uninitialized stat struct.\n\nBug: 3121721\nChange-Id: I8a3604954ae657a1e07c1ad8d5569aa80aff9e0a\n"
    },
    {
      "commit": "c7912444448d84d0fc70554a1a36e18a882c8f62",
      "tree": "77e8278a9d616037bcf7e283f7f909b8d26aecca",
      "parents": [
        "a35827a8e92c79e200610e93549d7191fe701b19",
        "9a430d8c0e376160f287e50cdad99177e69ec384"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Oct 21 15:31:07 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 15:31:07 2010 -0700"
      },
      "message": "am 9a430d8c: am 62d0970c: Merge \"allow dumpstate to work for non-root users.\" into gingerbread\n\nMerge commit \u00279a430d8c0e376160f287e50cdad99177e69ec384\u0027\n\n* commit \u00279a430d8c0e376160f287e50cdad99177e69ec384\u0027:\n  allow dumpstate to work for non-root users.\n"
    },
    {
      "commit": "9a430d8c0e376160f287e50cdad99177e69ec384",
      "tree": "ffe9768e8153728914a31aa79ef8e76b1e7f7b47",
      "parents": [
        "33051ad1785a84ad5d814d6acf337b54d5fab36c",
        "62d0970c82f9a2c17aea67379c207a3f17556c46"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Oct 21 11:50:55 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 11:50:55 2010 -0700"
      },
      "message": "am 62d0970c: Merge \"allow dumpstate to work for non-root users.\" into gingerbread\n\nMerge commit \u002762d0970c82f9a2c17aea67379c207a3f17556c46\u0027 into gingerbread-plus-aosp\n\n* commit \u002762d0970c82f9a2c17aea67379c207a3f17556c46\u0027:\n  allow dumpstate to work for non-root users.\n"
    }
  ],
  "next": "77d87aa7ff352a4867d8a6e2a73fadeb3152c7eb"
}
