)]}'
{
  "log": [
    {
      "commit": "10caca13da7c6acde00411dfb4ab128c75b24e86",
      "tree": "12accb66b519610632b4dbee1e8480a24064775a",
      "parents": [
        "c4c484c6a77b6b88030f1cb7e810918d8ad92146",
        "f5f6487e5999f6b4984e03bf6fe831ed83f5f4b6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 17 23:32:32 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 17 23:32:32 2014 +0000"
      },
      "message": "am f5f6487e: am d8e585e7: am 006209c2: Merge \"Remove reflection instantiation of Accessibility\" into klp-modular-dev\n\n* commit \u0027f5f6487e5999f6b4984e03bf6fe831ed83f5f4b6\u0027:\n  Remove reflection instantiation of Accessibility\n"
    },
    {
      "commit": "d8e585e7e5ce77e0bf8c11838387f012b9ab9a1a",
      "tree": "c40762c2070b36a9c8df80c4b87a0158f5e87d37",
      "parents": [
        "d292aac5eb48f6970ba4795265bd45761c063209",
        "006209c2fc1b6deef10f6d52831e9cef35cca212"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 17 19:58:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 17 19:58:19 2014 +0000"
      },
      "message": "am 006209c2: Merge \"Remove reflection instantiation of Accessibility\" into klp-modular-dev\n\n* commit \u0027006209c2fc1b6deef10f6d52831e9cef35cca212\u0027:\n  Remove reflection instantiation of Accessibility\n"
    },
    {
      "commit": "6c6cd5012b48cba44beeb2861966f11789fd978b",
      "tree": "c2e5b364aecb4cb0acc51cc4fd39ed338553050f",
      "parents": [
        "aa737c49df79749fe92b89d745eba7442762e2b5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 17 12:54:03 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 17 12:54:03 2014 -0700"
      },
      "message": "Remove reflection instantiation of Accessibility\n\nAccessibility is mandatory so reflection is not required.\n\nChange-Id: Ie5c7b0bba26809425fe0f66efcc09c333138b21f\n"
    },
    {
      "commit": "3651cb7b4a0c3c731905301e868cca1c3af5aa21",
      "tree": "593f3d3142abaeff32bc347302d49b3dfc99e4ca",
      "parents": [
        "952862085ad0b9f28b966b444a3c5a28c3152896",
        "cd9cd758d6dc884220f86ff10812c9e33a978de5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 24 22:25:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 24 22:25:19 2014 +0000"
      },
      "message": "am cd9cd758: am c213b3a3: am f7f80d7b: Merge \"Start the dream manager even if dreams are not supported.\" into klp-modular-dev\n\n* commit \u0027cd9cd758d6dc884220f86ff10812c9e33a978de5\u0027:\n  Start the dream manager even if dreams are not supported.\n"
    },
    {
      "commit": "c213b3a34ccee7cfa72dab281cfa950e5f7df6fc",
      "tree": "fe2743140530e213de7ec95ea138c79aa40411ea",
      "parents": [
        "c004c9a87f0d4afa3a01f39922ad934def93c776",
        "f7f80d7b54b11d432bb6e72da526edf369128ea7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 24 22:18:32 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 24 22:18:32 2014 +0000"
      },
      "message": "am f7f80d7b: Merge \"Start the dream manager even if dreams are not supported.\" into klp-modular-dev\n\n* commit \u0027f7f80d7b54b11d432bb6e72da526edf369128ea7\u0027:\n  Start the dream manager even if dreams are not supported.\n"
    },
    {
      "commit": "f7f80d7b54b11d432bb6e72da526edf369128ea7",
      "tree": "a8b3a6da7ee79f875b868f60f785c8b36bd25497",
      "parents": [
        "ffda464851008f750246f343c939d8003071cd23",
        "e0dd3ca81d9355701164742d53695cf6d15cfdca"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 24 22:15:59 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 24 22:16:00 2014 +0000"
      },
      "message": "Merge \"Start the dream manager even if dreams are not supported.\" into klp-modular-dev"
    },
    {
      "commit": "e0dd3ca81d9355701164742d53695cf6d15cfdca",
      "tree": "4903d33f11495a8268cfa166b8da85598554b0de",
      "parents": [
        "2687550272ba061448f5d5b914700dc335299ee7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 24 13:57:53 2014 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 24 14:07:27 2014 -0800"
      },
      "message": "Start the dream manager even if dreams are not supported.\n\nThe dreams manager also manages dozing.  It has a minimal footprint\nso there is no real reason to disable the component (it just makes\ndebugging more difficult).\n\nImproved the documentation of the config_dreamsSupported resource\nto clarify exactly what it controls.\n\nBug: 12494706\nChange-Id: I78244846f7c1ddfd11bc1605af59b0db91337971\n"
    },
    {
      "commit": "4c90185a351fcabdca38e6fa767ddbb1ddc907de",
      "tree": "01c0dfcb26d96d66ce7eeb56e5c1d97c57512f3c",
      "parents": [
        "dc8d7db35aae71ea747457cc1073fe8d60a8b277",
        "542b55d9a4bee2f98f8a0a6948e0873c5faaddc7"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Feb 22 00:20:57 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Feb 22 00:20:57 2014 +0000"
      },
      "message": "am 542b55d9: am c8661519: am 83930aa0: Merge \"Fix broken IME when decrypting storage\" into klp-modular-dev\n\n* commit \u0027542b55d9a4bee2f98f8a0a6948e0873c5faaddc7\u0027:\n  Fix broken IME when decrypting storage\n"
    },
    {
      "commit": "c866151926b7672a58a7312c8083612bdc567fb4",
      "tree": "961b51a7ade9be9e42cfbed84f2ebadb981dae7a",
      "parents": [
        "d7d37256c4bab388e99dae5e16b80a59756cc97d",
        "83930aa09aecef7429d8a1c07b80f10b7e2e13f6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 21 22:17:26 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 21 22:17:26 2014 +0000"
      },
      "message": "am 83930aa0: Merge \"Fix broken IME when decrypting storage\" into klp-modular-dev\n\n* commit \u002783930aa09aecef7429d8a1c07b80f10b7e2e13f6\u0027:\n  Fix broken IME when decrypting storage\n"
    },
    {
      "commit": "8793dd873d53fe947b2cf68f39d4cb774ac0cc74",
      "tree": "554a795264d0f122667758b1e78d2e9bee0841fb",
      "parents": [
        "2cb6c60c0d2de3bc743c043aca963db6fe52662f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 21 14:06:47 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 21 14:06:47 2014 -0800"
      },
      "message": "Fix broken IME when decrypting storage\n\nBug:13113499\nChange-Id: Icf767864c8ff694fd569b9237ae1004cc20204a2\n"
    },
    {
      "commit": "332886854438809e956fb232b69879e33b5dc2bb",
      "tree": "ddda4e05eba4ed396691ff90b8f2e498d9c8e699",
      "parents": [
        "ff699570f62113b4df5b0efd74b9df8b9dbcd1a9",
        "01fe661ae5da3739215d93922412df4b24c859a2"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Feb 20 00:25:10 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 20 00:25:10 2014 +0000"
      },
      "message": "Merge \"Initial round of MediaSession APIs\""
    },
    {
      "commit": "01fe661ae5da3739215d93922412df4b24c859a2",
      "tree": "fbc2bb43edec44c553256de377312741f87f434f",
      "parents": [
        "d63b4314b85e982a1d70d4064af59851f476dd36"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Feb 13 14:19:04 2014 -0800"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Feb 19 13:41:37 2014 -0800"
      },
      "message": "Initial round of MediaSession APIs\n\nThis is far from complete but puts the basic components in place\nfor an app to interact with media sessions.\n\nChange-Id: Icfe313f90ad76ae56badbe42b0e43fc5f68db36f\n"
    },
    {
      "commit": "f542a33c8de852fe3706a01e960fa0546b536e25",
      "tree": "051d1d8668f909986ee267e33ad5dc8d39244b56",
      "parents": [
        "a78068e7a3af53cc2b590902f74074d1781513da"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 19 12:29:58 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 19 12:29:58 2014 -0800"
      },
      "message": "Fix build due to change in SystemServiceManager\n\nChange-Id: I0fabb98b7b84e5c721757d20df4eac501ca21cc0\n"
    },
    {
      "commit": "a78068e7a3af53cc2b590902f74074d1781513da",
      "tree": "51e9324e75740ea3bec3f3c32d557af2eb15bfe3",
      "parents": [
        "55b8ddc30386ec15073304b1f9fabc7eb789f52e",
        "13c839962e246517a7a95326610ea30c529d79dc"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 19 19:48:05 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 19 19:48:05 2014 +0000"
      },
      "message": "am 13c83996: am 1c532c2e: am 4b07b26e: Merge \"Make UsbService optional\" into klp-modular-dev\n\n* commit \u002713c839962e246517a7a95326610ea30c529d79dc\u0027:\n  Make UsbService optional\n"
    },
    {
      "commit": "1c532c2e2d8464ef7ddd0cc5914f3b1ab2dc49c2",
      "tree": "864b094489e8d2ab165dd1aa8f5fb3eba9626adf",
      "parents": [
        "04520a01b8469729379e73a7995a188ffea2b187",
        "4b07b26e8654df52ca80bb2165ebdf9352ab9337"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 19 19:41:26 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 19 19:41:26 2014 +0000"
      },
      "message": "am 4b07b26e: Merge \"Make UsbService optional\" into klp-modular-dev\n\n* commit \u00274b07b26e8654df52ca80bb2165ebdf9352ab9337\u0027:\n  Make UsbService optional\n"
    },
    {
      "commit": "5441745effb885589c03050b59885e8a3ad96ad6",
      "tree": "0e06886c33fa2c5e8bffc728bc7ede248381f803",
      "parents": [
        "93b55c1149bb4a03b0df7887182265969af2ab71",
        "019b1f2668ac17f5e52b6ce32a524d26134a062a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 18 23:03:37 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 18 23:03:37 2014 +0000"
      },
      "message": "am 019b1f26: am 2ea983a5: am 3d9bcb90: Create FEATURE_ constants for print and backup\n\n* commit \u0027019b1f2668ac17f5e52b6ce32a524d26134a062a\u0027:\n  Create FEATURE_ constants for print and backup\n"
    },
    {
      "commit": "2ea983a567bf536f71dd620e1b215d5aeebce531",
      "tree": "a81e530c49e61cc3f5a861d3f2ebb153332247d1",
      "parents": [
        "37d894a42b5744e3e5def5fbfcc641fe3afa2063",
        "3d9bcb90ee6c0ffff93642539ae64fb672c7f14a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 18 22:57:37 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 18 22:57:37 2014 +0000"
      },
      "message": "am 3d9bcb90: Create FEATURE_ constants for print and backup\n\n* commit \u00273d9bcb90ee6c0ffff93642539ae64fb672c7f14a\u0027:\n  Create FEATURE_ constants for print and backup\n"
    },
    {
      "commit": "2cb6c60c0d2de3bc743c043aca963db6fe52662f",
      "tree": "ec6963bb443a13698459a1029ecd49bfc8a5d816",
      "parents": [
        "3d9bcb90ee6c0ffff93642539ae64fb672c7f14a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 14 17:19:56 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 18 14:57:09 2014 -0800"
      },
      "message": "Make UsbService optional\n\nTweaked the services Android.mk to build dependencies\nwhen building with mm[m].\n\nChange-Id: I6dad511c652bcacc085f27ede5f8f22a6982c6bd\n"
    },
    {
      "commit": "3d9bcb90ee6c0ffff93642539ae64fb672c7f14a",
      "tree": "f23fc306bbdebacd1106c9f5b7d839b114188e68",
      "parents": [
        "3048191b4cf9eff7a72b84065dec2b3dd1e89b3c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 18 14:05:14 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 18 14:33:00 2014 -0800"
      },
      "message": "Create FEATURE_ constants for print and backup\n\nBug:13079822\n\nChange-Id: I6f4b759951d45989e8aad4011fae431ee2ecae0c\n"
    },
    {
      "commit": "88aaef71289177644f723d3d0f20f34a6f9b3d2c",
      "tree": "1ac6363de0a0b74a046ccd929e431bf60acc0328",
      "parents": [
        "00aefc8fa85f7a1dd171d7b0d906630abba7fc93",
        "ce0552f360d8c8f0bc45095293be369800ce9c93"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 14 09:50:37 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 14 09:50:37 2014 +0000"
      },
      "message": "am ce0552f3: am 8a4c2bb1: am 567f7ca4: Refactor dream manager to new pattern.\n\n* commit \u0027ce0552f360d8c8f0bc45095293be369800ce9c93\u0027:\n  Refactor dream manager to new pattern.\n"
    },
    {
      "commit": "8a4c2bb1f07cf1d971290a7310d7b71aceb71590",
      "tree": "3b6cd55bc5dd14616f8360d30e3adf839eb5b551",
      "parents": [
        "dc3561df118a17a099285c9be312fb66f91314ec",
        "567f7ca424280ae957b04d4f3df690055f2d41df"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 14 09:14:09 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 14 09:14:09 2014 +0000"
      },
      "message": "am 567f7ca4: Refactor dream manager to new pattern.\n\n* commit \u0027567f7ca424280ae957b04d4f3df690055f2d41df\u0027:\n  Refactor dream manager to new pattern.\n"
    },
    {
      "commit": "567f7ca424280ae957b04d4f3df690055f2d41df",
      "tree": "8ed338015b00d163576d03d0aa5cf67b85c5b42b",
      "parents": [
        "474f1fbe8d87563909c3cb69ec921d427cd1f0b0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 30 23:38:03 2014 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 13 23:26:59 2014 -0800"
      },
      "message": "Refactor dream manager to new pattern.\n\nChange-Id: I99ab4bd98d56a290368dc4b24e5bb24e0656b522\n"
    },
    {
      "commit": "cab8617b8ccea3a99b1ee15e15915c512a10c738",
      "tree": "48d07ae2e7f69eadd4e7cd8c7d20c4ea6b37bda1",
      "parents": [
        "33fa09b1ffe8d14d146de4b2632103d831ff8988",
        "25df673b849de374cf1de40250dfd8a48b7ac28b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 11 08:33:50 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 11 08:33:50 2014 +0000"
      },
      "message": "am 25df673b: am 1b51c9cb: Merge \"Make SystemService constructor take a Context.\" into klp-modular-dev\n\n* commit \u002725df673b849de374cf1de40250dfd8a48b7ac28b\u0027:\n  Make SystemService constructor take a Context.\n"
    },
    {
      "commit": "25df673b849de374cf1de40250dfd8a48b7ac28b",
      "tree": "bcd207313c36f123e2ccd2230e3ee31e5089e38f",
      "parents": [
        "2d6b55aaa9dd03f7d934f7a192989513b1087357",
        "1b51c9cb96fe2a0818289857a016521eed1ec183"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 11 08:18:34 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 11 08:18:34 2014 +0000"
      },
      "message": "am 1b51c9cb: Merge \"Make SystemService constructor take a Context.\" into klp-modular-dev\n\n* commit \u00271b51c9cb96fe2a0818289857a016521eed1ec183\u0027:\n  Make SystemService constructor take a Context.\n"
    },
    {
      "commit": "b880d880c6cd989eacc28c365fc9a41d31900da1",
      "tree": "660d93bbe7f1b74aa9eac16ac69efe16f67f346e",
      "parents": [
        "d9f9da396b41f394991f676bc74dcfc59c7070a8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 10 19:47:07 2014 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 10 20:01:43 2014 -0800"
      },
      "message": "Make SystemService constructor take a Context.\n\nThis change simplifies the process of initializing a SystemService\nby folding the onCreate() step back into the constructor.  It removes\nsome ambuiguity about what work should happen in the constructor and\nshould make it possible for services to retain most of their final\nfields after refactoring into the new pattern.\n\nChange-Id: I25f41af0321bc01898658ab44b369f9c5d16800b\n"
    },
    {
      "commit": "9f97de13359662c2709eed227b3fab2ce7d5dabc",
      "tree": "7eb16083cd5fd9d30999dfdead280311084c3e5a",
      "parents": [
        "2b1252ddd2650cb38918cb85d2a3711b2cfa8db5",
        "a5a93f559d337ad5b79716b05ea43707eb779dc8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 06 20:25:51 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 06 20:25:51 2014 +0000"
      },
      "message": "am a5a93f55: am 7f416631: Merge \"Check feature bits before loading optional services\" into klp-modular-dev\n\n* commit \u0027a5a93f559d337ad5b79716b05ea43707eb779dc8\u0027:\n  Check feature bits before loading optional services\n"
    },
    {
      "commit": "a5a93f559d337ad5b79716b05ea43707eb779dc8",
      "tree": "aeaf5708202369f8035298433acd9376552c1fbe",
      "parents": [
        "7bd287b70a1c95c96663a6028e9809fd3844f55a",
        "7f416631413e75a1756bd316a2e1906725d72f24"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 06 20:16:30 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 06 20:16:30 2014 +0000"
      },
      "message": "am 7f416631: Merge \"Check feature bits before loading optional services\" into klp-modular-dev\n\n* commit \u00277f416631413e75a1756bd316a2e1906725d72f24\u0027:\n  Check feature bits before loading optional services\n"
    },
    {
      "commit": "898c13df7b9b12ff10062f3542593e12fbe0c119",
      "tree": "323bc4d7da06b48af2079f44c5f8d346d265e956",
      "parents": [
        "df88d73092c62a1a3cd2b2056ca63ae2e70cc238"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 28 15:34:50 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 05 19:26:40 2014 +0000"
      },
      "message": "Check feature bits before loading optional services\n\nAt startup, we check with PackageManager whether a system service is\navailable before attempting to load it. A system service is available\nif its associated feature (similar to hardware features) is present.\nThis does not remove unavailable services from the compiled jar.\n\nChange-Id: I13571805083aa4e65519a74acb52efd17b9fb3d7"
    },
    {
      "commit": "9158825f9c41869689d6b1786d7c7aa8bdd524ce",
      "tree": "f41944461539f0c70030668b4558296469c307d3",
      "parents": [
        "30d032928a294fbb6f385e9d0367a75b7bf2649b"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Nov 22 08:25:26 2013 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Dec 19 15:25:37 2013 -0800"
      },
      "message": "Move some system services to separate directories\n\nRefactored the directory structure so that services can be optionally\nexcluded. This is step 1. Will be followed by another change that makes\nit possible to remove services from the build.\n\nChange-Id: Ideacedfd34b5e213217ad3ff4ebb21c4a8e73f85\n"
    },
    {
      "commit": "b7bba718a88e9baa843e51d9871129d8e682c0b0",
      "tree": "790c8e37506b5f3a1b25931c481e20e5d8359c7e",
      "parents": [
        "b905a37c7a18e8ad98497dea5ab7bd016e3c995d",
        "4a1cb22056112f7ffd5f4fad8b7a092b96e7cc7b"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Dec 19 18:29:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 19 18:29:50 2013 +0000"
      },
      "message": "Merge \"Pair ActivityStacks with Displays\" into klp-modular-dev"
    },
    {
      "commit": "b905a37c7a18e8ad98497dea5ab7bd016e3c995d",
      "tree": "ffb7a21a74816bc01663ebccfa1ff9aab0785068",
      "parents": [
        "ad1ff47213e1b3a34a2b9e5a189742e9a15ed486",
        "46f618a7d9dde8e668666e0c582d88ddfea759d9"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Dec 19 18:00:40 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 19 18:00:40 2013 +0000"
      },
      "message": "am 46f618a7: am a8dfd5d8: am 4dcf1af3: am cccf2a33: Merge \"Keydispatching timeout while finish Activity\"\n\n* commit \u002746f618a7d9dde8e668666e0c582d88ddfea759d9\u0027:\n  Keydispatching timeout while finish Activity\n"
    },
    {
      "commit": "46f618a7d9dde8e668666e0c582d88ddfea759d9",
      "tree": "de6d0e6df37323a37713863b487f5a5c10cf49a1",
      "parents": [
        "7bbc79fd68ea358891ef7e7fa758c009491c4ea0",
        "a8dfd5d896b71faf87b03d27df6050284765fb21"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Dec 19 17:58:08 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 19 17:58:08 2013 +0000"
      },
      "message": "am a8dfd5d8: am 4dcf1af3: am cccf2a33: Merge \"Keydispatching timeout while finish Activity\"\n\n* commit \u0027a8dfd5d896b71faf87b03d27df6050284765fb21\u0027:\n  Keydispatching timeout while finish Activity\n"
    },
    {
      "commit": "a8dfd5d896b71faf87b03d27df6050284765fb21",
      "tree": "325f086e6e273a7b4c6ffd9986821003c650f0f8",
      "parents": [
        "91f6aaaf2cb1c1a0cec129cec8038332de0271a8",
        "4dcf1af3ed8dfa546e6cbf5ecfa66914a3fda883"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Dec 19 09:55:33 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 19 09:55:33 2013 -0800"
      },
      "message": "am 4dcf1af3: am cccf2a33: Merge \"Keydispatching timeout while finish Activity\"\n\n* commit \u00274dcf1af3ed8dfa546e6cbf5ecfa66914a3fda883\u0027:\n  Keydispatching timeout while finish Activity\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": "704e40b8ba7c44ddb3a940b808cc0c4b4e55b2c3",
      "tree": "49dcb7c4701858b0b6584042eeecff3efef52c14",
      "parents": [
        "3bcdbd6b2d96427d7cee835e9ed79aeed51de267"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Dec 18 16:43:51 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Dec 18 16:43:51 2013 -0800"
      },
      "message": "Fix loop limits.\n\nFixes bug 12207606.\n\nChange-Id: I9b450d2bc2a72a1f6581147f8930188f34c85299\n"
    },
    {
      "commit": "4a1cb22056112f7ffd5f4fad8b7a092b96e7cc7b",
      "tree": "2a30eb0760369a59905895e88f8325fbf9934414",
      "parents": [
        "3bcdbd6b2d96427d7cee835e9ed79aeed51de267"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Dec 04 16:14:06 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Dec 18 15:08:15 2013 -0800"
      },
      "message": "Pair ActivityStacks with Displays\n\n- Introduce concept of ActivityStacks residing on Displays and able\nto be decoupled and moved around.\n- Add a new interface, IActivityContainer for clients to handle\nActivityStacks.\n- Abandon ordering of stacks based on mStackState and instead use\nActivityDisplayInfo.stacks\u003cActivityStack\u003e ordering.\n\nProgress towards closing bug 12078972.\n\nChange-Id: I7785b61c26dc17f432a4803eebee07c7415fcc1f\n"
    },
    {
      "commit": "f1bdbdd1bea9662f6731b7a366de1f602f43e5a9",
      "tree": "0242af45729a984cae77056f889777bef91bbb88",
      "parents": [
        "552eba80ef8f48204e77129dd99581d8f0ac3831",
        "0857992140512a2e3d947da54e303374848670dc"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Tue Dec 17 11:56:22 2013 -0800"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Tue Dec 17 11:56:22 2013 -0800"
      },
      "message": "resolved conflicts for merge of 08579921 to klp-modular-dev\n\nChange-Id: I08e9f9a2d2185ccf0c41a87c8527ea7e02ac3117\n"
    },
    {
      "commit": "0857992140512a2e3d947da54e303374848670dc",
      "tree": "32a941ff5c45977b816ca67d695e47ad983a8feb",
      "parents": [
        "153ec6cae7db2053c71541af8973244f0dbf6d4a",
        "060ae1db7bba39cb8171f4267b5de9538f1ab440"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Tue Dec 17 18:19:04 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 17 18:19:04 2013 +0000"
      },
      "message": "am 060ae1db: am eb0ca2b7: Merge \"Add timerfd backend to AlarmManagerService\"\n\n* commit \u0027060ae1db7bba39cb8171f4267b5de9538f1ab440\u0027:\n  Add timerfd backend to AlarmManagerService\n"
    },
    {
      "commit": "060ae1db7bba39cb8171f4267b5de9538f1ab440",
      "tree": "209b2156ca7eee0ca134cbc57bd69c85d54d94ef",
      "parents": [
        "3545433d052769417dcdd70bc59fbf31f9925ba4",
        "eb0ca2b7bfd70fbbf2bd730b1c431faac21d0416"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Tue Dec 17 10:15:33 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 17 10:15:33 2013 -0800"
      },
      "message": "am eb0ca2b7: Merge \"Add timerfd backend to AlarmManagerService\"\n\n* commit \u0027eb0ca2b7bfd70fbbf2bd730b1c431faac21d0416\u0027:\n  Add timerfd backend to AlarmManagerService\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": "4e09cb9bf6165f68b42549772b74596ceb6198fe",
      "tree": "7e3b47c8e4602ebb4f05d7cbe5bc36891f3bdc0a",
      "parents": [
        "1ba5915dd09675485d55536301fdd7d80a305504",
        "38bcf6dc8784625eb4b68634450c578719346669"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Dec 17 16:48:46 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 17 16:48:46 2013 +0000"
      },
      "message": "am 38bcf6dc: am 422d7003: am f431daa2: Merge \"Fix to NullPointerException on move back in ActivityStack.\"\n\n* commit \u002738bcf6dc8784625eb4b68634450c578719346669\u0027:\n  Fix to NullPointerException on move back in ActivityStack.\n"
    },
    {
      "commit": "38bcf6dc8784625eb4b68634450c578719346669",
      "tree": "336f8f6285f4aa2b21eee6e0d3873f8358614dd1",
      "parents": [
        "a759b3d2b4c822a735a3a023be9b484cc05e0b19",
        "422d7003db8d26b5fa503aa294348d7b53621db1"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Dec 17 16:45:06 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 17 16:45:06 2013 +0000"
      },
      "message": "am 422d7003: am f431daa2: Merge \"Fix to NullPointerException on move back in ActivityStack.\"\n\n* commit \u0027422d7003db8d26b5fa503aa294348d7b53621db1\u0027:\n  Fix to NullPointerException on move back in ActivityStack.\n"
    },
    {
      "commit": "422d7003db8d26b5fa503aa294348d7b53621db1",
      "tree": "d31a8f0b45c8dc57dfe8738b10abb373b66a2ffa",
      "parents": [
        "3fca61f073b89136396022d78f444d0a50c1a0d3",
        "f431daa22811fdce9c4ec975d5d33121898b4f9b"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Dec 17 08:42:31 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 17 08:42:31 2013 -0800"
      },
      "message": "am f431daa2: Merge \"Fix to NullPointerException on move back in ActivityStack.\"\n\n* commit \u0027f431daa22811fdce9c4ec975d5d33121898b4f9b\u0027:\n  Fix to NullPointerException on move back in ActivityStack.\n"
    },
    {
      "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": "3b475fefa3b83ce49454936a0be3081753e3e8ad",
      "tree": "e7e614628b44de4e8cc41181351980182d8dd807",
      "parents": [
        "b8928b05932f9592cfeeb9c3cdc96c4066de2d55"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Dec 16 15:58:31 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Dec 16 16:56:19 2013 -0800"
      },
      "message": "Fix incorrect setting of TaskRecord.frontOfTask DO NOT MERGE\n\nWhen Intent.FLAG_ACTIVITY_REORDER_TO_FRONT was set the TaskRecord\nmember frontOfTask was being set true incorrectly for the top\nactivity. It should only be true for the bottom activity. This fix\nensures that frontOfTask is always set correctly for all activities by\nconsoldating it into one method.\n\nFixes bug 12171535.\n\nChange-Id: If982dad3c81b2b816adc5d89e7e0496923098a70\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": "e0b14ea70b58cd04696fb37ffcf733eefc2dd717",
      "tree": "b7ed8174818ad5e4f312068a135a4c9609e1a2d6",
      "parents": [
        "aab514738e346aae410a5a8339e2610a3b393bc6",
        "31b9ec01ff6087773cb35af6824a6422a0181afb"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 13 22:23:33 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 13 22:23:33 2013 +0000"
      },
      "message": "am 31b9ec01: am 62d509d2: am 37c69fdd: Merge \"Use java.util.Objects instead on internal API\"\n\n* commit \u002731b9ec01ff6087773cb35af6824a6422a0181afb\u0027:\n  Use java.util.Objects instead on internal API\n"
    },
    {
      "commit": "31b9ec01ff6087773cb35af6824a6422a0181afb",
      "tree": "69a5d4779d36f86a8d2f20b526474e6c175ce382",
      "parents": [
        "b90d8591343e1af176ff181e6bb343f739c037a6",
        "62d509d24f91959b75219edd0ab1a6f22b82c600"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 13 22:20:37 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 13 22:20:37 2013 +0000"
      },
      "message": "am 62d509d2: am 37c69fdd: Merge \"Use java.util.Objects instead on internal API\"\n\n* commit \u002762d509d24f91959b75219edd0ab1a6f22b82c600\u0027:\n  Use java.util.Objects instead on internal API\n"
    },
    {
      "commit": "62d509d24f91959b75219edd0ab1a6f22b82c600",
      "tree": "b9411caeea9436efa9e2fa707d84ab57525a8f68",
      "parents": [
        "13b648ebff99a3fb8c26152745d294a55f8c11b7",
        "37c69fdd826f3973966430adc1abfbefc19bc16e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 13 14:17:29 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 13 14:17:29 2013 -0800"
      },
      "message": "am 37c69fdd: Merge \"Use java.util.Objects instead on internal API\"\n\n* commit \u002737c69fdd826f3973966430adc1abfbefc19bc16e\u0027:\n  Use java.util.Objects instead on internal API\n"
    },
    {
      "commit": "aab514738e346aae410a5a8339e2610a3b393bc6",
      "tree": "0c73f53b2e46d308fd2e88ee9bb5f14ea29b114b",
      "parents": [
        "e89a9a3f931e28f57484698422c4f3b52a05a8b3",
        "ef38a10353544cd5c981dd41880dedc4b53acf35"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Dec 13 22:16:57 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 13 22:16:58 2013 +0000"
      },
      "message": "Merge \"Fix bad xml generation due to mismatched start/end tags\" into klp-modular-dev"
    },
    {
      "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": "e89a9a3f931e28f57484698422c4f3b52a05a8b3",
      "tree": "5aa2fb50c1f4dadc121623e147086bf438347f2d",
      "parents": [
        "800d4d722f7b6e46bbe5bcf113afccccfad8d8ca",
        "182f73fc4da13a6417e5086ec9ecce80eb8423ca"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Dec 13 18:33:24 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 13 18:33:24 2013 +0000"
      },
      "message": "Merge \"Introduce a Lifecycle for system services\" into klp-modular-dev"
    },
    {
      "commit": "ef38a10353544cd5c981dd41880dedc4b53acf35",
      "tree": "ad00fc922b7c991b40db11b28a0917cb53ebf61e",
      "parents": [
        "87ec50914cdd290ad5486adad01cfad4a0b9f59d"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Dec 13 09:05:26 2013 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Dec 13 09:05:26 2013 -0800"
      },
      "message": "Fix bad xml generation due to mismatched start/end tags\n\nThis was causing a problem with lost policy permissions when global proxy was set for a user.\n\nExtract all xml literals into constants to avoid such errors in the future.\nFix some minor line length issues.\n\nBug: 12065908\nChange-Id: I11d532b4aaa978a09ac562fd6b9ddce1f699a03e\n"
    },
    {
      "commit": "182f73fc4da13a6417e5086ec9ecce80eb8423ca",
      "tree": "d9b18344fd129069bb977c602041c1e47cf702f0",
      "parents": [
        "c13b4e25310034cc1e8da359edf1ee24d7429e9d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 05 16:48:06 2013 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 12 16:35:11 2013 -0800"
      },
      "message": "Introduce a Lifecycle for system services\n\nProvide an abstract class for system services to extend from,\nsimilar to the android.app.Service.\n\nThis will allow services to receive events in a uniform way,\nand will allow services to be created and started in the\ncorrect order regardless of whether or not a particular\nservice exists.\n\nSimilar to android.app.Service, services are meant to implement\nBinder interfaces as inner classes. This prevents services from\nhaving incestuous access to each other and makes them use the\npublic API.\n\nChange-Id: Iaacfee8d5f080a28d7cc606761f4624673ed390f\n"
    },
    {
      "commit": "c52afd2532737872e97933ad1cfb214d4382091f",
      "tree": "7ecb56ca8beb02a004fe59527d842a6b3cb10e22",
      "parents": [
        "0bef299c766a51d29a5e7e818d42eefc2dc278b1",
        "c95bb562e8c67c258623fe70e8001a08e59b8c7d"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Thu Dec 12 00:49:42 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 12 00:49:42 2013 +0000"
      },
      "message": "am c95bb562: Add previous console on pstore to DropBox\n\n* commit \u0027c95bb562e8c67c258623fe70e8001a08e59b8c7d\u0027:\n  Add previous console on pstore to DropBox\n"
    },
    {
      "commit": "c95bb562e8c67c258623fe70e8001a08e59b8c7d",
      "tree": "f44bbe24a3fa5238758f64fbd05b62d4479c6917",
      "parents": [
        "b319cde435b6dd77eab7dbf788567cc5f8a02bcf"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Fri Nov 22 17:15:49 2013 -0800"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Thu Dec 12 00:44:30 2013 +0000"
      },
      "message": "Add previous console on pstore to DropBox\n\nChange-Id: I23c0213fe3d52280d7338ca62cb7e79b80a16cc6\n"
    },
    {
      "commit": "bdc748af8ce62778d2ad15040ecdfada6e4635fd",
      "tree": "fbe9925fbb945d4435a8e2aa5aa8ab0844ceab48",
      "parents": [
        "09e9cdceceb722643e2c80c6544d44a43d7f95f0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Dec 02 14:08:25 2013 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Dec 09 15:15:34 2013 -0800"
      },
      "message": "DO NOT MERGE: Eliminate StackBox.\n\nStackBox is too constraining. Adding size and position to TaskStacks\ndirectly makes stack positioning and management more flexible and\nprepares for ActivityView.\n\nChange-Id: I33c6b4e1c23a5a8069fd507c160bcb34e4d287b2\n"
    },
    {
      "commit": "09e9cdceceb722643e2c80c6544d44a43d7f95f0",
      "tree": "b286fb90a029e7d734b13a0b550bd1ea893a26ef",
      "parents": [
        "d50d41e4df482a61f840ff912aacea0e00848f41"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Nov 06 14:54:50 2013 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Dec 09 15:14:41 2013 -0800"
      },
      "message": "DO NOT MERGE : Move some system services to their own sub package.\n\n(Cherry pick from master)\n\nAs a next step they can be moved into separate directories to be\nbuilt as separate modules that may or may not be included in a\nparticular configuration.\n\nMoves AppWidgetService, BackupManagerService, ClipboardService, DevicePolicyMS,\nand WallpaperMS.\n\nChange-Id: Idd92871c1828bdde81d85fe99a9c87a22d53169d\n"
    },
    {
      "commit": "d50d41e4df482a61f840ff912aacea0e00848f41",
      "tree": "d632599b0c1f8c6f61bdad31b1532fbe7ff8d326",
      "parents": [
        "e63f6f7c8d0094bdea3fe031a178490b273162cd"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Nov 14 19:24:44 2013 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Dec 09 15:14:39 2013 -0800"
      },
      "message": "DO NOT MERGE: Don\u0027t freak out if SystemUiService isn\u0027t available\n\nReducing dependencies on system services\n\nChange-Id: Ifb1a3bfb9c8dda5e22ec698ddb588058d20bd566\n"
    },
    {
      "commit": "e63f6f7c8d0094bdea3fe031a178490b273162cd",
      "tree": "94baa81ff9af7e0865bb514d80174e2912f7b60f",
      "parents": [
        "de8905e4954c86e8e55775b156ea7929f8fd1030"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Nov 15 11:01:47 2013 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Dec 09 15:14:37 2013 -0800"
      },
      "message": "DO NOT MERGE: Remove obsolete \"headless\" support\n\nChange-Id: I829fe48e6ebcb819e260646bb19ac6ddfcf07f83\n"
    },
    {
      "commit": "30253d7a649bd4fc6a436ae880a70e1142c1e58f",
      "tree": "9a1f569883ced5f92c9fa3331d15372fda380c6d",
      "parents": [
        "19158fc39a40f51c87195f5e3066bd891d359a2e",
        "2daa0c93c4a0a9d18f4ef4486369fb8c90cd1ea2"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Dec 09 10:28:19 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 09 10:28:19 2013 -0800"
      },
      "message": "am 2daa0c93: Merge \"Add address flags and scope to LinkAddress.\"\n\n* commit \u00272daa0c93c4a0a9d18f4ef4486369fb8c90cd1ea2\u0027:\n  Add address flags and scope to LinkAddress.\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": "5fa89d55712110c2932f76357216e7a77b3b317e",
      "tree": "43154de3dd3723f039ce9780808afde7b6f471bd",
      "parents": [
        "d7a5aaee145879804006d2c00daa4c14d544e03a",
        "6b8a3a52acf1c2722551f1ea1ce47831f87939cd"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Dec 06 08:20:18 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 06 08:20:18 2013 -0800"
      },
      "message": "am 6b8a3a52: am f7422885: Merge \"Augment SELinuxMMAC functionality.\"\n\n* commit \u00276b8a3a52acf1c2722551f1ea1ce47831f87939cd\u0027:\n  Augment SELinuxMMAC functionality.\n"
    },
    {
      "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": "a5a0de9f2943c6188bd5855adfe4c5da7a985d2d",
      "tree": "1e136eb7ef76448fd87e1abce533358d05df096a",
      "parents": [
        "09ecd7e2dc9b5fba8aeae9c31bd7638732a10cfc",
        "b66343049bc56d29988a91d2d29d49861a469b84"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Dec 02 12:08:42 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 02 12:08:42 2013 -0800"
      },
      "message": "am b6634304: Merge \"Remove setEnforcingMode from SELinuxPolicyInstallReceiver.\"\n\n* commit \u0027b66343049bc56d29988a91d2d29d49861a469b84\u0027:\n  Remove setEnforcingMode from SELinuxPolicyInstallReceiver.\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": "4806fdfbd0fecf91584396fc0f620c97a05ab837",
      "tree": "47521e7d98b953f0397c40d3f6791e9b1f73c6e0",
      "parents": [
        "37e4c405a6136f90e5a8d4fc512cf7f551eb0c56",
        "f226bc606af9ce5aceff6b05fc4b0200c94cb248"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Nov 26 17:56:45 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 26 17:56:45 2013 -0800"
      },
      "message": "am f226bc60: Merge \"Use LinkAddress in address notifications.\"\n\n* commit \u0027f226bc606af9ce5aceff6b05fc4b0200c94cb248\u0027:\n  Use LinkAddress in address notifications.\n"
    },
    {
      "commit": "c1c23780339c35ab2d88c905d91e290050b35435",
      "tree": "8da9ce008ebfa8baa309a3684af8f51608d948f5",
      "parents": [
        "6747ea1b1cdf796710c01317da204f50d5721755",
        "9d4ac9703657142b190d3c256de7c3329e5a4b29"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Nov 26 08:38:48 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 26 08:38:48 2013 -0800"
      },
      "message": "am 9d4ac970: Merge \"Pass DNS server info notifications to observers.\"\n\n* commit \u00279d4ac9703657142b190d3c256de7c3329e5a4b29\u0027:\n  Pass DNS server info notifications to observers.\n"
    },
    {
      "commit": "6747ea1b1cdf796710c01317da204f50d5721755",
      "tree": "3af4f6f650e2677694417dc5bc7a1bcf7421462c",
      "parents": [
        "aeefa69a882eb1068da3a45cec82e50971c45df2",
        "eede7e89c94b3bb56c26aec137c53d592d3bc7c3"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Nov 26 08:38:45 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 26 08:38:45 2013 -0800"
      },
      "message": "am eede7e89: Merge \"Minor cleanups to NetdCallbackReceiver.onEvent.\"\n\n* commit \u0027eede7e89c94b3bb56c26aec137c53d592d3bc7c3\u0027:\n  Minor cleanups to NetdCallbackReceiver.onEvent.\n"
    },
    {
      "commit": "aeefa69a882eb1068da3a45cec82e50971c45df2",
      "tree": "3f9a1a032497265075a810303ac49ab11e8e10cd",
      "parents": [
        "5cd1a87a5c94e707f2cbe7d4751fdfeadd7ebbf0",
        "8a234809e47106e445a4ddf2c70b9cd50d4c9348"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Nov 26 08:38:40 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 26 08:38:40 2013 -0800"
      },
      "message": "am 8a234809: Merge \"Use BaseNetworkObserver in Tethering.\"\n\n* commit \u00278a234809e47106e445a4ddf2c70b9cd50d4c9348\u0027:\n  Use BaseNetworkObserver in Tethering.\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": "2458681b3ea4571d2f1254ef597475fe6a582907",
      "tree": "aaf04259031576b5068a229e30baae720476cbb7",
      "parents": [
        "15b3efc9620662d83b66d75c663bb893ca0bc6e9",
        "263c431017c51fc51c85454a0f9cc7979001a3c1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 21 19:47:30 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 21 19:47:30 2013 -0800"
      },
      "message": "am 263c4310: am ce468a35: Stop wifi display discovery when no longer needed.\n\n* commit \u0027263c431017c51fc51c85454a0f9cc7979001a3c1\u0027:\n  Stop wifi display discovery when no longer needed.\n"
    },
    {
      "commit": "ce468a35b388ca46578934706b38dbae94941643",
      "tree": "0e403cf705d7b938c0f0f77d09052486b7e14fb3",
      "parents": [
        "90e9b1d3dc15e97bb7ecb88289c3707fe03fb1a6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 21 16:42:03 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 21 19:32:59 2013 -0800"
      },
      "message": "Stop wifi display discovery when no longer needed.\n\nKeep track of how many clients are requesting scans and scan\ncontinuously until all of them are gone then explicitly terminate the\nscan instead of letting it time out as before.\n\nSuspend wifi display scans while connecting or connected to a remote\ndisplay.  This is handled by both the display manager and media router\nsince neither has complete information about what is happening.\nMuch of this code will no longer be needed once wifi display support\nis integrated directly into the media router service.\n\nEnsure that we don\u0027t attempt to scan or connect to wifi displays\nwhile the wifi display feature is off.\n\nInfer when a connection attempt fails and unselect the wifi display\nroute automatically so it doesn\u0027t appear to be connecting forever.\n\nFix issues around correctly canceling and retrying connection attempts.\nOften we would cancel but not retry.\n\nImproved connection reliability somewhat.  It seems that discovery must\nalready be in progress in order for a connection attempt to succeed.\n\nEnsure QuickSettings uses exactly the same logic as the MediaRouteButton\nto determine when the remote display tile should be made visible.\n\nBug: 11717053\nChange-Id: I18afc977b0e8c26204b8c96adaa79f05225f7b6e\n"
    },
    {
      "commit": "67ed39bbdb17a516508ceb31a414eeecb5623381",
      "tree": "e445468ade15d1e497ee43cc3bef7b3b669facdb",
      "parents": [
        "1f57ad47b5a0000b47c24f29332b1128d7c6f74f",
        "90192a6165f37207fa8ceb15c07aa9582327c294"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Nov 21 18:43:43 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 21 18:43:43 2013 -0800"
      },
      "message": "am 90192a61: am 0495f4ed: Merge \"Make SurfaceView layers captured by screenshotApplications()\"\n\n* commit \u002790192a6165f37207fa8ceb15c07aa9582327c294\u0027:\n  Make SurfaceView layers captured by screenshotApplications()\n"
    },
    {
      "commit": "3d0048304590a61cf32902440a3fcc27d0281f89",
      "tree": "572efc0bb34d1a93db85f3b0e7ff1d98ec6795e2",
      "parents": [
        "4f23b6104e11be81f3e2ca1a1031de6ca112f50a",
        "2c082ae3d209aa590c1839d75436f7aa77b37125"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Nov 21 14:14:12 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 21 14:14:12 2013 -0800"
      },
      "message": "am 2c082ae3: am 90e9b1d3: Fix issue #11790471: Crash removed home buttons and notification bar/shade\n\n* commit \u00272c082ae3d209aa590c1839d75436f7aa77b37125\u0027:\n  Fix issue #11790471: Crash removed home buttons and notification bar/shade\n"
    },
    {
      "commit": "90e9b1d3dc15e97bb7ecb88289c3707fe03fb1a6",
      "tree": "e1b7ccf860268a030e70f4ba3e34815dcf05a9b4",
      "parents": [
        "c6db9c3b371ed8a90fa064f0487440d8a1d8bd46"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Nov 21 12:50:01 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Nov 21 12:56:03 2013 -0800"
      },
      "message": "Fix issue #11790471: Crash removed home buttons and notification bar/shade\n\nWhoops persistent processes are, well, persistent.  Don\u0027t remove\nservices from them.  We\u0027ll be keeping that process record around.\n\nChange-Id: I29e9fb6f704efdf0caad5e0307a7adbb416eed3b\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": "c8ea38fe18efb447a0f87aed60f511d14d2389fa",
      "tree": "299081efc8262c0960be6ae67ab236dc37365db1",
      "parents": [
        "f52450b1f174eac239ffac67774960d547e295c8",
        "e3705342671d08b5cd94a0d69ef8099a2c3211f8"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Nov 19 11:48:50 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 19 11:48:50 2013 -0800"
      },
      "message": "am e3705342: am b0183f0a: Harden against transiently unavailable backup transports\n\n* commit \u0027e3705342671d08b5cd94a0d69ef8099a2c3211f8\u0027:\n  Harden against transiently unavailable backup transports\n"
    },
    {
      "commit": "b0183f0ae311966cff0e10e8139c56f97288d1f2",
      "tree": "6bd0662fd8d6b0640b2da0c293882b47ff9480e6",
      "parents": [
        "c04aa87e4ac41b6c65dceb7b20d7a7f92c2efec1"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Nov 18 14:20:36 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Nov 19 11:24:46 2013 -0800"
      },
      "message": "Harden against transiently unavailable backup transports\n\nThe init \u0026 clear operations are particularly important to ensure\ndelivery when at all possible, so we retry those periodically\nif the transport is unavailable when we first attempt them.\n\nNow with 100% less build break.\n\nBug 11716868\n\nChange-Id: I2af4e93788068cfac97c0a48d3568c561eefa23d\n"
    },
    {
      "commit": "8ef1c53177fa43cf78eb8911af77bde87c9c1536",
      "tree": "a6407afdea6e2635c5707f89c64f412707222061",
      "parents": [
        "37ba54ac13e6f8cff70d3138a029cfdd4733aba7",
        "be462affdbe9f962c495d6eeabdad645aa9baf03"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Nov 19 08:38:51 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 19 08:38:51 2013 -0800"
      },
      "message": "am be462aff: am 096de3c3: Merge \"Notify apps when insets change.\" into klp-dev\n\n* commit \u0027be462affdbe9f962c495d6eeabdad645aa9baf03\u0027:\n  Notify apps when insets change.\n"
    },
    {
      "commit": "096de3c3017bb9b9e5e1ed9ad790b7fedab95433",
      "tree": "040d7d063e5a5de5b820842726918a008c6446a7",
      "parents": [
        "6d0d4b5b5a66ea348c2cdd89a89d4ab7f0483829",
        "4c5eb224de2ace5fb60dbbaf9e92b77c07aaaa93"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Nov 19 16:31:59 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 19 16:32:00 2013 +0000"
      },
      "message": "Merge \"Notify apps when insets change.\" into klp-dev"
    },
    {
      "commit": "a9249322d554fa13eb9c2662d39be256f833404f",
      "tree": "313faa1acf933a504d2a90e5152bfdcd7beb7f13",
      "parents": [
        "fa331b1dfbf3e071e2ff48dbe21727452bfb8042",
        "c7f7d1bf18dded61bcbf4015a4cfc9cf1ee45bd4"
      ],
      "author": {
        "name": "Sascha Prueter",
        "email": "saschap@google.com",
        "time": "Mon Nov 18 23:31:11 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 18 23:31:11 2013 -0800"
      },
      "message": "am c7f7d1bf: am f7044fec: Merge \"Trying to unbreak build...\" into klp-dev\n\n* commit \u0027c7f7d1bf18dded61bcbf4015a4cfc9cf1ee45bd4\u0027:\n  Trying to unbreak build...\n"
    },
    {
      "commit": "d5965cb506bde84612109bf26c3fcc6712ca91e5",
      "tree": "a679a23ee7ab71d8e14aac8edcc99cb08defc408",
      "parents": [
        "8f98252afea3fd0e68693635ec21b6004a52fa69"
      ],
      "author": {
        "name": "Sascha Prueter",
        "email": "saschap@google.com",
        "time": "Tue Nov 19 06:51:21 2013 +0000"
      },
      "committer": {
        "name": "Sascha Prueter",
        "email": "saschap@google.com",
        "time": "Tue Nov 19 06:51:21 2013 +0000"
      },
      "message": "Trying to unbreak build...\n\nRevert \"Harden against transiently unavailable backup transports\"\n\nThis reverts commit 8f98252afea3fd0e68693635ec21b6004a52fa69.\n\nChange-Id: I3aabb80f1a5932d530bce6b82d4b30c6cd1cdd5a\n"
    },
    {
      "commit": "fa331b1dfbf3e071e2ff48dbe21727452bfb8042",
      "tree": "b6ce04ec9b728796470ea82de2c83029a2fddb59",
      "parents": [
        "27927d5d55eb4bd9087bdeba7df1e98f280177bd",
        "1e964ed808798a56664853e2aeffdc47c676ac5a"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Nov 18 18:48:29 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 18 18:48:29 2013 -0800"
      },
      "message": "am 1e964ed8: am d6bbc544: Merge \"Harden against transiently unavailable backup transports\" into klp-dev\n\n* commit \u00271e964ed808798a56664853e2aeffdc47c676ac5a\u0027:\n  Harden against transiently unavailable backup transports\n"
    },
    {
      "commit": "4c5eb224de2ace5fb60dbbaf9e92b77c07aaaa93",
      "tree": "e28c96985175ad3755f0c9fa58cd08e21eecab7a",
      "parents": [
        "564fb1b8ce4aa603bd0d5b3a077ba27d66e77c32"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Nov 18 12:59:05 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Nov 18 16:49:42 2013 -0800"
      },
      "message": "Notify apps when insets change.\n\nActivities that handle their own configuration get layout when hidden\nand the configuration changes but not when the content insets change\nif they are hidden. They need to get a fresh layout for both\nsituations.\n\nFixes bug 11544694.\n\nChange-Id: Iff3a9adb72ea7dfc3e5cd38e1b9cd7cf2006f8f5\n"
    },
    {
      "commit": "8f98252afea3fd0e68693635ec21b6004a52fa69",
      "tree": "ae1c473590c0a9d1c2022376f047f88151e3db7a",
      "parents": [
        "245408d29018fee4b1231e52f5da1edcc3283c4a"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Nov 18 14:20:36 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Nov 18 16:12:38 2013 -0800"
      },
      "message": "Harden against transiently unavailable backup transports\n\nThe init \u0026 clear operations are particularly important to ensure\ndelivery when at all possible, so we retry those periodically\nif the transport is unavailable when we first attempt them.\n\nBug 11716868\n\nChange-Id: I4860fe3d4e99618b2cd194c83162bd7cbd5a83a9\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"
    },
    {
      "commit": "2cd3fb5aa71cd32cd67ddfaafaca8f85a7ac13c6",
      "tree": "11d46ef291ddc977829e3837011afe6edc5dbab3",
      "parents": [
        "2229ca031a326491feea5832e5337e9f8a602dca"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 18 12:23:26 2013 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 18 12:29:34 2013 -0800"
      },
      "message": "Do not hold direct ref BatteryStatsImpl$Uid$Proc\n\nBatteryStatsImpl can reset its collected data, including\nremoving a BatteryStatsImpl$Uid$Proc object. If a ProcessRecord\nhas a direct reference, then the battery stats for a process\nwill be recorded in an old Proc object and prevent GC, causing\na memory leak.\n\nbug:11087238\nChange-Id: I19a9cd9d8361c10446a8ebdd5c0860b56c442209\n"
    },
    {
      "commit": "d6e836c4a0ebf3af571c46986d324c1bd599ba95",
      "tree": "c92fc279444cb34ea9ddf834b3450b845d178614",
      "parents": [
        "564fb1b8ce4aa603bd0d5b3a077ba27d66e77c32"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Mon Nov 18 14:14:49 2013 -0500"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Mon Nov 18 14:14:49 2013 -0500"
      },
      "message": "Use scaled display size in wallpaper constraint.\n\nBug:11596190\nChange-Id: Icc81beeea2e71144c2e5330b047e4781a23d7449\n"
    }
  ],
  "next": "51213d943b3931434cbd196a8a159ee325a4e3fc"
}
