)]}'
{
  "log": [
    {
      "commit": "ff1ec4d9e7b7eb1b6303d147c796f8767ee6715b",
      "tree": "2c89c758b994e749f380db7c3156fc04c9e226ca",
      "parents": [
        "f1f28d1d86aea6dd1419e94aadf051e433914680"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 17 15:21:35 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 06 15:06:25 2014 -0700"
      },
      "message": "Use package usage information to decide what dex files to optimize in PackageManagerService\n\nChange-Id: Iac137311e2e9d5139b5aa8651c6f3d296802612a\n"
    },
    {
      "commit": "393fbe71f85288efaf452cb646ae0cc5c1073c92",
      "tree": "285f8bcb35a51c4c6994846d4d38db8094f5532e",
      "parents": [
        "ab3977d21161815c130bdedf21e2571382d208da"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 10 13:39:25 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 01 14:12:14 2014 -0700"
      },
      "message": "Minor cleanup of UsageStatsService\n\nChange-Id: Idea0e29f347d14e48e87aad38a261d0493bd5fd3\n"
    },
    {
      "commit": "f465db9f1d6da1c94af66b64e0450aba72ee8824",
      "tree": "375fa50285fc6d2f83d458ff6ca1ec12b5bf65ec",
      "parents": [
        "27f2bfc406157039c5241f6a4f38f597b2076e2a"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 13:33:38 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 13:56:43 2014 +0000"
      },
      "message": "Don\u0027t adjust ABI if PackageSetting#pkg is null.\n\nIf means the package hasn\u0027t been scanned yet, and we\nwill adjust the ABI during the scan of the last package\nin the shared user group.\n\nNOTE: This needs some more cleaning up, which will be\ndone along with the remaining TODO in this function.\n\n(cherry picked from commit 6609990e35b11c38f55f6e632160d4f2ff201ea3)\n\nChange-Id: Ibace7849485865054e062d2b979f320bf89ff0f3\n"
    },
    {
      "commit": "57156572a7284c3b774480f9b0138d5cd110a182",
      "tree": "0b7728d57dbf31a14e7944e80af67f960620cd4d",
      "parents": [
        "bcc3b312b0662ae2f8b8444eaedd5f35fc75c411"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Apr 29 16:49:27 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 13:56:22 2014 +0000"
      },
      "message": "Fix dex file pruning logic.\n\nWe should now prune all normal files from /data/dalvik-cache\nin addition to looking for dex files in all subdirectories of\n/data/dalvik-cache.\n\n(cherry picked from commit 51a6f9253399588eedf77d75c578d9aa23d11529)\n\nChange-Id: I536dfdc48e94155e7be64eb4efd9f7f2a1d2d00a\n"
    },
    {
      "commit": "1b46093d33a0fa4d316d65288ef3b3ac5b77a4a2",
      "tree": "372976a7b5a12702ca008ec8be6cf18d237e1519",
      "parents": [
        "2a9a047140b8da8f9cd7147c8bed60eeb61d1b6a"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Apr 28 14:18:34 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 13:55:35 2014 +0000"
      },
      "message": "Adjust instruction sets for shared UID apps.\n\nSince shared UID apps are run in the same process,\nwe\u0027ll need to make sure they\u0027re compiled for the same\ninstruction set.\n\nThis change implements the recompilation of apps that\ndon\u0027t have any ABI constraints.\n\nApps that *do* have ABI constraints are harder to deal\nwith, since we\u0027ll need to rescan them to figure out the\nfull list of ABIs they support and then re-extract the\nnative libraries from these apps once we find an ABI we\ncan use throughout.\n\n(cherry picked from commit 85703d58af1dac692d7d83c03220e45ab2a5aded)\n\nChange-Id: I8311a683468488cc7e30381965487a3d391609ae\n"
    },
    {
      "commit": "0349e8c4785ed467d8de2ff383e28be3e41bdc3b",
      "tree": "879534fb65405fa603d5fc16599ca154e673b97c",
      "parents": [
        "645a920fd2c478c545c6bb659f2eab36545fe116"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 11:41:20 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 13:54:48 2014 +0000"
      },
      "message": "Package manager changes for dual zygote stack.\n\n- Pass down the app\u0027s instruction set to dexopt so that\n  it can compile the dex file for the right architecture.\n\n- Also pass down the app\u0027s instruction set to rmdex, movedex\n  and getSize so that they can construct the cache file\n  location properly.\n\n- Temporarily compile \"system\" jars such as am,wm etc. for\n  both architectures. A follow up change will ensure that\n  they\u0027re compiled only for one architecture (the same\n  arch. as the system server).\n\n- Java \"shared\" libraries are now compiled for the right\n  architecture when an app requires them.\n\n- Improve the app native library ABI detection to account\n  for system apps installed in /system/lib{64}/\u003cpackagename\u003e\n  and also handle sdcard and forward locked apps correctly.\n\n(cherry-picked from commit b4d35dc8e9702f9d0d82d35a105f0eea35672b52)\n"
    },
    {
      "commit": "66309e2bf70607bc0ff2cf5c0769c2a37c4ce76d",
      "tree": "5eadeb9932cefb5fb3b012ae9b1b5265e8aaa89d",
      "parents": [
        "986b901ae280928e91193527f7c883b296fc62fc"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Apr 24 14:11:08 2014 -0700"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 13:52:33 2014 +0000"
      },
      "message": "Fix OEM native library path bug.\n\nBug: 13340779\n\n(cherry picked from commit 7d3328d14bbbee01a9de1ff5b13b0446c709d835)\n\nChange-Id: I1b4c5d138cafe3651d475ca1e048f495ff6c5f10\n"
    },
    {
      "commit": "c38a807b2f192bd1413989b70cc42ead9299d4b3",
      "tree": "58b0e53fbec9a08244439bb08687ab1b98fc65f2",
      "parents": [
        "fde594288bff0b8f95567e6b27f273f50f0c5f87"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Apr 23 16:55:57 2014 -0700"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 13:52:06 2014 +0000"
      },
      "message": "Fix native-lib dir assignment \u0026 updating\n\nThe per-package /system/lib/* feature introduced bugs in the\nnative library path handling during app upgrade installs.  The\ncrux of the fix is that when recalulating the desired native\nlibrary directory, the basis for the calculation needs to be\nthe scanned APK\u0027s location rather than the extant package\nsettings entry -- because that entry refers to the pre-upgrade\nstate of the application, not the new state.\n\nBug 14233983\n\n(cherry picked from commit 353e39a973dbbadce82fee2f83ad194e04a47449)\n\nChange-Id: I26f17a596ca2cd7f963955c0642548c15138ae26\n"
    },
    {
      "commit": "c84471c2e07c325e81568c4d764716f14fcb19fe",
      "tree": "bf96398642c99dc327ab13ce147cec0566c22277",
      "parents": [
        "d91358b2b977ef7c3551a486f51475c0441aba6e"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Apr 18 12:24:57 2014 -0700"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 13:51:33 2014 +0000"
      },
      "message": "Handle /oem and /vendor as well\n\nBug 13170859\n\n(cherry-picked from commit 740888f62eae158d5775be716620f0d56d87f587)\n\nChange-Id: I7b5e206697fcbec146cac6cd83fca5c583a8cbd7\n"
    },
    {
      "commit": "fc0810e565b269bc9d8f072ef0ab7365e035c630",
      "tree": "c2f3d4b57108f1bc089af03e4f1cfac31b0817e1",
      "parents": [
        "b916d8adffd7ea3588bc178e1ee03f68f0a409e5"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 13:35:34 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 13:50:47 2014 +0000"
      },
      "message": "Support per-package lib dirs for bundled apps\n\nBundled apps can now use /system/lib/apkname or /system/lib64/apkname\nin addition to the (globally shared) /system/lib and /system/lib64\ndirectories.  Note that when an app is updated post hoc the update APK\nwill look to its normal library install directory in\n/data/data/[packagename]/lib, so such updates must include *all*\nneeded libraries -- the private /system/lib/apkname dir will not be in\nthe path following such an update.\n\n\"apkname\" here is the base name of the physical APK that holds the\npackage\u0027s code.  For example, if a 32-bit package is resident on disk\nas /system/priv-app/SettingsProvider.apk then its app-specific lib\ndirectory will be /system/lib/SettingsProvider\n\nBug 13170859\n\n(cherry picked from commit addfbdc09ccf258395db8bfc510989a4c583f7ab)\n\nChange-Id: Id82da78024a6325458b8b134d7d91ad0e5f0785e\n"
    },
    {
      "commit": "34385d352da19805ae948215e2edbeedd16b7941",
      "tree": "5295ae3854135ea3cb0c57698971ee17f47ea46c",
      "parents": [
        "3f4867f49d6c1932117e3519ce10d11f37829f19"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 28 11:11:32 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 28 11:11:32 2014 -0700"
      },
      "message": "Track libcore.os\u0027 move to android.system.\n\n(This is partial, but should cover everything in AOSP master except\nfor the zygote.)\n\nChange-Id: I1042c99245765746a744c44e714095cb2c6cb75d\n"
    },
    {
      "commit": "cacbe1b1ef01aff8726726edaf43d0b449319afe",
      "tree": "22e91a2dbc48f55d53c587248d52c243f3b94f1b",
      "parents": [
        "dbb0de21d35343504b096ae6cbf97d122ac410c9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 23 17:58:57 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 24 16:19:27 2014 -0700"
      },
      "message": "Use the suggested public API instead of libcore.os.\n\nChange-Id: Id392e4c36c5721ca609d88d9ec6b9340ce05274c\n"
    },
    {
      "commit": "43582df3dbcad1b1734b570c74246f5ff2f58027",
      "tree": "4ecd554e097e3e22dbade9123528628dd595c9d9",
      "parents": [
        "53b7df19cf287ea48b2ce27ab9cd7ddbc3d04330"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Fri Apr 11 17:29:54 2014 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Apr 23 16:40:35 2014 +0000"
      },
      "message": "Changes to support asynchronous close interruption\n\nThis change contains fixes to base from libcore change\nI37de3e7d1a005a73821221e6156d10b95c595d7a\n\nBug: 13927110\n\nChange-Id: I2d96e50307611c269dcf47886cd4d976854da8fc\n"
    },
    {
      "commit": "d267c1a06fc91dc300d5c5f8b7ef9bd44825c34e",
      "tree": "21e41947ef1dfb560cd8ee54d6420e44e0846c7d",
      "parents": [
        "a67d4a6e4da1eb02a15a1048a26329cfed312938",
        "c826257bf36fa6c73a23f799dc819a7aeb5a26bf"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 22 19:24:47 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 22 19:24:47 2014 +0000"
      },
      "message": "Merge \"remove unneeded import statements.\""
    },
    {
      "commit": "c826257bf36fa6c73a23f799dc819a7aeb5a26bf",
      "tree": "ab5709c7aa560f30e5e570b2b32606239f7a74fb",
      "parents": [
        "fc3c6a0ef36cc4969aa7d8e160cc55f30c653325"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 22 12:17:51 2014 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 22 12:17:51 2014 -0700"
      },
      "message": "remove unneeded import statements.\n\nInternal master is out of sync with AOSP. Resync.\n\nChange-Id: Ia3105a4b6eb835f719471a26ae4cb33962c5b19e\n"
    },
    {
      "commit": "8cb5abcfde8f510bb628b8143104af3edec69f7d",
      "tree": "9ce021509cb1a2ec3ff6f896cdb31d300586caeb",
      "parents": [
        "fc3c6a0ef36cc4969aa7d8e160cc55f30c653325"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 22 12:10:24 2014 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 22 12:10:24 2014 -0700"
      },
      "message": "remove unused import.\n\nThis change resynchronizes AOSP with internal master.\nThe import line is unused.\n\nChange-Id: I98bef1f88dee758f5bdcec35fba204f793d4028e\n"
    },
    {
      "commit": "d2a11d97a94bed18629bded429f118f57f4f7821",
      "tree": "9cfe385467e13bbf666db8cfb5927160dbe2a6a6",
      "parents": [
        "909a6a0e2b5815332618b2cf731d27824a76d042",
        "2a39c6ff73f3e2610f7624bf5966f2ee2f6e1923"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 11 17:14:39 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 11 17:14:39 2014 +0000"
      },
      "message": "Merge \"Add explicit close of Scanner input\""
    },
    {
      "commit": "ff0c470833b2cb4130a30895093630242d5f238d",
      "tree": "577b9403462e503c76bedd337106b72327a87419",
      "parents": [
        "1378aba7aeeb7f6dd6cc2503968ba7b0e58d9333"
      ],
      "author": {
        "name": "Ramin Zaghi",
        "email": "ramin.zaghi@arm.com",
        "time": "Tue Apr 01 15:02:29 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 17:20:13 2014 +0100"
      },
      "message": "System services detect and register app CPU ABIs\n\nThis patch uses the NativeLibraryHelper class to\nmatch native libraries in an .apk package with\nthose listed in \u0027ro.cpu.abilist\u0027 property.\nThe result is stored in packages.xml and the\nApplicationInfo class.\n\nThis information will be used by the ActivityManager\nto decide which zygote to use to launch the given\napp.\n\nChange-Id: I3ec3d050996d8f4621f286ca331b9ad47ea26fa0\n"
    },
    {
      "commit": "1378aba7aeeb7f6dd6cc2503968ba7b0e58d9333",
      "tree": "7c69781ce86ea7fcf88775cb514a49a7824898f9",
      "parents": [
        "a6f5e79dd182b05909fa53109e74638afcd7ee12"
      ],
      "author": {
        "name": "Ramin Zaghi",
        "email": "ramin.zaghi@arm.com",
        "time": "Fri Feb 28 15:03:19 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 17:16:40 2014 +0100"
      },
      "message": "Re-implement native library search and copies.\n\nWe now use a two step approach :\n\n- First we look through the list of shared libraries in an\n  APK, and choose an ABI based on the (priority)  list of ABIs\n  a given device supports.\n- Then we look through the list of shared libraries and copy\n  all shared libraries that match the ABI we\u0027ve selected.\n\nThis fixes a long-standing bug where we would sometimes copy\na mixture of different ABIs to the device, and also allows us\nto clearly pick an ABI to run an app with.\n\nThe code in NativeLibraryHelper has been refactored so that all\nfile name validation \u0026 matching logic is done in a single place\n(NativeLibrariesIterator). This allows us to avoid a lot of\nredundant logic and straightens out a few corner cases (for eg.\nwhere the abi determination \u0026 copying logic do not agree on\nwhat files to skip).\n\nbug: https://code.google.com/p/android/issues/detail?id\u003d65053\nbug: 13647418\n\nChange-Id: I34d08353f24115b0f6b800a7eda3ac427fa25fef\nCo-Authored-By: Zhenghua Wang \u003czhenghua.wang0923@gmail.com\u003e\nCo-Authored-By: Ramin Zaghi \u003cramin.zaghi@arm.com\u003e\nCo-Authored-By: Narayan Kamath \u003cnarayan@google.com\u003e\n"
    },
    {
      "commit": "309ca5d947fffc6a8196be5e5148333803d442af",
      "tree": "5c65d767e7df3cf80efa9102647cc29a4336054e",
      "parents": [
        "dc97144b3f83bf6dae90493a6631afc6523dfce2"
      ],
      "author": {
        "name": "riddle_hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Tue Apr 08 02:44:03 2014 +0800"
      },
      "committer": {
        "name": "riddle_hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Tue Apr 08 02:44:03 2014 +0800"
      },
      "message": "[ActivityManager] Reduce report ANR on wrong activity.\n\nSymptom: ANR report on wrong activity.\n\nRoot Cause:\n  KK changed resume behavior that will not update focus when only resume,\nif the activity blocked, it may report ANR on previous focus.\n  By original concept, it will try to correct the ANR target,\nbut the stack of waiting(waitingVisible\u003dtrue) activity may\ndifferent with current top stack.\n  If it gets key dispatch timeout, mResumedActivity and mPausingActivity\nof its stack will be null becuase it is not top stack.\nThen it is unable to change ANR target to the real no response activity.\n\nSolution:\n Use focused stack to get the real culprit.\n\nReproduce steps:\n1.Launch an Activity X from launcher, press home key.\n2.Launch X from launcher again, X blocks(sleeps 15sec) in onResume, press back key in the beginning of blocking duration.\n3.ANR dialog shows launcher is no response.\n\nChange-Id: I99416ad91e349096f995990f2240a97616fbaf28\n"
    },
    {
      "commit": "973b4663b0b5ee62006522bf4742af076096e548",
      "tree": "d30579e0b8a4342f6071983f481015860a44fd67",
      "parents": [
        "b3cafa56205942343930e4fbb0a3d50d6e33a046"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 31 13:41:26 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 10:18:43 2014 +0100"
      },
      "message": "Move zygote startup logic to the frameworks.\n\nThe Zygote class is now in com.android.internal.os. It is\nresponsible for the vast majority of work before and after\nthe call to fork(). It calls back into the Runtime via\nthe new dalvik.system.ZygoteHooks class to allow the Runtime\nto perform pre fork cleanup and post fork initialization.\n\nThe native code in Zygote.cpp is a direct and straightforward\nport of the existing code in art. Most differences are\nsuperficial, for example :\n- We use C style logging (ALOGE) instead of stream based\n  logging.\n- We call env-\u003eFatalError() instead of using LOG(FATAL)\n\nChange-Id: Ia101fb2af12d23894fe57e4134d2bc6d142e5059\n"
    },
    {
      "commit": "3b2a9d22794cb9f1c2a28884b5c3ba92ecc6ff96",
      "tree": "d669108571126c88f810ec6bf10ad4e96e1ceab5",
      "parents": [
        "e3434fc4fb164b66e529e675dfc31652a4c69cb5",
        "172d38bcda8d05793db13eb763a280ac2ee36fab"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Mar 31 20:09:31 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 31 20:09:31 2014 +0000"
      },
      "message": "Merge \"Change when the SELinux relabel of /data/data occurs.\""
    },
    {
      "commit": "d1a8d9f45288e1e8aadfc543fab7087c2eec2f30",
      "tree": "a92e1e659994ad06fcecbe921b2bf4c9b083b8fb",
      "parents": [
        "91bbb75c75568dee854fb10633f8ce3683265ffd"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 28 13:10:41 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 31 13:16:45 2014 +0100"
      },
      "message": "Don\u0027t make isSafeMode a field on the Zygote class.\n\nThis field is written and read exclusively by the system server,\nand should therefore belong to the SystemServer class.\n\nChange-Id: I2708a9a45c0c9cd1a6f563e8cc5844bd8c424bf7\n"
    },
    {
      "commit": "d511bc17d614b1291f1b85f84180c1db157d2790",
      "tree": "23976cc97b3849ecc2244e4330474b44043d54b4",
      "parents": [
        "e328056ddcba0edd0e49b4697dfcc84f3658cb39",
        "82a91631d58d0d378ae93afc034aef3b44aef81b"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 28 20:27:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 28 20:27:33 2014 +0000"
      },
      "message": "Merge \"[ActivityManager] Fix a bug: unable to start activity after starting activities during screen off.\""
    },
    {
      "commit": "ff3362f0d8378d616f39cbcf8b86b6f03e7d30b9",
      "tree": "86abf57f42539f0ceff15bff7308c37cb1892d61",
      "parents": [
        "49c061501dbcff0dd6f6621afa76136d0857622a",
        "739e1941217b0882560f78169e1456b1909a2d10"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 28 20:23:34 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 28 20:23:34 2014 +0000"
      },
      "message": "Merge \"DO NOT MERGE - [ActivityManager] Ensure consistency behavior when a background activity brings another existed activity to front.\""
    },
    {
      "commit": "172d38bcda8d05793db13eb763a280ac2ee36fab",
      "tree": "093367ca561ab9095da3270d99c793b3e3defbf6",
      "parents": [
        "55a655091a30667ba7c091dc22d350c0bb8d8641"
      ],
      "author": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Thu Mar 27 10:00:58 2014 -0400"
      },
      "committer": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Fri Mar 28 12:24:29 2014 -0400"
      },
      "message": "Change when the SELinux relabel of /data/data occurs.\n\nPerform the relabel of the /data/data/\u003cpkg\u003e directories\nwhen the app is being scanned by the PMS. The impetus\nfor this change was that the data directories of forward\nlocked apps were receiving the wrong label during an\nOTA. Because the PMS doesn\u0027t actually scan forward locked\napps til later in the boot process, the prior restorecon\ncall was actually applying the default label of\nsystem_data_file for all such apps. By performing a\nrestorecon on each individual app as they are entered into\nthe PMS we can handle them correctly. This mechanism also\nallows us to pass down the seinfo tag as part of the\nrestorecon call which drops our need to rely on the contents\nof packages.list.\n\nChange-Id: Ie440cba2c96f0907458086348197e1506d31c1b6\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "a282441038b8a82be1b9b6afc41145e5570ce377",
      "tree": "b3f184f9a1de8b4f706008eab94e067b1c93dd1e",
      "parents": [
        "f0ffa8a38e90f64912686833dba9823b251fae57",
        "0fd4c656d0dbaf01eb845b8c64f6b27d5141f8b6"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Mar 27 20:01:11 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 27 20:01:11 2014 +0000"
      },
      "message": "Merge \"Do not show Home behind full screen activity\""
    },
    {
      "commit": "0fd4c656d0dbaf01eb845b8c64f6b27d5141f8b6",
      "tree": "2c7a8ac376dee757df2bb7cce1c15d46272c0802",
      "parents": [
        "dac298005ce3c1361e27bb740e4b518765d43d77"
      ],
      "author": {
        "name": "Yevgen Pronenko",
        "email": "yevgen.pronenko@sonymobile.com",
        "time": "Fri Mar 14 11:57:06 2014 +0100"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Thu Mar 27 07:54:37 2014 +0100"
      },
      "message": "Do not show Home behind full screen activity\n\nWhen ensureActivitiesVisibleLocked goes through foreground activity\nstack and reaches non-fullscreen activity, it sets showHomeBehindStack\nvariable to true.\n\nIf there is a fullscreen activity behind, showHomeBehindStack remains\nunchanged, which causes Home application to be displayed anyway.\nIn this case user will see a fullscreen activity and Home activity\nsimultaneously.\n\nTo fix the issue we set showHomeBehindStack to false when we reach\nfullscreen activity in the activity stack.\n\nThis was made visible by the following commit:\n446ef1de8d373c1b017df8d19ebf9a47811fb402\n\nChange-Id: I535c1283a4e26f5cf606375b837d4b7195324af0\n"
    },
    {
      "commit": "e6e25554d345a94ba40c36fcb120a3d76fc15eca",
      "tree": "d5c3db9000fbbec135249eca30502962a11692a1",
      "parents": [
        "80470cdf6c6995f4afe8d5e2c4b6e898625173fb"
      ],
      "author": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Wed Mar 26 09:19:12 2014 -0400"
      },
      "committer": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Wed Mar 26 09:19:12 2014 -0400"
      },
      "message": "Note libselinux dependency on packages.list format changes.\n\nChange-Id: I3c34a86f5706c4fca826a8634936131e4e4fc297\nSigned-off-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\n"
    },
    {
      "commit": "739e1941217b0882560f78169e1456b1909a2d10",
      "tree": "77bb6331260a09cb772fefe1d87b9127fd81087b",
      "parents": [
        "80470cdf6c6995f4afe8d5e2c4b6e898625173fb"
      ],
      "author": {
        "name": "riddle_hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Wed Mar 26 20:43:17 2014 +0800"
      },
      "committer": {
        "name": "riddle_hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Wed Mar 26 20:43:17 2014 +0800"
      },
      "message": "DO NOT MERGE - [ActivityManager] Ensure consistency behavior when a background activity brings another existed activity to front.\n\nSymptom: ANR occurs on previous activity.\nRoot Cause:\nIn KK, when a background activity starts another existed background activity (bring to front),\nif current focused stack is not the same as the stack of target starting activity,\nit will still resume the top of target stack, even the top activity on the target stack may not the same as target activity.\nAnd it will result incorrect focus, press back key will send to previous stack\u0027s top then popup ANR on previous activity:\n\"Reason: Waiting because no window has focus but there is a focused application\".\n\nBy original code comment, it looks \u0027bring to front\u0027 should not happen in this issue case.\n// If the target task is not in the front, then we need\n// to bring it to the front...  except...  well, with\n// SINGLE_TASK_LAUNCH it\u0027s not entirely clear.  We\u0027d like\n// to have the same behavior as if a new instance was\n// being started, which means not bringing it to the front\n// if the caller is not itself in the front.\n\nIf the caller and target are in the same stask, it will just deliver new intent without changing task order (the same behavior as JellyBean).\nSo the patch concept is just to avoid to use target stack to resume top when caller and target are in different stack.\n\nSolution: Do not allow to resume another stack top if non-top activity try to bring existed activity to front.\nIt may not be a good solution, just a reminder for the issue case.\n\nReproduce steps:\nAssume A, B, C are different app tasks.\nWhen the application stack is like:\n  Top C\n      B\n      A\n\n #Case 1: Home is foreground\n  A starts B with NEW_TASK, C will resume, focus still stays at Home, and window order does not update.\n  Then press back key or volumn key will result ANR on Home.\n\n #Case 2: App is foreground (Resumed activity is C)\n  A starts Home, Home will resume, focus still stays at C, and window order does did not update.\n  Then press back key or volumn key will result ANR on C.\n\nChange-Id: If05070123b248e2335791e43a4d4ddee6db11d84\n"
    },
    {
      "commit": "39f7068ed903f747d6885117dc1bac69f626ae91",
      "tree": "004b27997551802d900f102a57a055b09ac1b874",
      "parents": [
        "557a93e104f1fec69ed05b2d0ff26c78bca4c5d6"
      ],
      "author": {
        "name": "Koji Fukui",
        "email": "koji.fukui@sonymobile.com",
        "time": "Fri Mar 14 21:20:21 2014 +0900"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Tue Mar 25 11:25:32 2014 +0900"
      },
      "message": "Don\u0027t wait for finishing animation when second display is disconnected\n\nBasically WindowManagerService wait for finishing animation when\na window is removed. But when second display is disconnected, windows\non second display can\u0027t be shown even if animation is waited for.\nOn the contrary, it keeps on waiting for finishing the animation\nin special case.\n\nWith this fix windows are immediately removed without waiting for\nanimation when second display is disconnected.\n\nChange-Id: I1354c193c04db394a21a11c174e10c8e7da17a0e\n"
    },
    {
      "commit": "82a91631d58d0d378ae93afc034aef3b44aef81b",
      "tree": "5b341e6e486c44eecf7e75b11bcde523f0e9f210",
      "parents": [
        "4308a5230e2887c1ee12e7bdc60e0b93212637ab"
      ],
      "author": {
        "name": "leo_hsu",
        "email": "leo_hsu@htc.com",
        "time": "Fri Mar 21 12:27:16 2014 +0800"
      },
      "committer": {
        "name": "leo_hsu",
        "email": "leo_hsu@htc.com",
        "time": "Fri Mar 21 12:27:16 2014 +0800"
      },
      "message": "[ActivityManager] Fix a bug: unable to start activity after starting activities during screen off.\n\nSymptom: Unable to start any activity.\nRoot Cause: ActivityStack.mPausingActivity() points to a destroyed activity of a died process, so that ActivityStackSupervisor.allPausedActivitiesComplete() always returns false.\nSolution: Set mPausingActivity to null in ActivityStack.cleanUpActivityLocked().\nReproduce steps:\n    a. Turn screen off.\n    b. A background service starts an activity X (in process X).\n    c. A background service starts a no-history activity Y (in process Y), but the main thread of Y was blocked.\n    d. A background service starts Y 3~4 times --\u003e this causes am_failed_to_pause on X.\n    e. Main thread of Y is freed finally --\u003e this causes Y crash for android.view.WindowManager$BadTokenException.\n    f. Turn screen on, X is shown on screen, but neither back key nor home key can work because mPausingActivity is Y.\n\nChange-Id: I320b3db407e2d4cc745c8ca22a6e548742234242\n"
    },
    {
      "commit": "2b74a24a52a8f685ea8e81ff7b4f55e724733267",
      "tree": "654bfc5799dc50cc4ac89b567316f999207ac2c9",
      "parents": [
        "dac298005ce3c1361e27bb740e4b518765d43d77"
      ],
      "author": {
        "name": "Minoru Aoi",
        "email": "minoru.x.aoi@sonymobile.com",
        "time": "Thu Mar 13 12:00:34 2014 +0900"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Thu Mar 20 11:35:33 2014 +0900"
      },
      "message": "Set ScreenshotSurface secure if any secure content is shown.\n\nThe screenrecord command can record secure content during rotation.\nThis is because the ScreenshotSurface surface for rotation animation\nis not set secure even though its screenshot contains secure content.\n\nChange-Id: I5a70be71ddfc26de4230e7d4fe547210c2154210\n"
    },
    {
      "commit": "0aa5163c13caff1a3864548bf5e587b041895058",
      "tree": "1c73ae734aa466cf6d862cb993c8b5f01826ea9e",
      "parents": [
        "19fc55e1e3a51aba4db985d186d1f4ec075d7ca1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 19 17:49:09 2014 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Mar 19 18:34:52 2014 -0700"
      },
      "message": "Get rid of noise during boot.\n\nThis log is not an error, it is a warning, don\u0027t spam a stack\ncrawl when it happens.\n\nChange-Id: I6038e3625cc0c16af9e54887b5e7ec451d9f864d\n"
    },
    {
      "commit": "4385343fd82058c397a46530458ae58999f75639",
      "tree": "78aa8b716683b556f60337dd5e6f6b42f4276edd",
      "parents": [
        "7cb1dfe690b2d700ce212712287dfd59c2c8e43f"
      ],
      "author": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Tue Mar 04 11:57:23 2014 -0500"
      },
      "committer": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Wed Mar 19 17:37:37 2014 +0000"
      },
      "message": "Allow PMS to restorecon directories under /data.\n\nThis change applies a relabel to both /data/data and\n/data/user directories on boot. Not every boot will\napply this relabeling however. The appropriate\nseapp_contexts is hashed and compared to\n/data/system/seapp_hash to decide if the relabel\nshould occur.\n\nChange-Id: I05e8b438950ddb908e46c9168ea6ee601e6d674f\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "eff08c4ffe41e0a52ddd2c8c9d968482bae5935d",
      "tree": "e427dd5192262a4c974c96315b1fab64fe4adb14",
      "parents": [
        "d88d817498327462f42e50348239eac59147f310"
      ],
      "author": {
        "name": "Akira Numata",
        "email": "akira.numata@sonymobile.com",
        "time": "Thu Mar 13 13:36:31 2014 +0900"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Tue Mar 18 05:41:30 2014 +0000"
      },
      "message": "Insufficient ProcessRecord cleanup when persistent process is killed\n\nWhen persistent process with Service restarts, ActivityManagerService\ndoes not reset ProcessRecord#hasClientActivites to false\n(because ProcessRecord of persistent process is continued using\nafter killing).\n\nIt disturbs updating LRU list in ActivityManagerService, and then,\nwhen new process calls ActivityManagerProxy#publishContentProviders,\nSecurityException happens because of no entry in the list.\n\nBug: 13517358\n\nChange-Id: I46b064f71a4f7025ade1bf117801352a7ab22e6a\n"
    },
    {
      "commit": "4cde773435074809672f9de6a47b26de902a83d1",
      "tree": "6c8be75255b1b26dd7b08b9538f25ed932531505",
      "parents": [
        "629daddd03b598616de7c30a13b1f9f9b11b98fe",
        "d5c69462c6ebc71d13e353f179c7549bb75d1dc5"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@android.com",
        "time": "Fri Mar 14 17:48:00 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 14 17:48:01 2014 +0000"
      },
      "message": "Merge \"remove unnecessary switchUser call\""
    },
    {
      "commit": "f31760c63401be72748487c9d4fce3fecdedede4",
      "tree": "f6ee522f589207c3ef3e3b4235c78c6a78108d9f",
      "parents": [
        "792f38ddd9e8d25b2c8bf0d67363dbfa56550636"
      ],
      "author": {
        "name": "Dave Platt",
        "email": "dplatt@google.com",
        "time": "Fri Mar 07 14:48:22 2014 -0800"
      },
      "committer": {
        "name": "Dave Platt",
        "email": "dplatt@google.com",
        "time": "Thu Mar 13 23:16:30 2014 +0000"
      },
      "message": "NsdService does not clean up after exiting clients\n\nWhen a client of the NsdService exits, NsdService should\nclean up the requests it has sent to the mDNS daemon:\ncancel any pending resource-discovery and resource-resolution\nqueries, and remove any services registered by this client.\n\nIf this isn\u0027t done, several bad things happen. The daemon will\ncontinue to run unnecessarily, will report service discoveries\nthat can\u0027t be forwarded on to the client, and will continue to\nadvertise service ports for an application which is no longer\nrunning until the device is rebooted (mDNS pollution).\n\nBug: 9801184\nChange-Id: I0aa7311480322aefcff16f902fbbf34f50985d38\n"
    },
    {
      "commit": "d5c69462c6ebc71d13e353f179c7549bb75d1dc5",
      "tree": "40684a0bdf8c4e1b09967793c976cdb2b11cff3b",
      "parents": [
        "792f38ddd9e8d25b2c8bf0d67363dbfa56550636"
      ],
      "author": {
        "name": "Jianzheng Zhou",
        "email": "jianzheng.zhou@freescale.com",
        "time": "Thu Oct 10 14:02:09 2013 +0800"
      },
      "committer": {
        "name": "Jianzheng Zhou",
        "email": "jianzheng.zhou@freescale.com",
        "time": "Thu Mar 13 09:09:22 2014 +0800"
      },
      "message": "remove unnecessary switchUser call\n\nIf userId doesn\u0027t change, no need to do switchuser.or it will\nintroduce some tweak for gps modules in quick off/on because\nthey need cost time in off/on.\n\nChange-Id: Ie5e408dc8be69c8a63a18bcb2cfe478cef4d70e6\nSigned-off-by: Jianzheng Zhou \u003cjianzheng.zhou@freescale.com\u003e\n"
    },
    {
      "commit": "0efbd9a463c848118c7685f4bfc8765a82caa761",
      "tree": "4c091a048fd013b99927089c5f2127868c2b6156",
      "parents": [
        "5de03b18ea455c0250cbd01912282f28d8635910"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Jan 30 14:19:51 2014 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri Mar 07 12:32:44 2014 -0800"
      },
      "message": "ART profiler usage.\n\nThis is a change to add args to some of the profiler related\nfunctions, including installd commands.\n\nAlso read properties and set command line options for the runtime\nprofiling parameters.\n\nChanged calls to isDexOptNeeded() to isDexOptNeededInternal().  This\nneeds additional arguments passed for profiles.\n\nBug: 12877748\nChange-Id: I1a426c9309d760bac0cf92daa298defee62287c1\n\nConflicts:\n\tcore/jni/AndroidRuntime.cpp\n"
    },
    {
      "commit": "27ad525c7e91bde38d6c9e3e67ab38b97eb7eed0",
      "tree": "dec1f3dbb92932fd36b4f947aa2867ad0ef0ab9e",
      "parents": [
        "29e55bef771ee1453017fbf73bb4de62d356e4fc"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Dec 19 14:49:36 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 07 13:48:04 2014 +0000"
      },
      "message": "Inform libcore of time format pref. changes.\n\n- Introduce a boolean extra for intent TIME_CHANGED that\n  specifies if the user wants a 24 hour format or not.\n- Have the ActivityManagerService inform running processes\n  of changes to this preference.\n- Add plumbing in ActivityThread to inform j.t.DateFormat\n\nChange-Id: I05fafb903ae54e39c03a048b7a219dc5a93fd472\n"
    },
    {
      "commit": "a0b4d0ce471cf10888bac4d4ec5b97fd562ad756",
      "tree": "e08221485b3c2e2869ac6c731630a0d641fc51f9",
      "parents": [
        "9404752d50a60319f0d2f53c212fad7c7cd8fb8e",
        "c36a5b9c3664d1b1e9787503161154d5b3470872"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Mar 04 15:19:17 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 04 15:19:17 2014 +0000"
      },
      "message": "Merge \"Avoid duplication of AppWindowToken in created Task\""
    },
    {
      "commit": "c36a5b9c3664d1b1e9787503161154d5b3470872",
      "tree": "8e0da5a121505ea0f06b503385658591a241910c",
      "parents": [
        "2ba70fd49bfcbb516e75c198c106764609335feb"
      ],
      "author": {
        "name": "Yevgen Pronenko",
        "email": "yevgen.pronenko@sonymobile.com",
        "time": "Wed Feb 19 10:33:07 2014 +0100"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Tue Mar 04 15:07:34 2014 +0100"
      },
      "message": "Avoid duplication of AppWindowToken in created Task\n\nWhen WindowManagerService creates a new Task, it passes atoken to the\nTask constructor. In this case atoken is added to mAppTokens list by\nthe Task constructor and then it is added manually again by calling\nnewTask.mAppTokens.add(atoken). As a result, the same atoken is present\nin mAppTokens list twice.\n\nWhen another window token is added to the list, it may be placed in\nbeetwen duplicated tokens and corresponding window will be hidden from\nthe screen by corresponding duplicated windows.\nFrom user perspective it means that some windows will not be displayed\non the screen.\n\nThe issue is fixed by avoid adding atoken to mAppTokens list manually\nwhen it was added already in Task constructor.\n\nChange-Id: I10628e68186160fffdde07beb7d84ab3cecb7051\n"
    },
    {
      "commit": "16678ac66f7e6d5ce414536b7534d1e823f7ab30",
      "tree": "304b39fd7d36c0c7a642fd85a1b6fb422f77af47",
      "parents": [
        "e4dae5f2c26f5992a31f8ce15811fc082647ddb8",
        "8554a0933b5c70f637af4a326e8011c91ca6d4b8"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Thu Feb 27 22:01:28 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 27 22:01:29 2014 +0000"
      },
      "message": "Merge \"Fixed upgrading from forward-lock application to system application\""
    },
    {
      "commit": "38bf51466881b726f42832743d8cca6ee67bb148",
      "tree": "f2273799ae619f0f9b81ea0997009f2457d1cf54",
      "parents": [
        "05cebdc2abd05b0dca351306cb039245d50c67ae"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Wed Feb 19 16:39:36 2014 -0800"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Feb 21 09:53:19 2014 -0800"
      },
      "message": "Move time setting code from SystemClock to AlarmManagerService\n\nOn devices using /dev/rtc instead of /dev/alarm, updating the\ntime-of-day clock and RTC are separate syscalls.  Hence the clock and\nRTC could be left in inconsistent states if two threads called\nSystemClock.setCurrentTimeMillis() simultaneously.\n\nBy moving this code into AlarmManagerService, we can put a global lock\naround AlarmManagerService.setTime() and prevent the race condition.\n\nNote that access to SystemClock.setCurrentTimeMillis() is now gated by\nandroid.permission.SET_TIME, where before it was gated by filesystem\npermissions (i.e., could the process write to /dev/alarm or /dev/rtc).\n\nChange-Id: Ia34899a4cde983656305fd2ef466dfe908ed23c8\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "4de3f481bc59ab4b766dc027e41aff7cda9d62f7",
      "tree": "49232000eaf4d8686816ed7211b351e976ad4950",
      "parents": [
        "2b3c14bf75c71524a0fcbc3e9d1fdab9aa6c3473"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Mon Jan 27 16:00:23 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Feb 20 12:10:24 2014 +0000"
      },
      "message": "AArch64: Make AssetAtlasService 64-bit compatible\n\nChanges in this patch include\n\n[x] Long(64-bit) is used to store native pointers in\n    AssetAtlasService and related classes as they can be 64-bit.\n\n[x] Some minor changes have been done to conform with\n    standard JNI practice (e.g. use of jint instead of int\n    in JNI function prototypes)\n\nChange-Id: Ib4c77c134e3ad5b21732e20cde9a54a0b16bdab1\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\n"
    },
    {
      "commit": "fcb87369b17c69923b80b58e6ea9f6c9d7bc8c74",
      "tree": "a45fbcb7b00807f32885c58715e77ff293d12656",
      "parents": [
        "60097a9c5a7214cb73d0bc966adef767743f8798"
      ],
      "author": {
        "name": "Junu Kim",
        "email": "junu.kim7@gmail.com",
        "time": "Wed Feb 19 16:25:21 2014 +0900"
      },
      "committer": {
        "name": "Junu Kim",
        "email": "junu.kim7@gmail.com",
        "time": "Wed Feb 19 16:25:21 2014 +0900"
      },
      "message": "A background started service is removed from mStartingBackground when timeout.\nFix is to make sure mStartingBackground is updated to remove one.\n\nChange-Id: I0e42beb550d33e6e400349b85bbb89848e18d520\n"
    },
    {
      "commit": "02a64daefece8ccdc40935c7bc865a8966249c44",
      "tree": "c386b46c4b8dca87ba42612e4b7e6cba480d6de0",
      "parents": [
        "234b0b037ee1f8dc50c846279216a8e4d779ff56",
        "1da35f71d2889699864d0cd8f76a6ee8caacfb5b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 18 17:11:09 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 18 17:11:10 2014 +0000"
      },
      "message": "Merge \"Tethering: Skip link local addresses when enabling NAT\""
    },
    {
      "commit": "234b0b037ee1f8dc50c846279216a8e4d779ff56",
      "tree": "b45bef230a4d300af976550f3efd6214b51c7bc9",
      "parents": [
        "a14d9c318a1d358902a76aff733303c5509bb5fc",
        "5fb5df001332d5fb05152e7a78d0b28a48ca559e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 18 17:10:02 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 18 17:10:02 2014 +0000"
      },
      "message": "Merge \"Fix, MountService now only sends one onShutDownComplete\""
    },
    {
      "commit": "8554a0933b5c70f637af4a326e8011c91ca6d4b8",
      "tree": "84ee3066f3f362d5c92c2331671ed58dc2cf1963",
      "parents": [
        "a14d9c318a1d358902a76aff733303c5509bb5fc"
      ],
      "author": {
        "name": "Brice Jaglin",
        "email": "brice.jaglin@sonyericsson.com",
        "time": "Mon Jun 25 21:51:39 2012 +0900"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Tue Feb 18 14:37:09 2014 +0100"
      },
      "message": "Fixed upgrading from forward-lock application to system application\n\nFixes the case when the app on system is newer than the\ncurrently installed. Something that can happen e.g. after\na FOTA update.\n\nChange-Id: I102e9cdd5693d5e66667c0c8989dc2643c72dd16\n"
    },
    {
      "commit": "509a243c2c5ebc9cc55324bd9a03a5b560d81cfb",
      "tree": "2aca8431c1c23c4a57dd5e5b943450d30d68f7da",
      "parents": [
        "d7043f0084237200b6aab5d101c8ab6d3ab495c6",
        "26c6b783d2ab24c3753fa83241beb98c6f1e85d1"
      ],
      "author": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Fri Feb 14 21:15:49 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 14 21:15:50 2014 +0000"
      },
      "message": "Merge \"Check the return value of listFiles on the ifw directory\""
    },
    {
      "commit": "26c6b783d2ab24c3753fa83241beb98c6f1e85d1",
      "tree": "17bc90a072f291bdc012a10a3fb5fcebcda56fe1",
      "parents": [
        "a9bb594da6aff97ba927ba67a34486d0b9c1b4a0"
      ],
      "author": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Mon Sep 30 17:03:34 2013 -0700"
      },
      "committer": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Fri Feb 14 13:07:11 2014 -0800"
      },
      "message": "Check the return value of listFiles on the ifw directory\n\nlistFiles can return null if the directory doesn\u0027t exist\n\nBug: 10497143\nChange-Id: Ie4cbdf18a259a9641669a4e6b9bf49b4879acc67\n"
    },
    {
      "commit": "bba3a694b8400fd340c0400bf42ef3d79a4285b1",
      "tree": "14c1eb67ea3a2520670bf5910d06811982b1522a",
      "parents": [
        "a9bb594da6aff97ba927ba67a34486d0b9c1b4a0",
        "c5ac15a3e11c03951e269b243674858411204b67"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Feb 13 04:26:33 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 13 04:26:33 2014 +0000"
      },
      "message": "Merge \"Telephony API extension v2\""
    },
    {
      "commit": "67754d93c4bfb2da1831b1dd2b40c12a838b1028",
      "tree": "8ea3d4f1c262d60d848d2d986972ea8c86d83b5b",
      "parents": [
        "578087e39845a0c9a728ba18963f498d1f69b279",
        "48d22323ce39f9aab003dce74456889b6414af55"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Tue Feb 11 21:29:58 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 11 21:29:58 2014 +0000"
      },
      "message": "Merge \"Runtime resource overlay, iteration 2\""
    },
    {
      "commit": "b823bd45600fc339ae2e618d5fe506ace74ada4a",
      "tree": "0af3e43af5bfc341edd9c1c5614a89ecb07875fc",
      "parents": [
        "f44a3f1e00e38b09f70efed3eaf771871435e478",
        "0d552f7d8b793f44c9442c19683a5433004b023e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 14:29:09 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 11 14:29:09 2014 +0000"
      },
      "message": "Merge \"Use long to store pointers in ConsumerIrService\""
    },
    {
      "commit": "5fb5df001332d5fb05152e7a78d0b28a48ca559e",
      "tree": "74217b0f979a01d958ee255cfdff5f79dcc8be1e",
      "parents": [
        "56062983f1e07295c812fba0e22ce579a35b6f76"
      ],
      "author": {
        "name": "Rickard Helldin",
        "email": "rickard.helldin@sonymobile.com",
        "time": "Fri Feb 07 09:35:04 2014 +0100"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Mon Feb 10 23:21:25 2014 +0900"
      },
      "message": "Fix, MountService now only sends one onShutDownComplete\n\nThe event onShutDownComplete are sent only when all\nvolumes are shutdown. (Not one for every volume.)\n\nChange-Id: I6af521ee8285ca581efac7d3c5f013dfbff3ee30\n"
    },
    {
      "commit": "ff27e6bc44097485abfde24f396399e5eec9ff6d",
      "tree": "4a8965aae6efbaf903ef1189b8e4b3640d33fa12",
      "parents": [
        "cccae25fc7cd3daf68dee3d3ca7665a5ea12f097",
        "41a17c2e72d61be0a060bf43b669623462a23f13"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Fri Feb 07 23:30:23 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 07 23:30:24 2014 +0000"
      },
      "message": "Merge \"Use canonical path for /vendor/app\""
    },
    {
      "commit": "0d552f7d8b793f44c9442c19683a5433004b023e",
      "tree": "9c375fb51a1a726f3ecbfb30cda3ec8d0c85c288",
      "parents": [
        "449273e2d575041ffe1a5d435666d36923de888b"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Fri Feb 07 12:26:17 2014 +0000"
      },
      "committer": {
        "name": "David Butcher",
        "email": "david.butcher@arm.com",
        "time": "Fri Feb 07 18:12:23 2014 +0000"
      },
      "message": "Use long to store pointers in ConsumerIrService\n\nChange-Id: I4e6562b7dc09f87ad80b1e862b614a370d37feb5\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\n"
    },
    {
      "commit": "6ea720bacb805e88fc3b8634bbd9dc7fa918beaa",
      "tree": "1f8c3656723e667cbdcba7842a296a6f81211343",
      "parents": [
        "449273e2d575041ffe1a5d435666d36923de888b",
        "e8467194dc8d56b5cf418b025b041737754b98b3"
      ],
      "author": {
        "name": "Dan Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Feb 07 15:59:08 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 07 15:59:08 2014 +0000"
      },
      "message": "Merge \"Make sure to turn off led after pulse()\""
    },
    {
      "commit": "48d22323ce39f9aab003dce74456889b6414af55",
      "tree": "510aa964078d251874e2c0e7c8556f237b5710c4",
      "parents": [
        "65a05fd56dbc9fd9c2511a97f49c445a748fb3c5"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonymobile.com",
        "time": "Fri Jan 31 14:43:27 2014 +0100"
      },
      "committer": {
        "name": "Zoran Jovanovic",
        "email": "zoran.jovanovic@sonymobile.com",
        "time": "Mon Feb 03 11:20:30 2014 +0100"
      },
      "message": "Runtime resource overlay, iteration 2\n\nSupport any number of overlay packages. Support any target package.\n\nUPDATED PACKAGE MATCHING\n------------------------\nIn Runtime resource overlay, iteration 1, only a single overlay package\nwas considered. Package matching was based on file paths:\n/vendor/overlay/system/framework-res.apk corresponded to\n/system/framework-res.apk. Introduce a more flexible matching scheme\nwhere any package is an overlay package if its manifest includes\n\n    \u003coverlay targetPackage\u003d\"com.target.package\"/\u003e\n\nFor security reasons, an overlay package must fulfill certain criteria\nto take effect: see below.\n\nTHE IDMAP TOOL AND IDMAP FILES\n------------------------------\nIdmap files are created by the \u0027idmap\u0027 binary; idmap files must be\npresent when loading packages. For the Android system, Zygote calls\n\u0027idmap\u0027 as part of the resource pre-loading. For application packages,\n\u0027idmap\u0027 is invoked via \u0027installd\u0027 during package installation (similar\nto \u0027dexopt\u0027).\n\nUPDATED FLOW\n------------\nThe following is an outline of the start-up sequences for the Android\nsystem and Android apps. Steps marked with \u0027+\u0027 are introduced by this\ncommit.\n\nZygote initialization\n   Initial AssetManager object created\n+    idmap --scan creates idmaps for overlays targeting \u0027android\u0027, \\\n           stores list of overlays in /data/resource-cache/overlays.list\n   AssetManager caches framework-res.apk\n+  AssetManager caches overlay packages listed in overlays.list\n\nAndroid boot\n   New AssetManager\u0027s ResTable acquired\n     AssetManager re-uses cached framework-res.apk\n+    AssetManager re-uses cached \u0027android\u0027 overlays (if any)\n\nApp boot\n   ActivityThread prepares AssetManager to load app.apk\n+  ActivityThread prepares AssetManager to load app overlays (if any)\n   New AssetManager\u0027s ResTable acquired as per Android boot\n\nSECURITY\n--------\nOverlay packages are required to be pre-loaded (in /vendor/overlay).\nThese packages are trusted by definition. A future iteration of runtime\nresource overlay may add support for downloaded overlays, which would\nlikely require target and overlay signatures match for the overlay to\nbe trusted.\n\nLOOKUP PRIORITY\n---------------\nDuring resource lookup, packages are sequentially queried to provide a\nbest match, given the constraints of the current configuration. If any\npackage provide a better match than what has been found so far, it\nreplaces the previous match. The target package is always queried last.\n\nWhen loading a package with more than one overlay, the order in which\nthe overlays are added become significant if several packages overlay\nthe same resource.\n\nHad downloaded overlays been supported, the install time could have been\nused to determine the load order. Regardless, for pre-installed\noverlays, the install time is randomly determined by the order in which\nthe Package Manager locates the packages during initial boot. To support\na well-defined order, pre-installed overlay packages are expected to\ndefine an additional \u0027priority\u0027 attribute in their \u003coverlay\u003e tags:\n\n    \u003coverlay targetPackage\u003d\"com.target.package\" priority\u003d\"1234\"/\u003e\n\nPre-installed overlays are loaded in order of their priority attributes,\nsorted in ascending order.\n\nAssigning the same priority to several overlays targeting the same base\npackage leads to undefined behaviour. It is the responsibility of the\nvendor to avoid this.\n\nThe following example shows the ResTable and PackageGroups after loading\nan application and two overlays. The resource lookup framework will\nquery the packages in the order C, B, A.\n\n        +------+------+-     -+------+------+\n        | 0x01 |      |  ...  |      | 0x7f |\n        +------+------+-     -+------+------+\n            |                           |\n        \"android\"                Target package A\n                                        |\n                       Pre-installed overlay B (priority 1)\n                                        |\n                       Pre-installed overlay C (priority 2)\n\nChange-Id: If49c963149369b1957f7d2303b3dd27f669ed24e\n"
    },
    {
      "commit": "c6c633608ad4cd77ed21227b0bdb11eb79797c31",
      "tree": "b21c39081539be374502f1d4de16c39b59e0c4ad",
      "parents": [
        "ab71f8b68fee0f2a4f2049c4345b5334948c9df9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jan 30 13:14:01 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jan 30 13:16:48 2014 -0800"
      },
      "message": "frameworks/base: Rename persist.sys.dalvik.vm.lib to allow new default\n\nBug: 12798969\nChange-Id: Ibb7ed86867e4dca53ad7fe33326b08e6f5e664c4\n"
    },
    {
      "commit": "41a17c2e72d61be0a060bf43b669623462a23f13",
      "tree": "1383387e1cbf7767424ea1b2965408c11f620b91",
      "parents": [
        "db3278ab429860161e5baa26f141de95a48de0cb"
      ],
      "author": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Thu Jan 30 09:39:00 2014 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Thu Jan 30 09:45:23 2014 +0100"
      },
      "message": "Use canonical path for /vendor/app\n\nIt wasn\u0027t possible to start apps installed in /vendor/app\non a device where /vendor was a symbolic link to /system/vendor.\nThis is currently the default configuration for android (see\ninit.rc)\n\nDuring installation a dex file is created at:\n/data/dalvik-cache/vendor@app@blah.blah.apk@classes.dex\n\nBut dalvik would fail to start this app with the following error:\nI/dalvikvm( 3453): Unable to open or create cache for /system/vendor/app/blah.apk \\\n(/data/dalvik-cache/system@vendor@app@blah.blah.apk@classes.dex)\n\nNote that dalvik were trying to start /system/vendor/app while the\napp was installed in /vendor. There was a conflict between the\npackage manager and dalvik on how to interpret paths. This change\nmakes the package manager consistent with dalvik.\n\nChange-Id: I1c7e3c3ae45f97dd742cbf06f7965a7405c821a7\n"
    },
    {
      "commit": "6e09eb4c6753f8e5cbd04f9b0c7b65046d27afdb",
      "tree": "0be2811684a15ab53621a3b124639aab44789c41",
      "parents": [
        "baf2c7a400ef27b1f33999498a80e2fb3e05a22f",
        "a0398430fcf365fba6e42ad0bdca2fbf45ed6fe0"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 28 19:12:16 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 28 19:12:17 2014 +0000"
      },
      "message": "Merge \"AArch64: Make graphics classes 64-bit compatible\""
    },
    {
      "commit": "a0398430fcf365fba6e42ad0bdca2fbf45ed6fe0",
      "tree": "f263a4baa0ab7b4e7e0101075f1e85768b3d7ba1",
      "parents": [
        "1ff4293e33f98e6dc19e4f154cb497af9bd88c9d"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Mon Jan 20 20:08:01 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 28 17:40:38 2014 +0000"
      },
      "message": "AArch64: Make graphics classes 64-bit compatible\n\nChanges in this patch include\n\n[x] Long is used to store native pointers as they can\n    be 64-bit.\n\n[x] Some minor changes have been done to conform with\n    standard JNI practice (e.g. use of jint instead of int\n    in JNI function prototypes)\n\n[x] AssetAtlasManager is not completely 64-bit compatible\n    yet. Specifically mAtlasMap member has to be converted\n    to hold native pointer using long. Added a TODO to\n    AssetAtlasManager.java to indicate the change required.\n\nChange-Id: I940433f601c6db998c1a8ffff338f5361200d5ed\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Craig Barber \u003ccraig.barber@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n"
    },
    {
      "commit": "d5c91ece7bfea74ee7ab2bc86f3cb3f5c531f866",
      "tree": "e25bab302ca193c2e594958f9c7e278f1b332be9",
      "parents": [
        "1ff4293e33f98e6dc19e4f154cb497af9bd88c9d"
      ],
      "author": {
        "name": "louis_chang",
        "email": "louis_chang@htc.com",
        "time": "Tue Jan 28 18:38:06 2014 +0800"
      },
      "committer": {
        "name": "louis_chang",
        "email": "louis_chang@htc.com",
        "time": "Tue Jan 28 18:38:06 2014 +0800"
      },
      "message": "[ActivityManager]: Fix the activity visibility state not sync between ActivityManager and WindowManager\n\nSymptom:\nWhen press Home key to home screen, user is able to see the activity\u0027s window shown on top of wallpaper and below launcher(widgets).\n\nRoot Cause:\nThe ensureActivitiesVisibleLocked() is called pretty often (for example when a new process bound).\nIf the top activity \"B\" was finishing, then the previous activity \"A\" should be visible.\nTherefore, the activity \"A\" window will be set to visible and then launched activity \"A\", but it does not updates the visible state in ActivityRecord for \"A\".\nThere has a timing issue that if a new activity \"C\" is started, \"C\" becomes the new top activity and be resumed.\nIn that case, Activity \"A\" window will remain visible even if it is behind a full screen activity \"C\" because the ActivityRecord.visble of \"A\" is still false, so the window visibility won\u0027t be update.\nSo when user press home key and back to launcher, the surface of activity \"A\" will be composed on top of wallpaper.\n\nSolution:\nUpdates ActivityRecord.visible to true for \"A\". After \"C\" is started, the \"A\" will be called WindowManagerService.setAppVisibility() to set invisible, then called onStop() when execute ensureActivitiesVisibleLocked() again.\n\nChange-Id: I536ba04b95d8d274fea6d679a6493e620bc981e2\n"
    },
    {
      "commit": "1da35f71d2889699864d0cd8f76a6ee8caacfb5b",
      "tree": "1622a0179e9c494925bd54c3fc9b85162e598a96",
      "parents": [
        "868173a53f0d1059408b049f30af3402d5b0de64"
      ],
      "author": {
        "name": "jiaguo",
        "email": "jiaguo@marvell.com",
        "time": "Thu Jan 09 16:39:59 2014 +0800"
      },
      "committer": {
        "name": "jiaguo",
        "email": "jiaguo@marvell.com",
        "time": "Sun Jan 26 10:07:04 2014 +0800"
      },
      "message": "Tethering: Skip link local addresses when enabling NAT\n\nOnly one entry is allowed to be added to route table 60 for all\ninterface ipv6 link local addresses, so skip ipv6 link local\naddresses on all interfaces when enabling NAT\n\nChange-Id: Ibbe6c2bdae83586cdd38287089715f3433bbb91f\nSigned-off-by: jiaguo \u003cjiaguo@marvell.com\u003e\n"
    },
    {
      "commit": "e8467194dc8d56b5cf418b025b041737754b98b3",
      "tree": "fe3c1a61b26b08808b90da846216cbd87f7f3983",
      "parents": [
        "c9a60b0f77525244ac4f970258703b8dc62ee140"
      ],
      "author": {
        "name": "Oskar Andero",
        "email": "oskar.andero@sonymobile.com",
        "time": "Tue Dec 03 17:41:27 2013 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Fri Jan 24 10:43:53 2014 +0100"
      },
      "message": "Make sure to turn off led after pulse()\n\nsetLightLocked() will update mColor. This will cause the led to not be\nturned off after the pulse.\nWhen notificationManager starts a attention pulse the led will be kept\non. Since attention is of highest prio nothing can turn it off.\nThis is fixed by resetting mColor back to 0 after the call.\n\nChange-Id: Id60ef96e5c21b47c23002f0bcf2fae7fb3f2ca10\n"
    },
    {
      "commit": "cc81bcece411794b4eac6b03b7700a0214fdbb87",
      "tree": "6f9d76c6c0818524a282fb3bdc28922f88dbf2a0",
      "parents": [
        "9fc157a4767f54d1cff53dc9489638b67aec2da3",
        "0464c07a9e3f45091d1f9834788646bc8e4a217d"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Wed Jan 22 23:46:57 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 22 23:46:58 2014 +0000"
      },
      "message": "Merge \"Only send storage intents after boot complete\""
    },
    {
      "commit": "719b3b807509d998eeb2aabd582d30b99947673d",
      "tree": "fa5ccf5c5156e7afc003edfc3c91ddedafb55314",
      "parents": [
        "c9a60b0f77525244ac4f970258703b8dc62ee140"
      ],
      "author": {
        "name": "Naofumi Harada",
        "email": "naofumi.harada@sonymobile.com",
        "time": "Tue Jan 21 10:29:36 2014 +0900"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Tue Jan 21 07:41:11 2014 +0000"
      },
      "message": "FLAG_PRIVILEGED disappears if privileged app is updated and rebooted\n\nSince Kitkat, an app pre-loaded under /system/priv-app/ has\nFLAG_PRIVILEGED. However, if the app updated and the device\nrebooted, privileged flag is unset from pkgFlags. This patch\nfix issue to assign privileged flag when scanning the updated\npackages.\n\nBug: 12640283\n\nChange-Id: Ic24b5882f65dabdfae9cc39da3d68661bed4fc31\n"
    },
    {
      "commit": "0464c07a9e3f45091d1f9834788646bc8e4a217d",
      "tree": "970a59f89d8b91979de365c800883ebdfa0cb745",
      "parents": [
        "c9a60b0f77525244ac4f970258703b8dc62ee140"
      ],
      "author": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Sat Jan 18 22:46:56 2014 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Sat Jan 18 22:46:56 2014 +0100"
      },
      "message": "Only send storage intents after boot complete\n\nIt is not possible to send a broadcast before the system\nboot is completed. If you do it anyway you will get an\nIllegalStateException: Cannot broadcast before boot completed.\n\nIf a memory card is inserted or removed while the phone is\nbooting up, there is a risk that the MountService will try to\nbroadcast a storage intent too early, and cause the device\nto crash.\n\nUse FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT to avoid\nproblems with too early broadcasts.\n\nChange-Id: Ied36a13d235df37c9788e45a35de40d919ae0cd0\n"
    },
    {
      "commit": "90cadb35156829ff1d6b7066409596da38fc70e1",
      "tree": "8543d4bf21ca607352aba39f0d3ee724cb4b154b",
      "parents": [
        "cb4d3ec1ea446fc9ce51514cbf5b16da0ec0fa0f",
        "d64fe0f53c8f77a32cb7745a0a1c4309f9d0ba8d"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jan 13 18:35:31 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 13 18:35:32 2014 +0000"
      },
      "message": "Merge \"MountService listeners can not be unregistered\""
    },
    {
      "commit": "c5ac15a3e11c03951e269b243674858411204b67",
      "tree": "2af4eef7e97318ae606ca78a3b683e62471762ff",
      "parents": [
        "de8c3cf13b0fc0655cf49934658e652b441ee019"
      ],
      "author": {
        "name": "Antonio Marín Cerezuela",
        "email": "amarin@swissms.ch",
        "time": "Mon May 27 11:36:36 2013 +0200"
      },
      "committer": {
        "name": "Antonio Marín Cerezuela",
        "email": "amarin@swissms.ch",
        "time": "Fri Jan 10 11:08:06 2014 +0100"
      },
      "message": "Telephony API extension v2\n\nAdded new AndroidManifest permission:\n\nandroid.permission.READ_PRECISE_PHONE_STATE\n\nAdded the following PhoneStateListeners and corresponding broadcast intents:\n\nonPreciseCallStateChanged(PreciseCallState callState);\nonPreciseDataConnectionStateChanged(PreciseDataConnectionState dataConnectionState);\n\nbroadcastPreciseCallStateChanged(int ringingCallState, int foregroundCallState, int backgroundCallState,\n\tint disconnectCause, int preciseDisconnectCause)\nbroadcastPreciseDataConnectionStateChanged(int state, int networkType, String apnType, String apn,\n\tString reason, LinkProperties linkProperties, String failCause)\n\nAdded TelephonyManager intent actions with their extras and constants:\n\npublic static final String ACTION_PRECISE_CALL_STATE_CHANGED \u003d \"android.intent.action.PRECISE_CALL_STATE\";\npublic static final String ACTION_PRECISE_DATA_CONNECTION_STATE_CHANGED \u003d \"android.intent.action.PRECISE_DATA_CONNECTION_STATE_CHANGED\";\n\npublic static final int PRECISE_CALL_STATE_*\n\nMoved public static final int DISCONNECT_CAUSE_* from PreciseCallState.java to a new class DisconnectCause.java\n\nMoved public static final int PRECISE_DISCONNECT_CAUSE_* from PreciseCallState.java to a new class PreciseDisconnectCause.java\n\nChange-Id: If3b88c679507c529b746046c4a17cf6d9974bd09\n"
    },
    {
      "commit": "2a39c6ff73f3e2610f7624bf5966f2ee2f6e1923",
      "tree": "583f3a911979c690f220083d657d4c2f8f107a68",
      "parents": [
        "76d5cdd820b5d81af8de73180c272d7f8a01caae"
      ],
      "author": {
        "name": "Michael Ollanketo",
        "email": "michael.ollanketo@sonymobile.com",
        "time": "Thu Feb 21 13:20:11 2013 +0100"
      },
      "committer": {
        "name": "henrik baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Thu Jan 09 12:28:22 2014 +0000"
      },
      "message": "Add explicit close of Scanner input\n\nThe UsbDeviceManager is using a Scanner to identify\nthe ALSA card/device numbers to use for USB Gadget\naudio, with a FileInputStream as its input.\n\nSince FileInputStream implements the Closeable interface\nit provides a close() method that should be explictly\ncalled in order to close the stream source and release\nany system resources that it might hold.\n\nChange-Id: Ia0ff86d1f3cdf8916becec9c8603915dcbf4d2c8\n"
    },
    {
      "commit": "446ef1de8d373c1b017df8d19ebf9a47811fb402",
      "tree": "9ab44abf5e9b6b149bdc922cabe2f1a277523538",
      "parents": [
        "76d5cdd820b5d81af8de73180c272d7f8a01caae"
      ],
      "author": {
        "name": "riddle_hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Thu Jan 09 20:24:34 2014 +0800"
      },
      "committer": {
        "name": "riddle_hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Thu Jan 09 20:24:34 2014 +0800"
      },
      "message": "Fix visibility of multiple non-fullscreen activities.\n\nIssue detail:\nAssume X, Y are non-fullscreen activities.\n a.Home starts an activity X in task A in application stack.\n b.X starts an activity Y in \u003ctask A\u003e or \u003cnew task B\u003e\n c.Activity X will be invisible.\n\nHow to fix:\nBecause the function \"isActivityOverHome\" means an activity is able to see home.\nBut there may have many non-fullscreen activities between the top non-fullscreen activity and home.\nIf flag \"behindFullscreen\" is set, those middle activities will be invisible.\nSo it should only take care from who is adjacent to home.\nThen check two flags frontOfTask(task root) and mOnTopOfHome for constraining the condition.\n\nChange-Id: I60bcea304976414e44835a0a38675aae365e9e19\n"
    },
    {
      "commit": "9607d78f5144792993bd254a4b5983b2a9d5bf83",
      "tree": "994c8bed61fd1fb3bdca8765d017e8788ad32b7b",
      "parents": [
        "8a927cfa4ea8e4a78f6a9fa1e2b1da9187a3d1e8",
        "575ca85c147f1521480ea98aca13aa3b1ec38884"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Jan 08 15:56:13 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 08 15:56:13 2014 +0000"
      },
      "message": "Merge \"Added missing USB device descriptor fields needed for intent filters\""
    },
    {
      "commit": "7e2a9dcf1a4044ed3f81c5b736b5027231395b73",
      "tree": "78312e0208955536bbd8b5f615e228edb7adfd52",
      "parents": [
        "517e9b11d53609d59c60d22dc085e7f9fd442248"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Thu Jan 02 19:43:30 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jan 08 10:06:07 2014 +0000"
      },
      "message": "AArch64: Use long for pointers in services\n\nFor storing pointers, long is used, as native pointers\ncan be 64-bit.\n\nIn addition, some minor changes have been done\nto conform with standard JNI practice (e.g. use\nof jint instead of int in JNI function prototypes)\n\nChange-Id: Ib4435f0794740d545c1e640087849215e6844802\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n"
    },
    {
      "commit": "2ac3cb7aef7c8a51cbeb6d34b648dedcb4363994",
      "tree": "75fe6aeb98b9b1d5b0cfe43137083feffb4a76e9",
      "parents": [
        "cccf2a333793badbcea9b04fe3f29447496a56d9"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 06 11:31:35 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 06 11:31:35 2014 +0000"
      },
      "message": "Fix broken XML parsing idiom.\n\nCode that expected a single top level element in an XML file\nwas doing something like :\n\nwhile (type !\u003d START_TAG) { next(); }\n\nThis would loop forever when the XML being parsed was empty,\nwhere each call to XmlPullParser.next() would return END_DOCUMENT.\n\nbug: https://code.google.com/p/android/issues/detail?id\u003d64173\nChange-Id: I7543203e976a8999ae471a6c2d629249a87011bb\n"
    },
    {
      "commit": "c8733b818d9e7eef0d986128f16d12145486b69f",
      "tree": "7d68c89d378e7f13a3dc51031a932c5ef13ed23c",
      "parents": [
        "a11371f42b4dd793a48faa3323be34bca0f6d2e6"
      ],
      "author": {
        "name": "Martin Wallgren",
        "email": "martin.wallgren@sonyericsson.com",
        "time": "Wed Aug 31 12:39:31 2011 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Thu Dec 19 13:24:00 2013 +0100"
      },
      "message": "Keydispatching timeout while finish Activity\n\nIf there is input to be handled during finish activity we can get a\nkeydispatching timeout ANR. The reason is that finish activity is some\ntimes not possible, and the activity is instead put on a finish queue.\nThe activity will then be finished sometime in the future. When we add\nthe activity to the finish queue, key dispatching is paused, and there\nis an ANR timer waiting for it to be resumed again. Since it can take a\nlong time before the activity is actually finished, we need to resume\nthe key dispatching to avoid the ANR.\n\nChange-Id: Icea4ab3b5ad05c8bfbadf8f5cece1a59ec621469\n"
    },
    {
      "commit": "d64fe0f53c8f77a32cb7745a0a1c4309f9d0ba8d",
      "tree": "e033394453714c31652afcfb798b805711cb3765",
      "parents": [
        "44291d9c2722e0d22dc6f909585f4302abdce205"
      ],
      "author": {
        "name": "Niklas Brunlid",
        "email": "niklas.brunlid@sonymobile.com",
        "time": "Fri Jul 05 08:54:03 2013 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Wed Dec 18 12:51:26 2013 +0100"
      },
      "message": "MountService listeners can not be unregistered\n\nWhen unregistering MountService listeners, their Binder proxy\nobjects were compared to registered listeners instead of their\nbacking objects.\n\nChange-Id: Ie98a686b1d17544f1eda59fb3eb0dc02d836c1b2\n"
    },
    {
      "commit": "eb0ca2b7bfd70fbbf2bd730b1c431faac21d0416",
      "tree": "4895bb1986c401213f99dcb7ed45d10b30f6b0c7",
      "parents": [
        "9f4e67c50b5c311adeaaf6135ef79214a46d0e26",
        "a1d6f92f34adb499565c9513235227a308e90221"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Tue Dec 17 18:10:49 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 17 18:10:49 2013 +0000"
      },
      "message": "Merge \"Add timerfd backend to AlarmManagerService\""
    },
    {
      "commit": "9cdf9e52d944e99745a4fe7fb63962fb4508ed6d",
      "tree": "ef472207aaf7a23143e302229674bb58c24608b9",
      "parents": [
        "5d6332e3744e37ced079e5360f1fa3e0e5681d57"
      ],
      "author": {
        "name": "Daniel 2 Olofsson",
        "email": "daniel2.olofsson@sonymobile.com",
        "time": "Mon Dec 16 13:24:25 2013 +0100"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Tue Dec 17 11:35:23 2013 +0100"
      },
      "message": "Fix to NullPointerException on move back in ActivityStack.\n\nIn ActivityTask.moveTaskToBackLocked NullPointerException may occur\nwhen moving back with only current Activity in stack. This due to a\ncondition that may trigger despite a TaskRecord being null and then\nattempt accessing the TaskRecord.mOnTopOfHome variable.\n\nTaskRecord task may be set to null when no resumed activity remain.\n\nResolved by assuring that flag mOnTopOfHome is instead set to false\nfor current TaskRecord in case where there are no remaining activities\nabove home.\n\nThe above bug has already been corrected in the following commit,\nada62fca51d314cefe2c5da4e007df5b9abf320d, but it does not set the\ncottect value to mTopOfHome for the current taks, see below.\n\nVariable mOnTopOfHome will not be set to false in situations where\nstack is of size 1 or less and task is null, perhaps from already\nhaving finished current activity.\n\nTo avoid current TaskRecord maintaining value mOnTopOfHome to true\nafter launching Home this variable is set to false.\n\nImpact should not be major due to correction earlier that makes sure\nthat there is always a TaskRecord.mOnTopOfHome set to true above Home\nactivity but if not correctly set for current task still gives a\npossibility of bad behavior.\n\nChange-Id: Ie86ad99c188aaa05b0de9d58eaa16c42b6fc4341\n"
    },
    {
      "commit": "a1d6f92f34adb499565c9513235227a308e90221",
      "tree": "1a15daa9d12d40c38689f183564db57445857df9",
      "parents": [
        "32b4c0779ea3a0149b31a1340513e9e0a6897b5f"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Mon Dec 09 16:56:53 2013 -0800"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Mon Dec 16 16:23:51 2013 -0800"
      },
      "message": "Add timerfd backend to AlarmManagerService\n\nOn devices without /dev/alarm, use a new backend based on timerfd.\ntimerfd has near-equivalent syscalls for the /dev/alarm ioctls we care\nabout, with two key differences:\n\n1) /dev/alarm uses one fd for all clocks, while timerfd needs one fd per\nclock type.\n\nAlarmManagerService addresses this by replacing the fd (int) with an\nopaque pointer (long) to the backend-specific state.\n\n2) When the RTC changes, the /dev/alarm WAIT ioctl always returns, while\ntimerfd cancels (and signals events) only on specially-flagged RTC\ntimerfds.\n\nThe timerfd backend masks this by creating an extraneous RTC timerfd,\nspecifically so there\u0027s always something to signal on RTC changes.\n\nChange-Id: I5aef867748298610347f6e1479dd8bf569495832\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "e6585b32ea586743258a5457e2184ffc087f2d2f",
      "tree": "409f3c83c78e878a5efe2a0cc500659a27c77f38",
      "parents": [
        "584ace0d3f79ff43db9298798065dd5beaa66a45"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 13 12:00:26 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 13 13:40:30 2013 -0800"
      },
      "message": "Use java.util.Objects instead on internal API\n\nNot needed since java.util.Objects implements all the needed\nfunctionality.\n\nChange-Id: Icd31d49a9801d1705427f028e9ac927d58e7d34c\n"
    },
    {
      "commit": "2daa0c93c4a0a9d18f4ef4486369fb8c90cd1ea2",
      "tree": "463582fb243cd98893fe7ca1ca75cda2e1ff7d11",
      "parents": [
        "6b8a3a52acf1c2722551f1ea1ce47831f87939cd",
        "64483947fdb03bf838e317ac0a4af5e0f53a5bbf"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Sat Dec 07 02:43:02 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Dec 07 02:43:04 2013 +0000"
      },
      "message": "Merge \"Add address flags and scope to LinkAddress.\""
    },
    {
      "commit": "6b8a3a52acf1c2722551f1ea1ce47831f87939cd",
      "tree": "008704a44c552591a0ebeeba627ebbfc5a3969af",
      "parents": [
        "ebcb32f58a6220802ca129ea33f47b4b69931a10",
        "f7422885a99c5d240f70c2f8227ae44abeea3e5c"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Dec 06 08:17:23 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 06 08:17:23 2013 -0800"
      },
      "message": "am f7422885: Merge \"Augment SELinuxMMAC functionality.\"\n\n* commit \u0027f7422885a99c5d240f70c2f8227ae44abeea3e5c\u0027:\n  Augment SELinuxMMAC functionality.\n"
    },
    {
      "commit": "99a626c2719e1965364fad543101799f527e28ca",
      "tree": "1371ff27a0b08401d7f844d837589f16447205ed",
      "parents": [
        "6e2d0c1d91f644ab50e0c0b7cae4306262a4ca41"
      ],
      "author": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Mon Dec 02 10:24:23 2013 -0500"
      },
      "committer": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Fri Dec 06 08:51:20 2013 -0500"
      },
      "message": "Augment SELinuxMMAC functionality.\n\n* No longer support a package name stanza outside of\n  a signature tag. Package names, by themselves, have\n  no security associated with them in Android and thus we\n  should not be allowing or encouraging this\n  type of policy.\n\n* Allow for nested package name stanzas inside\n  signature stanzas. There are cases where a finer\n  distinction needs to be made among apps signed with\n  the same cert. New code allows a different seinfo\n  tag to be assigned to the listed package names\n  signed by the parent cert. When a determination needs\n  to be made concerning seinfo assignments, the inner\n  seinfo tag takes precedence over the outer seinfo\n  labels which are assigned to just the signature.\n\n* Temp structures are now used to parse new policy files\n  until the entire xml file is parsed and deemed correct,\n  at which time the temp structures are copied over to the\n  permanent class structures. This ensures that any structural\n  errors with the policy will not result in partial loads.\n\n* Valid stanzas look like the following with the inner\n  package piece being optional.\n\n   \u003csigner signature\u003d\"\"\u003e\n     \u003cseinfo value\u003d\"\"/\u003e\n     \u003cpackage name\u003d\"\"\u003e\n       \u003cseinfo value\u003d\"\"/\u003e\n     \u003c/package\u003e\n   \u003csigner\u003e\n\n   \u003cdefault\u003e\n     \u003cseinfo value\u003d\"\"/\u003e\n   \u003c/default\u003e\n\nChange-Id: Ia204d71211776dcf9b2dcc86ad6d77c4ad39dc25\n"
    },
    {
      "commit": "64483947fdb03bf838e317ac0a4af5e0f53a5bbf",
      "tree": "856dbc2a83c5b1586b1127e0b3c14f6f335a30fc",
      "parents": [
        "6e2d0c1d91f644ab50e0c0b7cae4306262a4ca41"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Nov 15 18:43:52 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Dec 06 13:54:35 2013 +0900"
      },
      "message": "Add address flags and scope to LinkAddress.\n\nThis is necessary so that the framework can know whether an IPv6\naddress is likely to be usable (i.e., if it\u0027s global scope and\npreferred). Also, it will simplify the address notification\nmethods in INetworkManagementEventObserver, which currently take\nthe address, the flags, and the scope as separate arguments.\n\n1. Add flags and scope to the class and update the unit test.\n   Use the IFA_F_* and RT_SCOPE_* constants defined by libcore.\n   Since most callers don\u0027t know about flags and scope, provide\n   constructors that default the flags to zero and determine the\n   scope from the address. Addresses notified by the kernel will\n   have these properly set. Make multicast addresses invalid.\n   Update the class documentation.\n2. Provide an isSameAddressAs() method that compares only the\n   address and prefix information between two LinkAddress\n   objects. This is necessary because an interface can\u0027t have\n   two addresses with the same address/prefix but different\n   flags.\n3. Update LinkProperties\u0027s addLinkAddress and removeLinkAddress\n   to identify existing addresses to add/remove using\n   isSameAddressAs instead of implicit equals(). Specifically:\n   - If addLinkAddress is called with an address that is already\n     present, the existing address\u0027s flags and scope are updated.\n     This allows, for example, an address on an interface to go\n     from preferred to deprecated when it expires, without it\n     having to be removed and re-added.\n   - If removeLinkAddress is called with an address that is\n     present but with different flags, it deletes that address\n     instead of failing to find a match.\n4. Update the INetworkManagementEventObserver address\n   notification methods to take just a LinkAddress instead of\n   LinkAddress, flags, and scope. While I\u0027m at it, change the\n   order of the arguments for consistency with the other\n   functions in the interface.\n\nChange-Id: Id8fe0f09a7e8f6bee1ea3b52102178b689a9336e\n"
    },
    {
      "commit": "ebcb32f58a6220802ca129ea33f47b4b69931a10",
      "tree": "32b57c1d6ba9180ae63979e06d7421e107a9aa6c",
      "parents": [
        "6e2d0c1d91f644ab50e0c0b7cae4306262a4ca41",
        "bac61807d3bcfff957b358cb9ad77850bd373689"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Dec 05 13:10:46 2013 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Dec 05 13:10:46 2013 -0800"
      },
      "message": "Merge commit \u0027bac61807d3bcfff957b358cb9ad77850bd373689\u0027 into HEAD\n\nChange-Id: I29374270c8e0c2f2859efaf1d55af9f73da0f8d7\n"
    },
    {
      "commit": "856df42a5a13d9aad288e6cddabde8f2f36356fb",
      "tree": "d7f87b9041a9441579c512f3de7ac6b3ee46d648",
      "parents": [
        "f226bc606af9ce5aceff6b05fc4b0200c94cb248"
      ],
      "author": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Mon Dec 02 14:38:31 2013 -0500"
      },
      "committer": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Mon Dec 02 14:38:31 2013 -0500"
      },
      "message": "Remove setEnforcingMode from SELinuxPolicyInstallReceiver.\n\nIt never worked anyhow, at least in AOSP, as nothing checks that property,\nand is pointless now that enforcing mode is set by init.\n\nChange-Id: If05dd49963c5d7081e00039b5e378032bea0939b\nSigned-off-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\n"
    },
    {
      "commit": "5ad421a3d00c92c155d57af9d1a05d81cc2fa88f",
      "tree": "68626927245cd2e5bbe42cddeff69b3199465e6a",
      "parents": [
        "9d4ac9703657142b190d3c256de7c3329e5a4b29"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Sun Nov 17 15:05:02 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Nov 26 21:55:15 2013 +0900"
      },
      "message": "Use LinkAddress in address notifications.\n\nCurrently address{Updated,Removed} pass in the address as a\nstring such as \"fe80::1/64\". Use LinkAddresses instead, since\nthat\u0027s what it is.\n\nThis makes the code more robust in the unlikely case that netd\npasses in an invalid string. In the future we can move flags and\nscope into the LinkAddress itself and simplify the code further.\n\nBug: 9180552\nChange-Id: I66599f9529cf421caa7676fdd0141bb110b8589e\n"
    },
    {
      "commit": "5ae4a531cc31be2868f65c40e8636658f1ae2f06",
      "tree": "d2a5bf64fd3bb9ee4ddfa45ff44750459ead8d94",
      "parents": [
        "a9626c1c956f51e7b4cb783d70b75abc3b180a00"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Oct 31 11:59:46 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Nov 25 17:27:17 2013 +0900"
      },
      "message": "Pass DNS server info notifications to observers.\n\nThese are sent if the device receives IPv6 Router Advertisements\nwith DNS server configuration options. Currently, nothing listens\nto them; in a future change we will use them as IPv6 DNS servers.\n\n[Cherry-pick of 416740ad4d9132005a71dc0883334e852235a18a]\n\nBug: 9180552\nChange-Id: I05000c0cd3867a68ab390102e8470b6912a9d3aa\n"
    },
    {
      "commit": "a9626c1c956f51e7b4cb783d70b75abc3b180a00",
      "tree": "1c1bef2ecca682d5d55176b3956bf4c611febbbf",
      "parents": [
        "132fe8d27dcb45b363dff3eeb347ff2f4cf60901"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Nov 04 17:44:09 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Nov 25 17:25:45 2013 +0900"
      },
      "message": "Minor cleanups to NetdCallbackReceiver.onEvent.\n\n- Clean up identical error messages.\n- Fix the array length check for InterfaceAddressChange.\n\n[Cherry-pick of 59be800e7fe81842aa8c77b91319f58ab165983d]\n\nBug: 9180552\nChange-Id: Id871f481445b530c3ad749725f1548df0e3a1228\n"
    },
    {
      "commit": "132fe8d27dcb45b363dff3eeb347ff2f4cf60901",
      "tree": "0e4c3338fd9e8562438f3e83f6f32c0f78aa4402",
      "parents": [
        "dbccd44a638ae8705a5b14bff8b2dd74abc26045"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Oct 31 23:30:47 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Nov 25 17:24:30 2013 +0900"
      },
      "message": "Use BaseNetworkObserver in Tethering.\n\nTethering currently inherits from the AIDL interface\nINetworkManagementEventObserver, so it has to provide no-op\nimplementations of all the interface\u0027s methods. Inherit from\nBaseNetworkObserver and get rid of the no-ops.\n\n[Cherry-pick of f4e90eac87bc31611ddd80c46fc924d35ce66c1c]\n\nBug: 9180552\nChange-Id: I74859b0d77951005651aaaa418185857e40eeedb\n"
    },
    {
      "commit": "dbccd44a638ae8705a5b14bff8b2dd74abc26045",
      "tree": "14bfabaf3f3c7be86dfc064e919e00433a0cf2bb",
      "parents": [
        "ecfae4f899873f224e1aeed076dc8a41f8884487",
        "b873a17ce7be0a9771c24999adca6964431728f6"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Nov 22 11:18:57 2013 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Nov 22 11:18:57 2013 -0800"
      },
      "message": "Merge commit \u0027b873a17ce7be0a9771c24999adca6964431728f6\u0027 into HEAD\n\nChange-Id: I938755073e70602cc8f51ce9bd420fdcf870cecd\n"
    },
    {
      "commit": "90192a6165f37207fa8ceb15c07aa9582327c294",
      "tree": "d5d196848916e0750723d5ef866678232d875468",
      "parents": [
        "47b260d071859a8c20bb0af2bcc095e253f7046c",
        "0495f4eded46efd7035ed672dc933ec6430b93fd"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Nov 21 08:50:05 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 21 08:50:05 2013 -0800"
      },
      "message": "am 0495f4ed: Merge \"Make SurfaceView layers captured by screenshotApplications()\"\n\n* commit \u00270495f4eded46efd7035ed672dc933ec6430b93fd\u0027:\n  Make SurfaceView layers captured by screenshotApplications()\n"
    },
    {
      "commit": "7ccba974175149b2afa1665fbdbd8c4b7c5ccb3c",
      "tree": "41e9040d63a8368cbdb876086249e2fb7af908a4",
      "parents": [
        "572b759a41fd490fd21b5831dd8b8434b7fd5df8"
      ],
      "author": {
        "name": "Sangkyu Lee",
        "email": "sk82.lee@lge.com",
        "time": "Thu Nov 21 15:20:33 2013 +0900"
      },
      "committer": {
        "name": "Sangkyu Lee",
        "email": "sk82.lee@lge.com",
        "time": "Thu Nov 21 15:20:33 2013 +0900"
      },
      "message": "Make SurfaceView layers captured by screenshotApplications()\n\nSince SurfaceView layers are located below application layers,\nSurfaceView is not captured by screenshotApplications()\nwhen the application is running in fullscreen.\n\nMoreover, ws.isFullscreen(dw, dh) returns mostly true\non the devices which do not use the navigation bar.\n\nChange-Id: Ia1036c79054950384a97504714929fd85c8147de\nSigned-off-by: Sangkyu Lee \u003csk82.lee@lge.com\u003e\n"
    },
    {
      "commit": "bac61807d3bcfff957b358cb9ad77850bd373689",
      "tree": "eb46493a44c43af830d5842eb1a2fd32279bd33b",
      "parents": [
        "32962b3e2c1968fbd83ebbf4cc94ab3dd8de3485",
        "1abead425c0e862e316e17521833a33d22e7a850"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 18 13:32:42 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 18 13:32:42 2013 -0800"
      },
      "message": "am 1abead42: am 245408d2: Merge \"Do not hold direct ref BatteryStatsImpl\" into klp-dev\n\n* commit \u00271abead425c0e862e316e17521833a33d22e7a850\u0027:\n  Do not hold direct ref BatteryStatsImpl$Uid$Proc\n"
    },
    {
      "commit": "245408d29018fee4b1231e52f5da1edcc3283c4a",
      "tree": "a679a23ee7ab71d8e14aac8edcc99cb08defc408",
      "parents": [
        "afc76f28b93f931069bb58c4f9b524d5a99b1604",
        "2cd3fb5aa71cd32cd67ddfaafaca8f85a7ac13c6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 18 21:26:32 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 18 21:26:32 2013 +0000"
      },
      "message": "Merge \"Do not hold direct ref BatteryStatsImpl$Uid$Proc\" into klp-dev"
    },
    {
      "commit": "32962b3e2c1968fbd83ebbf4cc94ab3dd8de3485",
      "tree": "dff1423df7eb4a8912f7a9079d72d8e9e4e8e38c",
      "parents": [
        "1dc93acf3a4a7cf9ede43e5d2d03fc5c7ff8071e",
        "c65dfef3f5ee07883446be0e6907f15fe457da9d"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Mon Nov 18 12:56:25 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 18 12:56:25 2013 -0800"
      },
      "message": "am c65dfef3: am afc76f28: Merge \"Use scaled display size in wallpaper constraint.\" into klp-dev\n\n* commit \u0027c65dfef3f5ee07883446be0e6907f15fe457da9d\u0027:\n  Use scaled display size in wallpaper constraint.\n"
    },
    {
      "commit": "afc76f28b93f931069bb58c4f9b524d5a99b1604",
      "tree": "f16ff343a0e8ecebc19b13fed1cb0d9708a8147d",
      "parents": [
        "35fb6cdf14549dac07585ae791b27e2c069bf176",
        "d6e836c4a0ebf3af571c46986d324c1bd599ba95"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Mon Nov 18 20:49:16 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 18 20:49:16 2013 +0000"
      },
      "message": "Merge \"Use scaled display size in wallpaper constraint.\" into klp-dev"
    }
  ],
  "next": "2cd3fb5aa71cd32cd67ddfaafaca8f85a7ac13c6"
}
