)]}'
{
  "log": [
    {
      "commit": "0ff6d7ee17de33d314ef726e7506b39c64a3ed35",
      "tree": "2cd045b94d4fe7bf8e707457cc63523ea8d80ab6",
      "parents": [
        "5ecc4601ea2672e1e52bcd0860908d1cae7db4c2",
        "ac8a1b21986f06d0e54ddebb1e4962de23eb77ea"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 23 10:26:38 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 23 10:26:38 2011 -0700"
      },
      "message": "Merge \"Reinitialize KeyStore::mMasterKey after unlock (and add test-keystore)\""
    },
    {
      "commit": "ac8a1b21986f06d0e54ddebb1e4962de23eb77ea",
      "tree": "b7de3900b87360ccd4d9da2409e7208020d4723e",
      "parents": [
        "cf559377b750271472aa0a717bf3b7d34abc0b39"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 23 00:58:19 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 23 02:10:23 2011 -0700"
      },
      "message": "Reinitialize KeyStore::mMasterKey after unlock (and add test-keystore)\n\nBug: 4599735\n\nChange-Id: Iee38a2e2929c45b6405214c9012819da09b273af\n"
    },
    {
      "commit": "65f993e0d8ea366bc5178423675ef3299eae3102",
      "tree": "25ce9d37eecea10aef5054dd5a6c7954e834240d",
      "parents": [
        "8969d9924c662ab4cdacc342bbdc33756db730be"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 22 14:57:25 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 22 14:57:25 2011 -0700"
      },
      "message": "Reconstruct sync frame indication for content served by the MPEG2TSExtractor\n\nStrip data up to the first IDR frame if necessary.\n\nChange-Id: I4a096785eb1a17b7484983788e223d188454771d\n"
    },
    {
      "commit": "e26e96bcc19b1cdac690d21b3986f09a502739e6",
      "tree": "cd6054763d0a2043088027f9cac129ecef27beb0",
      "parents": [
        "3106a9b7f5c5c6a62d3fa5772d8c2bb41d22c6eb"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 10 18:33:16 2011 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 20 19:26:31 2011 -0700"
      },
      "message": "Pass the data fd number as a command line argument to \u0027bu\u0027\n\nThis way we don\u0027t have to muck with stdin/stdout just to get known\nfds for data handling.\n\nChange-Id: If87d19f4867c883a32d4e9afb91b915511b9df19\n"
    },
    {
      "commit": "0ac3031c159a0904e73eb4439cdc724d8df4a6e6",
      "tree": "27d80b0cb1d37b10c898340348ae863014c4a6e0",
      "parents": [
        "3a3efe756389cbda3ddf74c0c55d7a3ce68f3780"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 17 14:49:23 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 17 14:49:45 2011 -0700"
      },
      "message": "Implement remaining infrastructure for user disabling apps.\n\nChange-Id: If8135eb0e27ec36f8f159eb7b6397add7acd0299\n"
    },
    {
      "commit": "6e4ba2bf35c3c45dc829e5a863fa437d976d86f0",
      "tree": "861367e837d5d1208e846d71589f3dbc121deec8",
      "parents": [
        "decbe327d1515dd6c9fd1b6773f57b0a879f9149",
        "78b9c381aacff14536848c0e183bec3b83b02672"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 13 18:47:20 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 13 18:47:20 2011 -0700"
      },
      "message": "Merge \"Add an option to force to use HW codec in stagefright cmd tool\""
    },
    {
      "commit": "78b9c381aacff14536848c0e183bec3b83b02672",
      "tree": "61f26d8eafd82e3d63f114f27c148a8dcbd59df2",
      "parents": [
        "622d5441975fa16636d3304d42d27659af14cb49"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 13 17:20:27 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 13 17:23:01 2011 -0700"
      },
      "message": "Add an option to force to use HW codec in stagefright cmd tool\n\nChange-Id: If6c277dd5a3f7a0b62acd6721343618b0be085fc\n"
    },
    {
      "commit": "7bb843ca0777111dae7daf8f1b0705817cf523c4",
      "tree": "10545edc3ce21f38282d5e67e5bc08ff729884b3",
      "parents": [
        "dfc7958a2eafba52db90743a4707eed1d780b63b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:20:59 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 13 15:51:35 2011 -0700"
      },
      "message": "unify SurfaceTexture and Surface\n\nAdd the concept of synchronous dequeueBuffer in SurfaceTexture\nImplement {Surface|SurfaceTextureClient}::setSwapInterval()\nAdd SurfaceTexture logging\nfix onFrameAvailable\n"
    },
    {
      "commit": "f741e679c496f7345304a6543f01d7048e31d1a7",
      "tree": "e53a3b9f98c16611761a062dc0d60828ce74b365",
      "parents": [
        "aab49b40e8dd78aca67db160f5d0c787379c8f7f",
        "e2aa04908cfdf65ef309f1491f31a0c8846977ff"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 17:50:36 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 17:50:36 2011 -0700"
      },
      "message": "resolved conflicts for merge of e2aa0490 to master\n\nChange-Id: Id0448a1598fc93aca0652b29253e02586e35a067\n"
    },
    {
      "commit": "a1396dfe7ad6ec6953f544be42d69d7804ab0fd4",
      "tree": "f991e5d319b209f51e588cad2e0d032de9cf38f7",
      "parents": [
        "735463d1d9a1e490fa6b30d4273d24fc2f12bcd9",
        "021408910af170268cb486910d4dd5a7d838c2bb"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 08 20:02:43 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 08 20:02:43 2011 -0700"
      },
      "message": "am 02140891: Merge \"Work on issue #4518815: Compatibility mode introduces compatibility regression...\" into honeycomb-mr2\n\n* commit \u0027021408910af170268cb486910d4dd5a7d838c2bb\u0027:\n  Work on issue #4518815: Compatibility mode introduces compatibility regression...\n"
    },
    {
      "commit": "5fd2169eabd77e6bfafaf456e58051a3bafb2bca",
      "tree": "77048c3540c64cad77e5c140b6477a321190c586",
      "parents": [
        "4381f6421ca408d1dc66430ddfb107c5011bfe25"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 07 14:09:47 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 08 18:45:43 2011 -0700"
      },
      "message": "Work on issue #4518815: Compatibility mode introduces compatibility regression...\n\n...for Market App iRunner\n\nThere were a lot of serious issues with how we updated (or often didn\u0027t update)\nthe display and resource state when switching compatibility mode in conjunction\nwith restarting and updating application components.  This addresses everything\nI could find.\n\nUnfortunately it does *not* fix this particular app.  I am starting to think this\nis just an issue in the app.  This change does fix a number of other problems\nI could repro, such as switching the compatibility mode of an IME.\n\nAlso a few changes here and there to get rid of $#*\u0026^!! debug logs.\n\nChange-Id: Ib15572eac9ec93b4b9966ddcbbc830ce9dec1317\n"
    },
    {
      "commit": "b5c462f801ec0a0b9dec99232b46f91e91984938",
      "tree": "20ffef97c8b3c951ffbd0e52a5005ccc077eb83f",
      "parents": [
        "8643aa0179e598e78d938c59035389054535a229",
        "351f32270a489577e040bbeccc423b0bac1637dc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 06 19:01:48 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 06 19:01:48 2011 -0700"
      },
      "message": "Merge \"Add force-stop subcommand for \u0027am\u0027.\""
    },
    {
      "commit": "e2afc2420d29c2d3d04a05ed5839c12f3b267b23",
      "tree": "d4e220241aa68bb8891f9d2c19c56d19eebc0126",
      "parents": [
        "aef1987f4e53efdc29216ac66d7412678a762b2e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 02 16:21:55 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 02 16:24:45 2011 -0700"
      },
      "message": "KeyStore.reset changes\n\nrestore keystore reset behavior of removing master key.\notherwise after reboot keystore has is LOCKED and not UNINITIALIZED\n\tcmds/keystore/keystore.cpp\n\nwhen removing password, reset the keystore, so it doesn\u0027t remain\nlocked with a now bogus password.\n\n\tcore/java/com/android/internal/widget/LockPatternUtils.java\n\nChange-Id: If5e0bb50b42599e9ca27a8b91d6cec12528419a1\n"
    },
    {
      "commit": "1a536e642f5078167d18277c56f60090d8d46364",
      "tree": "2e9452c8f2287242e9b0eaaec04ca0055ad1c8e7",
      "parents": [
        "cb0975b3c1c73d8bcadaca80e1ee99383750af60",
        "75a99709accef8cf221fd436d646727e7c8dd1f1"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 01 15:14:36 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 01 15:14:36 2011 -0700"
      },
      "message": "Merge \"Restore from a previous full backup\u0027s tarfile\""
    },
    {
      "commit": "75a99709accef8cf221fd436d646727e7c8dd1f1",
      "tree": "9ce16dbf95890e8dad57d63724a6cdb3d36d6fb9",
      "parents": [
        "2978cef0a77550ea3a364ffbf42fc43f2029070e"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed May 18 16:28:19 2011 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 01 15:09:55 2011 -0700"
      },
      "message": "Restore from a previous full backup\u0027s tarfile\n\nUsage:  adb restore [tarfilename]\n\nRestores app data [and installs the apps if necessary from the backup\nfile] captured in a previous invocation of \u0027adb backup\u0027.  The user\nmust explicitly acknowledge the action on-device before it is allowed\nto proceed; this prevents any \"invisible\" pushes of content from the\nhost to the device.\n\nKnown issues:\n\n* The settings databases and wallpaper are saved/restored, but lots\n  of other system state is not yet captured in the full backup.  This\n  means that for practical purposes this is usable for 3rd party\n  apps at present but not for full-system cloning/imaging.\n\nChange-Id: I0c748b645845e7c9178e30bf142857861a64efd3\n"
    },
    {
      "commit": "5cfee3fabb3482c6a6df1c8b6f21e843cf214527",
      "tree": "c4190f1fa809eb1e5e7d028f21be510b2a5b3980",
      "parents": [
        "9b4157935af9e44571187a9533c2cc9b413383bf"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 31 01:00:15 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 01 14:29:59 2011 -0700"
      },
      "message": "Integrating keystore with keyguard (Part 1 of 4)\n\nSummary:\n\nframeworks/base\n  keystore rewrite\n  keyguard integration with keystore on keyguard entry or keyguard change\n  KeyStore API simplification\n\npackages/apps/Settings\n  Removed com.android.credentials.SET_PASSWORD intent support\n  Added keyguard requirement for keystore use\n\npackages/apps/CertInstaller\n  Tracking KeyStore API changes\n  Fix for NPE in CertInstaller when certificate lacks basic constraints\n\npackages/apps/KeyChain\n  Tracking KeyStore API changes\n\nDetails:\n\nframeworks/base\n\n   Move keystore from C to C++ while rewriting password\n   implementation. Removed global variables. Added many comments.\n\n\tcmds/keystore/Android.mk\n\tcmds/keystore/keystore.h\n\tcmds/keystore/keystore.c \u003d\u003e cmds/keystore/keystore.cpp\n\tcmds/keystore/keystore_cli.c \u003d\u003e cmds/keystore/keystore_cli.cpp\n\n   Changed saveLockPattern and saveLockPassword to notify the keystore\n   on changes so that the keystore master key can be reencrypted when\n   the keyguard changes.\n\n\tcore/java/com/android/internal/widget/LockPatternUtils.java\n\n   Changed unlock screens to pass values for keystore unlock or initialization\n\n\tpolicy/src/com/android/internal/policy/impl/PasswordUnlockScreen.java\n\tpolicy/src/com/android/internal/policy/impl/PatternUnlockScreen.java\n\n   KeyStore API changes\n   - renamed test() to state(), which now return a State enum\n   - made APIs with byte[] key arguments private\n   - added new KeyStore.isEmpty used to determine if a keyguard is required\n\n\tkeystore/java/android/security/KeyStore.java\n\n   In addition to tracking KeyStore API changes, added new testIsEmpty\n   and improved some existing tests to validate expect values.\n\n\tkeystore/tests/src/android/security/KeyStoreTest.java\n\npackages/apps/Settings\n\n    Removing com.android.credentials.SET_PASSWORD intent with the\n    removal of the ability to set an explicit keystore password now\n    that the keyguard value is used. Changed to ensure keyguard is\n    enabled for keystore install or unlock. Cleaned up interwoven\n    dialog handing into discrete dialog helper classes.\n\n\tAndroidManifest.xml\n\tsrc/com/android/settings/CredentialStorage.java\n\n    Remove layout for entering new password\n\n\tres/layout/credentials_dialog.xml\n\n    Remove enable credentials checkbox\n\n\tres/xml/security_settings_misc.xml\n\tsrc/com/android/settings/SecuritySettings.java\n\n    Added ability to specify minimum quality key to ChooseLockGeneric\n    Activity. Used by CredentialStorage, but could also be used by\n    CryptKeeperSettings. Changed ChooseLockGeneric to understand\n    minimum quality for keystore in addition to DPM and device\n    encryption.\n\n\tsrc/com/android/settings/ChooseLockGeneric.java\n\n    Changed to use getActivePasswordQuality from\n    getKeyguardStoredPasswordQuality based on experience in\n    CredentialStorage. Removed bogus class javadoc.\n\n\tsrc/com/android/settings/CryptKeeperSettings.java\n\n    Tracking KeyStore API changes\n\n\tsrc/com/android/settings/vpn/VpnSettings.java\n\tsrc/com/android/settings/wifi/WifiSettings.java\n\n   Removing now unused string resources\n\n\tres/values-af/strings.xml\n\tres/values-am/strings.xml\n\tres/values-ar/strings.xml\n\tres/values-bg/strings.xml\n\tres/values-ca/strings.xml\n\tres/values-cs/strings.xml\n\tres/values-da/strings.xml\n\tres/values-de/strings.xml\n\tres/values-el/strings.xml\n\tres/values-en-rGB/strings.xml\n\tres/values-es-rUS/strings.xml\n\tres/values-es/strings.xml\n\tres/values-fa/strings.xml\n\tres/values-fi/strings.xml\n\tres/values-fr/strings.xml\n\tres/values-hr/strings.xml\n\tres/values-hu/strings.xml\n\tres/values-in/strings.xml\n\tres/values-it/strings.xml\n\tres/values-iw/strings.xml\n\tres/values-ja/strings.xml\n\tres/values-ko/strings.xml\n\tres/values-lt/strings.xml\n\tres/values-lv/strings.xml\n\tres/values-ms/strings.xml\n\tres/values-nb/strings.xml\n\tres/values-nl/strings.xml\n\tres/values-pl/strings.xml\n\tres/values-pt-rPT/strings.xml\n\tres/values-pt/strings.xml\n\tres/values-rm/strings.xml\n\tres/values-ro/strings.xml\n\tres/values-ru/strings.xml\n\tres/values-sk/strings.xml\n\tres/values-sl/strings.xml\n\tres/values-sr/strings.xml\n\tres/values-sv/strings.xml\n\tres/values-sw/strings.xml\n\tres/values-th/strings.xml\n\tres/values-tl/strings.xml\n\tres/values-tr/strings.xml\n\tres/values-uk/strings.xml\n\tres/values-vi/strings.xml\n\tres/values-zh-rCN/strings.xml\n\tres/values-zh-rTW/strings.xml\n\tres/values-zu/strings.xml\n\tres/values/strings.xml\n\npackages/apps/CertInstaller\n\n  Tracking KeyStore API changes\n\tsrc/com/android/certinstaller/CertInstaller.java\n\n  Fix for NPE in CertInstaller when certificate lacks basic constraints\n\tsrc/com/android/certinstaller/CredentialHelper.java\n\npackages/apps/KeyChain\n\n  Tracking KeyStore API changes\n\tsrc/com/android/keychain/KeyChainActivity.java\n\tsrc/com/android/keychain/KeyChainService.java\n\tsupport/src/com/android/keychain/tests/support/IKeyChainServiceTestSupport.aidl\n\tsupport/src/com/android/keychain/tests/support/KeyChainServiceTestSupport.java\n\ttests/src/com/android/keychain/tests/KeyChainServiceTest.java\n\nChange-Id: Ic141fb5d4b43d12fe62cb1e29c7cbd891b4be35d\n"
    },
    {
      "commit": "c12b7ba81ec3b486f21394810d827258ba888ee4",
      "tree": "5de67d889b0084a54ec5678636d8b5bd3ec22888",
      "parents": [
        "a8607644026b5cd0860a897e80e491de41b64232"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 26 21:52:39 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 27 16:35:11 2011 -0700"
      },
      "message": "sensorservice can now be ran standalone\n\nChange-Id: I6e757f31f1e020046038e5ab84e71b8689a0aed3\n"
    },
    {
      "commit": "351f32270a489577e040bbeccc423b0bac1637dc",
      "tree": "65ada0e6cbf429e7cb094d536d5c84746c56bc87",
      "parents": [
        "8eed7aded77b826738c82cfe3b6a1440ac0786d9"
      ],
      "author": {
        "name": "Xianzhu Wang",
        "email": "wangxianzhu@google.com",
        "time": "Fri May 13 15:46:20 2011 +0800"
      },
      "committer": {
        "name": "Xianzhu Wang",
        "email": "wangxianzhu@google.com",
        "time": "Fri May 27 10:26:04 2011 +0800"
      },
      "message": "Add force-stop subcommand for \u0027am\u0027.\n\nIt\u0027s useful for some testing and debugging, to ensure all processes\nare stopped before testing. \u0027kill\u0027 doesn\u0027t always work because sometimes the\nsystem will restart the process immediately (e.g. if an app is running in\nbackground).\n\nChange-Id: I2c0caa38f74ee65ad6c35172fbf505227be7e7c3\n"
    },
    {
      "commit": "5e34a1945a6b26dff5551a37627c5216b076d896",
      "tree": "ad320f5935177d91c59136df2f65544c3a08c332",
      "parents": [
        "101139cc8f5b975dfacf1a2ffd3bdae8e3907f65",
        "1d8f8819f1e98cdf3b7756396158613e95fe9eb6"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 26 13:34:42 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 26 13:34:42 2011 -0700"
      },
      "message": "am 1d8f8819: Merge \"Break apart queries to getInstalled* API DO NOT MERGE\" into honeycomb-mr2\n\n* commit \u00271d8f8819f1e98cdf3b7756396158613e95fe9eb6\u0027:\n  Break apart queries to getInstalled* API DO NOT MERGE\n"
    },
    {
      "commit": "e8b26dcec7765786bbf063b3ae6b967b8b547ab6",
      "tree": "0300409c65c578b2b800795345423d27f782bd7c",
      "parents": [
        "3453b1c584f456a18f17d74a72c044b4e39c6405"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 25 15:02:50 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 26 11:31:16 2011 -0700"
      },
      "message": "Extract embedded cover art (aka poster frame) in mp4 files\n\nChange-Id: Ic9421ee27b9aa3b27df00878b887de20f25d232b\n"
    },
    {
      "commit": "1bb6cf18c0039cb9d2a60713ea34d3709af58c5c",
      "tree": "ca4c1bb52197b19df287cd4dbc4cd972ce454eef",
      "parents": [
        "42f8094c066209a65b09d53611ef5c93daba4c51"
      ],
      "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": "Thu May 26 09:53:24 2011 -0700"
      },
      "message": "Break apart queries to getInstalled* API DO NOT MERGE\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: Ia3a8cdaa94581ed9336f2e05694b8c8a5f757bce\n"
    },
    {
      "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"
    }
  ],
  "next": "1bb0ffd0981bec26f906bc62d449e136111af4f8"
}
