)]}'
{
  "log": [
    {
      "commit": "ba398eaafefbc6d496686077e88da9d695b13bbc",
      "tree": "8d891d256cd5c0735c1ac49d05f648fe6b0885b2",
      "parents": [
        "eb2094ce24a329dee438870782a8940fbbdba4c4"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed Dec 16 15:28:23 2015 -0500"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed Dec 16 15:28:23 2015 -0500"
      },
      "message": "Remove DayNight themes from public API (again)\n\nBug: 22628106\nChange-Id: Id55c9e626813c70671a93aedf8b1e0cdaed45ec1\n"
    },
    {
      "commit": "6258dcd7ea5450726bc7bcb1fbd50e99f62f38fb",
      "tree": "308b291a3efe64c45e9d8eae804fe79e5977540a",
      "parents": [
        "752b070e327f3a7a1538c702566a251636dc806d"
      ],
      "author": {
        "name": "Gustav Sennton",
        "email": "gsennton@google.com",
        "time": "Fri Oct 30 19:25:37 2015 +0000"
      },
      "committer": {
        "name": "Gustav Sennton",
        "email": "gsennton@google.com",
        "time": "Fri Dec 11 14:29:44 2015 +0000"
      },
      "message": "Add functionality for changing WebView provider.\n\nMake it possible to change WebView provider (through a Developer\nsetting) and kill all apps using the old provider.\nThis includes checking the signatures of the WebView providers to make\nsure they are valid.\n\nNow that we can change WebView provider through a setting it is possible\nto change provider while some provider is being updated. Because of this\nwe now keep track of which provider should be in use in\nWebViewUpdateService to make sure we use the correct provider at all\ntimes.\n\nWe now also read WebView package meta data (name, package name, and\nsignature) from a separate xml file.\n\nMain bug: crbug.com/546185\n\nBug: 25338573\n\nChange-Id: I660fd1a40a5388f6569a06a7f0d029e8ff65945a\n"
    },
    {
      "commit": "27c073796978106746e4a51f2100b29068ab37f6",
      "tree": "5626bb389b178d3a1806a28919a949c05e34ce57",
      "parents": [
        "a22d77e24737b785a33987647758cd3c1db85527"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 05 16:54:09 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 11 12:19:08 2015 +0000"
      },
      "message": "Remove performBootDexOpt and am\u0027s ensurePackageDexOpt.\n\nExcept common shared libraries and boot image, all compilations\nare now done through BackgroundDexOptService.\n\nChange-Id: Ib736e253c38b0c8085bc94e45f4e61a048f66e26\n"
    },
    {
      "commit": "e1aef85ff100c1beba215add2ff3238a4032c6ba",
      "tree": "6f3b9bbb82682230a2b2cbe71e7b3ae4991e5848",
      "parents": [
        "446433da24b7cfb7e7625675bb9dc4e17b05f3ba"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu Oct 15 17:28:35 2015 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu Oct 15 17:28:35 2015 -0700"
      },
      "message": "Use the SystemService lifecycle mechanism for AudioService\n\nThis will be needed to refactor user restriction handling.\n\nChange-Id: I4b77a020d631714e7f94bce5559190e3b78ec72c\n"
    },
    {
      "commit": "535570a7ce8fac764a45a603856d664227dba8c1",
      "tree": "a5ba080d1d2b5c1774f430840454103704a24195",
      "parents": [
        "0066b7b8d0b08514a405d70ff1dcf26d46a8874d",
        "979a22eaf9c62637c02ebd6f92ef6ea2888aa5be"
      ],
      "author": {
        "name": "Bryce Lee",
        "email": "brycelee@google.com",
        "time": "Sun Sep 27 15:11:22 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 27 15:11:22 2015 +0000"
      },
      "message": "am 979a22ea: am 6ad696c3: am f0740e0a: Merge \"Add ThermalObserver system service to capture thermal state uevents.\" into cw-e-dev\n\n* commit \u0027979a22eaf9c62637c02ebd6f92ef6ea2888aa5be\u0027:\n  Add ThermalObserver system service to capture thermal state uevents.\n"
    },
    {
      "commit": "979a22eaf9c62637c02ebd6f92ef6ea2888aa5be",
      "tree": "2ee06d6dae9d34f648335092f77c179a9572c1b1",
      "parents": [
        "7e9f6fbf0fce5de5bb6506d3e5a2342d5e942ded",
        "6ad696c35b80f70f19de304b53bdbfc6f5a265d8"
      ],
      "author": {
        "name": "Bryce Lee",
        "email": "brycelee@google.com",
        "time": "Sat Sep 26 06:55:22 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Sep 26 06:55:22 2015 +0000"
      },
      "message": "am 6ad696c3: am f0740e0a: Merge \"Add ThermalObserver system service to capture thermal state uevents.\" into cw-e-dev\n\n* commit \u00276ad696c35b80f70f19de304b53bdbfc6f5a265d8\u0027:\n  Add ThermalObserver system service to capture thermal state uevents.\n"
    },
    {
      "commit": "bc58f59da6226c6f1d240c95d566186f679fc310",
      "tree": "778b861c7bf3544cdca8b07baec17bd3f46f5d7a",
      "parents": [
        "184440cea399d2332b5dc138a9e8a47e9cde3398"
      ],
      "author": {
        "name": "Bryce Lee",
        "email": "brycelee@google.com",
        "time": "Fri Sep 25 16:43:01 2015 -0700"
      },
      "committer": {
        "name": "Bryce Lee",
        "email": "brycelee@google.com",
        "time": "Fri Sep 25 16:43:01 2015 -0700"
      },
      "message": "Add ThermalObserver system service to capture thermal state uevents.\n\nBug: 21445745\nChange-Id: I980d60b66ca51942a1fd62502d6cf1f09208fc3a\n"
    },
    {
      "commit": "03f46af3e194d58e2db61fe59e32d42bec8b8312",
      "tree": "ea09cc117264b397922126c3a044d14984acba75",
      "parents": [
        "96d9953f74ab16a9a63ebfe4119d5340ec734e87",
        "d04c6d19a589a2a0f60650675438c59ac6900f45"
      ],
      "author": {
        "name": "Alex Hills",
        "email": "ahills@google.com",
        "time": "Mon Sep 14 21:24:53 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 14 21:24:53 2015 +0000"
      },
      "message": "am d04c6d19: resolved conflicts for 693e11e5 to mnc-dr-dev-plus-aosp\n\n* commit \u0027d04c6d19a589a2a0f60650675438c59ac6900f45\u0027:\n  Cherry-pick system theme rebase to fix square UI on round watches\n"
    },
    {
      "commit": "d04c6d19a589a2a0f60650675438c59ac6900f45",
      "tree": "d95bcb8f52894ff373694bee7a40f1846fd5da51",
      "parents": [
        "e8c98b77854d39606960b0b6f5b5332c61e9a3d9",
        "693e11e56f5fc945d7af5d5213c6d844c7b88a5d"
      ],
      "author": {
        "name": "Alex Hills",
        "email": "ahills@google.com",
        "time": "Mon Sep 14 16:37:12 2015 -0400"
      },
      "committer": {
        "name": "Alex Hills",
        "email": "ahills@google.com",
        "time": "Mon Sep 14 17:03:58 2015 -0400"
      },
      "message": "resolved conflicts for 693e11e5 to mnc-dr-dev-plus-aosp\n\nChange-Id: I701841759a80f434a09b086492e817ca23a6a2e6\n"
    },
    {
      "commit": "3d2337eeb5c8b28bace281d049c5ca8cd13c8b70",
      "tree": "3b81a0833a501bff2a45d168853872f06a7bc632",
      "parents": [
        "5a45dc960b42eae66661665ff9a6bcb7e4a02c16"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 17:27:04 2015 -0400"
      },
      "committer": {
        "name": "Alex Hills",
        "email": "ahills@google.com",
        "time": "Mon Sep 14 10:56:02 2015 -0400"
      },
      "message": "Cherry-pick system theme rebase to fix square UI on round watches\n\nOur system themes were based on configurations that were added post-\ninit of the system theme.\n\nI96e695441543379e4d5fdf3cc6f18d9e6cf953b4 broke this, because there\nwas a race condition in the code for rebasing themes\n\nIf8fecde76d62738a8e55eddf898eafc468afdba2 (the cherry-picked commit)\nfixes the race condition and adds the rebasing back in.\n\nThis change cherry picks If8fecde76d62738a8e55eddf898eafc468afdba2.\n\nBug:23387146\nChange-Id: I0725028e48599fc6cd9731ae16c71474dd5827e5\n"
    },
    {
      "commit": "6d444185e55315a0111162609b1f619ee268bf3a",
      "tree": "03b65350ff700e459a9c9e4e434828f1b40ae21c",
      "parents": [
        "3d21421a440bb86dcd80bad8bc85fb1e859cd0d8",
        "fcf9ab5ab3e158cea2559ed4e7274dbfeb0a6e77"
      ],
      "author": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Thu Sep 03 00:12:30 2015 +0900"
      },
      "committer": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Thu Sep 03 00:12:30 2015 +0900"
      },
      "message": "resolved conflicts for merge of fcf9ab5a to master\n\nChange-Id: I69ad6e525430c5c4fc3c274b8bf6ebf653716124\n"
    },
    {
      "commit": "fcf9ab5ab3e158cea2559ed4e7274dbfeb0a6e77",
      "tree": "b6b618aff85b0f88983ee76f31aa71e6956c38e1",
      "parents": [
        "082fb1d8cb70952cda4d5ee1e79af3ee4572271a",
        "ebf9465d213336819b15e3b21d02afce64470d4f"
      ],
      "author": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Wed Sep 02 14:31:26 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 02 14:31:26 2015 +0000"
      },
      "message": "am ebf9465d: resolved conflicts for merge of ef57e5e0 to stage-aosp-master\n\n* commit \u0027ebf9465d213336819b15e3b21d02afce64470d4f\u0027:\n  Add trace code to system server.\n"
    },
    {
      "commit": "ebf9465d213336819b15e3b21d02afce64470d4f",
      "tree": "c561ddc0ab2431a8e525858d9e3aa214db744e9a",
      "parents": [
        "96343073d63c72afa75057129abea4f0d4f8c103",
        "ef57e5e03b042065e69c65e910065df7306d930c"
      ],
      "author": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Wed Sep 02 22:48:13 2015 +0900"
      },
      "committer": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Wed Sep 02 22:57:53 2015 +0900"
      },
      "message": "resolved conflicts for merge of ef57e5e0 to stage-aosp-master\n\nChange-Id: I1c31b38936dc74619dea27f0d5eecab43360bb8c\n"
    },
    {
      "commit": "1ab43d5978813f56899dbd3115fd7d9f96b4fe55",
      "tree": "9d8489fee92e85ba986d741bcb0be0658cbd0a2b",
      "parents": [
        "bd4c482be9c060d92919080c37e0d14fca94d2aa"
      ],
      "author": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Tue Jun 30 17:07:32 2015 +0900"
      },
      "committer": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Thu Aug 27 12:22:07 2015 +0900"
      },
      "message": "Add trace code to system server.\n\n- Add TRACE_TAG_SYSTEM_SERVER for tracing system server code.\n- Add a few more tracing code to the code paths related to boot.\n\nBUG: 21739901\nBUG: 22207144\nChange-Id: I08b424d2f83783f512c3818394099909cd55f327\n"
    },
    {
      "commit": "7309b123c423504bb18e3d78dd22a36f7271676a",
      "tree": "8e9f8a1e3d21e35ba51c0510da94ba7226ea8c2d",
      "parents": [
        "8c0a4d0f8b7160e94395e35fc4d396a71c217cb8"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Mon Aug 17 18:34:13 2015 -0700"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Tue Aug 25 13:29:04 2015 -0700"
      },
      "message": "Leverage WindowManagerInternal for private communication.\n\nThis CL changes following four methods from direct calling of\nWindowManagerService to calling via WindowManagerInternal.\n- getInputMethodWindowVisibleHeight\n  (introduced by I0e920ee79c526c3aea6872b063cf294e2ab081c8)\n- saveLastInputMethodWindowForTransition\n  (introduced by Idf7700271cf882dfbf35c9d16f0f173a791221bc)\n- isHardKeyboardAvailable\n  (introduced by I8a6a4a7efce50bfaec114117e33f97f27b1ef950)\n- setOnHardKeyboardStatusChangeListener\n  (introduced by Ica768083f95c33dc1e494a28ba7d8b6eb989b0ef)\n\nThis CL does mechanical code moving and does not change any behaviors.\n\nBug: 22285167\nChange-Id: I08e506050a0e495d62236b46e487848c967d185d\n"
    },
    {
      "commit": "02e8c2d4188a99077686451b320e7d1860e49bd7",
      "tree": "cc44b1e87d12cab49e8e31347017ac88519270fe",
      "parents": [
        "c87ad53299eec33371bb9669c1484db19b4e5451",
        "395cd017e66b81f9b223f5310cce9b827d156b4c"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu Aug 13 20:06:18 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 13 20:06:18 2015 +0000"
      },
      "message": "Merge \"Rebase system theme on configuration change\""
    },
    {
      "commit": "ae61c26534a3dd3a71bc4c7ab3993e6923f1a201",
      "tree": "79df531a504a0e5e73c39fc3124bb6b277bf4b9c",
      "parents": [
        "05f40a6a9f0ae154ffc609b3e2584418dd2dddd3",
        "0d2e3d3ea3cd1bd0f77b3fdd8da6b17261cdd799"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 12 11:02:48 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 11:02:48 2015 +0000"
      },
      "message": "am 0d2e3d3e: am c42acbdb: am 088c4155: am 86b6d204: am bf88205b: Fall back to persist.sys.language/country if locale isn\\\u0027t set.\n\n* commit \u00270d2e3d3ea3cd1bd0f77b3fdd8da6b17261cdd799\u0027:\n  Fall back to persist.sys.language/country if locale isn\u0027t set.\n"
    },
    {
      "commit": "0d2e3d3ea3cd1bd0f77b3fdd8da6b17261cdd799",
      "tree": "74c0799e9f8843355a40fb47c340c09bfe42357d",
      "parents": [
        "556b1f7330654012e3bb868a9d7867e3331306b1",
        "c42acbdb65d89b1e5fc1cafde4cbe0996c104f7a"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 12 10:55:33 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 10:55:33 2015 +0000"
      },
      "message": "am c42acbdb: am 088c4155: am 86b6d204: am bf88205b: Fall back to persist.sys.language/country if locale isn\\\u0027t set.\n\n* commit \u0027c42acbdb65d89b1e5fc1cafde4cbe0996c104f7a\u0027:\n  Fall back to persist.sys.language/country if locale isn\u0027t set.\n"
    },
    {
      "commit": "d29382aaf0dc68eb5a41621fedabeca4406efe06",
      "tree": "a1c4099a7c3dbe76a5ca70b3ce878efd229ed13f",
      "parents": [
        "d03c38e7041759dda3c11fc26c691661cfbe8e8b",
        "bf88205bef88f78ade5c6830e6203aa343387820"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 12 10:39:16 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 10:39:16 2015 +0000"
      },
      "message": "am bf88205b: Fall back to persist.sys.language/country if locale isn\\\u0027t set.\n\n* commit \u0027bf88205bef88f78ade5c6830e6203aa343387820\u0027:\n  Fall back to persist.sys.language/country if locale isn\u0027t set.\n"
    },
    {
      "commit": "86b6d204a5321bf2874c2cbee3452e674605c21f",
      "tree": "14ec31a6fb8e13120480f4a352586037c16aa232",
      "parents": [
        "e950a4b22caaf849bfeb68768931e0e793877119",
        "bf88205bef88f78ade5c6830e6203aa343387820"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 12 10:39:13 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 10:39:13 2015 +0000"
      },
      "message": "am bf88205b: Fall back to persist.sys.language/country if locale isn\\\u0027t set.\n\n* commit \u0027bf88205bef88f78ade5c6830e6203aa343387820\u0027:\n  Fall back to persist.sys.language/country if locale isn\u0027t set.\n"
    },
    {
      "commit": "bf88205bef88f78ade5c6830e6203aa343387820",
      "tree": "77928a8c4c09d75061796e6025368f0943c4b26c",
      "parents": [
        "e19b76cbb50db816c535d6d4a5bf125f52c04eba"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Aug 11 15:40:34 2015 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 12 11:03:46 2015 +0100"
      },
      "message": "Fall back to persist.sys.language/country if locale isn\u0027t set.\n\nThis will prevent users from losing their language setting when they\ntake an OTA to M.\n\nbug: 23021286\nChange-Id: Ifb66f6bf6a940ab745edac709321f3009ec6eab4\n"
    },
    {
      "commit": "395cd017e66b81f9b223f5310cce9b827d156b4c",
      "tree": "d665a33d763c8898782442db260bda6be3f63e24",
      "parents": [
        "5894b434aaf30933c26eb44689970926d274ed19"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 17:27:04 2015 -0400"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 17:27:04 2015 -0400"
      },
      "message": "Rebase system theme on configuration change\n\nAlso makes native theme accesses thread-safe to avoid a race condition\nwhen modifying the theme off the UI thread. Since drawable loading can\noccur off the UI thread, we need to ensure Theme access is thread-safe\nanyway.\n\nThis reverts commit c12ec70def2a5682c6cd7fdb3adaa82cc34d5bf6.\n\nChange-Id: If8fecde76d62738a8e55eddf898eafc468afdba2\n"
    },
    {
      "commit": "7bea76cecf14a1fcc5fe2847f6629a8c8901b938",
      "tree": "05c6793949ffb25766b0ecf5304089473ce106dd",
      "parents": [
        "c6659c3d649e1b3cd81b398c0d1fd601cb266494",
        "3e384531bed8f80867ce1bab9c8de315865be824"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 18:59:42 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 18:59:42 2015 +0000"
      },
      "message": "am 3e384531: am 1743988c: am 6c3a468c: am e720297f: am b4eb0640: Merge \"Avoid use-after-free race condition when rebasing theme\" into mnc-dev\n\n* commit \u00273e384531bed8f80867ce1bab9c8de315865be824\u0027:\n  Avoid use-after-free race condition when rebasing theme\n"
    },
    {
      "commit": "3e384531bed8f80867ce1bab9c8de315865be824",
      "tree": "2e44a983db008634e26093216e388d457e4b4e67",
      "parents": [
        "5e3e4f9b5832c4ddf3a4ad1944622966351e6ffe",
        "1743988cd7647af8c64c961d4ca5e9d4b4b7bc00"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 18:53:13 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 18:53:13 2015 +0000"
      },
      "message": "am 1743988c: am 6c3a468c: am e720297f: am b4eb0640: Merge \"Avoid use-after-free race condition when rebasing theme\" into mnc-dev\n\n* commit \u00271743988cd7647af8c64c961d4ca5e9d4b4b7bc00\u0027:\n  Avoid use-after-free race condition when rebasing theme\n"
    },
    {
      "commit": "3288e632501e30b10786f377be07f8a3f343cad3",
      "tree": "effc4b10ad3aa756ab05ac4a2eac18d6ee480e06",
      "parents": [
        "f18a0cfe13f5fa920be966d1bfc30ec2d37c3257",
        "b4eb06402fba62f94bb16cbe433fe99a8df7cb18"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 18:32:05 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 18:32:05 2015 +0000"
      },
      "message": "am b4eb0640: Merge \"Avoid use-after-free race condition when rebasing theme\" into mnc-dev\n\n* commit \u0027b4eb06402fba62f94bb16cbe433fe99a8df7cb18\u0027:\n  Avoid use-after-free race condition when rebasing theme\n"
    },
    {
      "commit": "e720297fd89d39325a34f0d8f54e55971aec7269",
      "tree": "bc41a9c7c6a6ab38af04e7866e3c965cce12cbef",
      "parents": [
        "5bba07eb01d923beea173712295d6b10c9762400",
        "b4eb06402fba62f94bb16cbe433fe99a8df7cb18"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 18:31:48 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 18:31:48 2015 +0000"
      },
      "message": "am b4eb0640: Merge \"Avoid use-after-free race condition when rebasing theme\" into mnc-dev\n\n* commit \u0027b4eb06402fba62f94bb16cbe433fe99a8df7cb18\u0027:\n  Avoid use-after-free race condition when rebasing theme\n"
    },
    {
      "commit": "c12ec70def2a5682c6cd7fdb3adaa82cc34d5bf6",
      "tree": "675a4890776210fa59308c912377c629a389433b",
      "parents": [
        "1fbc1b3b4b742cdba25d32d65a9813933a37005f"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 10:26:08 2015 -0400"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 10:26:08 2015 -0400"
      },
      "message": "Avoid use-after-free race condition when rebasing theme\n\n... by never rebasing the theme. We don\u0027t need to do this unless the\nsystem theme is configuration-dependent, which it is not currently.\n\nBug: 22943781\nChange-Id: I96e695441543379e4d5fdf3cc6f18d9e6cf953b4\n"
    },
    {
      "commit": "ea6e001e3182120ed790ff07b446ad4feece45da",
      "tree": "6bbc024e8bf36b979db1889eebc3081dd57f7186",
      "parents": [
        "3ad8a7840b034426ea5cd5e48605bbcedf059a1c",
        "6f52ee259201c320fe69004623efd1748874f628"
      ],
      "author": {
        "name": "Zhentao Sun",
        "email": "robinvane@google.com",
        "time": "Thu Jul 23 22:08:05 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 23 22:08:05 2015 +0000"
      },
      "message": "am 6f52ee25: am e965289b: am f26a9a20: am c6cd1f9a: Added service that listens for gestures.\n\n* commit \u00276f52ee259201c320fe69004623efd1748874f628\u0027:\n  Added service that listens for gestures.\n"
    },
    {
      "commit": "6f52ee259201c320fe69004623efd1748874f628",
      "tree": "39f970919a35476588fd72bea14d6af0b82f3f33",
      "parents": [
        "a1d61552f99bfa4720bf3f51d10adfe2b16c5dc6",
        "e965289b57eb1782580bc5a6bc153d508b7176be"
      ],
      "author": {
        "name": "Zhentao Sun",
        "email": "robinvane@google.com",
        "time": "Thu Jul 23 21:50:08 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 23 21:50:08 2015 +0000"
      },
      "message": "am e965289b: am f26a9a20: am c6cd1f9a: Added service that listens for gestures.\n\n* commit \u0027e965289b57eb1782580bc5a6bc153d508b7176be\u0027:\n  Added service that listens for gestures.\n"
    },
    {
      "commit": "c6cd1f9a83b2807ef7434b6775a07e1e9208d4e0",
      "tree": "dc92ab99fec7f7bd61b1e6ace47a2c2113a69924",
      "parents": [
        "58adc7ad48990f2ffa0d4858bd6910dd9eb6aabc"
      ],
      "author": {
        "name": "Zhentao Sun",
        "email": "robinvane@google.com",
        "time": "Tue Jul 21 17:43:53 2015 -0700"
      },
      "committer": {
        "name": "Zhentao Sun",
        "email": "robinvane@google.com",
        "time": "Wed Jul 22 17:42:41 2015 -0700"
      },
      "message": "Added service that listens for gestures.\n\nAdded the GestureLauncherService that listens for camera launch gesture\nand starts the camera app.\nOEMs need to specify the sensor type of the camera launch gesture in\ntheir overlays.\nIn the future, we can add more gesture support in this service.\n\nChange-Id: I0769e7ca71e08bd9159aacf29bdcefd316efd2f0\n"
    },
    {
      "commit": "85235aae1c46ab5f2e22ddbb80c8451b10fae662",
      "tree": "c89700a50ae2320c7bd8b6e23d7b609fb122866f",
      "parents": [
        "66754545e7e6b1fc3f146e29c04ba7a36cbc0219",
        "e72d0d47b8d495f565cfcfb22dc0de2d35103c2e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 07 15:53:33 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 07 15:53:33 2015 +0000"
      },
      "message": "am e72d0d47: am 66c8a2f9: am 0254af6f: Merge \"Fix \"Bluetooh\" logging typo.\"\n\n* commit \u0027e72d0d47b8d495f565cfcfb22dc0de2d35103c2e\u0027:\n  Fix \"Bluetooh\" logging typo.\n"
    },
    {
      "commit": "0be2ab3b5e22a55bf6571f6cd0f1d7effbb648e4",
      "tree": "7a7993e506a4130c9ebeb3afed6e4a44abca473e",
      "parents": [
        "e6c99bfbe3519fd8db302b504e0a8a19ba2ea0af",
        "66c8a2f92acedaa05639ceb0737b95be2fd56281"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 07 15:48:59 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 07 15:48:59 2015 +0000"
      },
      "message": "am 66c8a2f9: am 0254af6f: Merge \"Fix \"Bluetooh\" logging typo.\"\n\n* commit \u002766c8a2f92acedaa05639ceb0737b95be2fd56281\u0027:\n  Fix \"Bluetooh\" logging typo.\n"
    },
    {
      "commit": "e72d0d47b8d495f565cfcfb22dc0de2d35103c2e",
      "tree": "549fd96c4b5d2392976c071847586634c4d170f4",
      "parents": [
        "57b4531d227ad598bce4b59d8ece7ddf2343f5a9",
        "66c8a2f92acedaa05639ceb0737b95be2fd56281"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 07 06:31:40 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 07 06:31:40 2015 +0000"
      },
      "message": "am 66c8a2f9: am 0254af6f: Merge \"Fix \"Bluetooh\" logging typo.\"\n\n* commit \u002766c8a2f92acedaa05639ceb0737b95be2fd56281\u0027:\n  Fix \"Bluetooh\" logging typo.\n"
    },
    {
      "commit": "7271613ed6d0c8bdf6fe146cec7d22b485ca1100",
      "tree": "9cdddba93cc8fd6255d519f21be1f13888016830",
      "parents": [
        "16d520fce6a3cecdc6b50e184a00b9585b86e512"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 06 22:10:36 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 06 22:10:36 2015 -0700"
      },
      "message": "Fix \"Bluetooh\" logging typo.\n\nChange-Id: I2b9aea64f1b53e100ead6e71835bf5935b410eb9\n"
    },
    {
      "commit": "86b81e91373e3d035b7afb69f1792e32f7f5fcd7",
      "tree": "96b7f2a5119aa0432bc2cf2bfc39a7a9bc9a537b",
      "parents": [
        "7b293b5556e78028449e287f275f32a1ad298293",
        "d1e2789b5f6c7d412763649d75ce029886a83d53"
      ],
      "author": {
        "name": "Bart Sears",
        "email": "bsears@google.com",
        "time": "Sat Jul 04 00:15:01 2015 -0700"
      },
      "committer": {
        "name": "Bart Sears",
        "email": "bsears@google.com",
        "time": "Sat Jul 04 00:15:01 2015 -0700"
      },
      "message": "resolved conflicts for merge of d1e2789b to master\n\nChange-Id: Ibfbae4ec1d692854a13eaa09deac3134c3524126\n"
    },
    {
      "commit": "658bf2fa6d3bb1121c3c96abb62ca01d3abe95db",
      "tree": "d7731d3d67f19b6a78565cdedaa4cc72bd5a3e0b",
      "parents": [
        "d3ecb3e6f04a0f76c886238af6bef1d10b987a42"
      ],
      "author": {
        "name": "Miao Chou",
        "email": "mcchou@google.com",
        "time": "Fri Jun 26 17:14:35 2015 -0700"
      },
      "committer": {
        "name": "Andre Eisenbach",
        "email": "eisenbach@google.com",
        "time": "Wed Jul 01 19:09:44 2015 +0000"
      },
      "message": "Add BluetoothService to reduce resuming time after reboot\n\nAs a subclass of SystemService, BluetoothService wraps around\nBluetoothManagerService to unlock Auto-enabling Bluetooth earlier by overriding\nonBootPhase() and removes the need to wait for BOOT_COMPLETED message.\n\nBug:21705209\nChange-Id: I2acc41370a750d8416e11e662e06392326741d2c\n"
    },
    {
      "commit": "70f6c38644a4a6e28c016c265e6987bf00dd61f1",
      "tree": "d5d639203d244ccc7d8081008682ab37a6ad729c",
      "parents": [
        "05298735d333d3335d07ac96aa9daca797ff3f45"
      ],
      "author": {
        "name": "Xiaohui Chen",
        "email": "xiaohuic@google.com",
        "time": "Tue Apr 28 14:21:43 2015 -0700"
      },
      "committer": {
        "name": "Xiaohui Chen",
        "email": "xiaohuic@google.com",
        "time": "Tue Jun 23 15:25:37 2015 -0700"
      },
      "message": "Introduce system user and primary user.\n\nBug: 19913735\nChange-Id: I2c7855915d778cf80a7154314321ddd90e2eaaac\n"
    },
    {
      "commit": "15d48a16f645509cb0c6a1f3abf52ddd233cd8b5",
      "tree": "0c9a53fda50dcca7549cd29eb3ac9c0151fb0830",
      "parents": [
        "9a08fe2aca44f190162b198a726bc406ed19c1c7"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu Jun 18 15:15:16 2015 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu Jun 18 15:15:16 2015 -0700"
      },
      "message": "DO NOT MERGE: Remove DayNight theme\n\nDo not go gentle into that good night,\nOld age should burn and rave at close of day;\nRage, rage against the dying of the light.\n\nThough wise men at their end know dark is right,\nBecause their words had forked no lightning they\nDo not go gentle into that good night.\n\nBug: 21854466\nChange-Id: I0b7cd116c23f7df88e94f31b3aee7dd22a102804\n"
    },
    {
      "commit": "2ff4d9277446e45ad467784c536c4b1353e0292f",
      "tree": "9683afea58d684f4e7f84a47f0c4f85c35cfa977",
      "parents": [
        "1738f4e254441e75380b8eef784a8066e159d467",
        "485c2f8c5715c12bd84a20f9746ce40a1ff15e70"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 12 21:02:07 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 12 21:02:07 2015 +0000"
      },
      "message": "am 485c2f8c: am 4f4d54f3: am 1c24a8cd: Merge \"If we\\\u0027re out of space, retry background dexopting later\" into mnc-dev\n\n* commit \u0027485c2f8c5715c12bd84a20f9746ce40a1ff15e70\u0027:\n  If we\u0027re out of space, retry background dexopting later\n"
    },
    {
      "commit": "2c9655b3d4c1fb0687baa14730c6d97ab5a56789",
      "tree": "5cedbe4d7e5ec6454ecd617f0bf4d15508b4586d",
      "parents": [
        "3aa16d761efb970f16aa913dcda9a3cc458cc227"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 12 13:06:45 2015 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 12 13:06:45 2015 -0700"
      },
      "message": "If we\u0027re out of space, retry background dexopting later\n\nGive it 4 hours to give the user time to do stuff, then retry;\nrepeat until we have space to work in.\n\nBug 20468442\n\nChange-Id: Id4b11abcc38a9e2a50a062f0067a13ce0ae831ad\n"
    },
    {
      "commit": "b8850932d766007b7a177ad2cbcaf08bfc1dcc9c",
      "tree": "fb66cf920d55ec16525695ad00dbcec38b67be57",
      "parents": [
        "037926125b0a359ddd880b1911e7f0df4cad5ae4",
        "3c27a2303fdb6b222b7b7628fea7bc3c159990ff"
      ],
      "author": {
        "name": "Steve Paik",
        "email": "spaik@google.com",
        "time": "Thu Jun 11 15:30:02 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 11 15:30:03 2015 +0000"
      },
      "message": "Merge \"Disable AssetAtlasService when PRELOAD_RESOURCES is turned off\""
    },
    {
      "commit": "3c27a2303fdb6b222b7b7628fea7bc3c159990ff",
      "tree": "86815c92fe009cadee4bf58eb5e7e705f8901080",
      "parents": [
        "5d1c54e777786e5de68b1148d883e4054d508c98"
      ],
      "author": {
        "name": "Steve Paik",
        "email": "spaik@google.com",
        "time": "Wed Jun 10 18:25:44 2015 -0700"
      },
      "committer": {
        "name": "Steve Paik",
        "email": "spaik@google.com",
        "time": "Wed Jun 10 18:25:44 2015 -0700"
      },
      "message": "Disable AssetAtlasService when PRELOAD_RESOURCES is turned off\n\nChange-Id: Ie77810219c8d5dbff7e9364b60db2d1ea50bd685\n"
    },
    {
      "commit": "0935f3ce512a62f943d2cc4daa65145ad6937c34",
      "tree": "6f6e6830d351f0adc857d897d9391783b0822126",
      "parents": [
        "11a8d67fbbaae0c55e1b3269d89d03cac0f3729d"
      ],
      "author": {
        "name": "Tim Kilbourn",
        "email": "tkilbourn@google.com",
        "time": "Thu May 28 11:48:43 2015 -0700"
      },
      "committer": {
        "name": "Tim Kilbourn",
        "email": "tkilbourn@google.com",
        "time": "Thu Jun 04 09:57:38 2015 -0700"
      },
      "message": "Refactor DropBoxManagerService as a SystemService.\n\nMove the binder stub inside the service and inherit from SystemService\nto take advantage of SystemServiceManager.\n\nChange-Id: Ic6fff50ccfcf6c9626ffca8d61f627c055608953\n"
    },
    {
      "commit": "e54d245b993e1347cb32c23a6bdc907a45fab324",
      "tree": "be087de6d12733ca9800724ac77103a0b2173964",
      "parents": [
        "424681e43e454bfcbceb863ddccb875ea57ec26f"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed May 06 10:41:43 2015 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed May 06 10:41:43 2015 -0700"
      },
      "message": "Improve keying for theme caches, rebase system theme on config change\n\nThemes now use an array of applied styles rather than a String to store\ntheir history. They are keyed based on a hash code computed from the\nhistory of applied styles. The themed drawable cache has been abstracted\nout into its own class.\n\nAlso updates system context to use DayNight as the default and ensures\nthat GlobalActions uses the correct context, which exercises the change.\n\nCTS tests have been added in another CL.\n\nBug: 20421157\nChange-Id: I9eb4b7dffd198ad24d02f656eaf0839570b59caa\n"
    },
    {
      "commit": "d1808401ca3bfd6b6b9a975c1e739b194d18f849",
      "tree": "50c16a5c966772fd3b3ac4f7d2e79c97252935c7",
      "parents": [
        "44b60be189183138437a3faf9a73388af0efcf44",
        "059ded5a7b7389b7eefc2502bd712228931ed107"
      ],
      "author": {
        "name": "Prerepa Viswanadham",
        "email": "dham@google.com",
        "time": "Tue May 05 01:05:57 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 05 01:06:38 2015 +0000"
      },
      "message": "Merge changes from topic \u0027mwd-merge-050415\u0027 into mnc-dev\n\n* changes:\n  Merge commit \u0027b6f59f4\u0027 into master_merge\n  Merge commit \u0027f6db0ce\u0027 into master_merge\n  Merge commit \u002717455a3\u0027 into master_merge\n  Merge commit \u0027b4d5b32\u0027 into master_merge\n  Merge commit \u0027a1a2fa7\u0027 into master_merge\n  Merge commit \u00278dfdb98\u0027 into master_merge\n  Merge commit \u0027eba66c3\u0027 into master_merge\n"
    },
    {
      "commit": "b9d71a6f89b1183f6389b1774652445a420c6cbf",
      "tree": "b6f17102b2f86b40630e4a7cd681721797a8f324",
      "parents": [
        "9fc943d1a69f2ab0f6d8285b09aef7e344a1fd1a"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 30 10:38:13 2015 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri May 01 13:56:04 2015 -0700"
      },
      "message": "Add body sensors app op - framework base\n\nChange-Id: Idd5cd573fab3405e5b2a6e51d2d9d115650826e9\n"
    },
    {
      "commit": "df7f02b6e098dbcda6a6d52252c31ee2e02d8e00",
      "tree": "7c2b68e5cbade523fbffc9164415c8f65c9ec0ca",
      "parents": [
        "5a63f6c222874109ddbf4d9732d911532e0fea0c",
        "ad61b8336aa9627a6ae19580bbdc370dc8bd6810"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Thu Apr 30 12:47:20 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 30 12:47:20 2015 +0000"
      },
      "message": "am ad61b833: Merge \"Fix no vibration during shutdown.\"\n\n* commit \u0027ad61b8336aa9627a6ae19580bbdc370dc8bd6810\u0027:\n  Fix no vibration during shutdown.\n"
    },
    {
      "commit": "0b4daca9ba54b7252ea8c159218391380eb00c8a",
      "tree": "f613c1a320934f01ec040427c84ee00371cb13fe",
      "parents": [
        "5686780404a41901d226cc7ba506c1c0ba284713"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 27 09:47:32 2015 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 29 12:38:09 2015 -0700"
      },
      "message": "Implement user-settable power save whitelist.\n\nThe whitelist is now maintained by DeviceIdleController,\nwhich is moving out into its own independent system service.\nNetwork stats now queries it for the whitelist, instead of\ncollecting that itself.\n\nAlso did a few improvements in alarm manager -- made the\ncode for moving alarms out of the pending list more robust,\nand fixed the debug output to always print the contents of\nthe pending list even if we aren\u0027t in a pending state.  (That\nwould have helped me identify the problem much earlier.)\n\nChange-Id: I0f7119d4c553c3af4d77b2f71246fa6e2c13c561\n"
    },
    {
      "commit": "5d6443bf7c087167e47ea39b13e6af09cb43ad97",
      "tree": "0415e23f50ea376a96c4b28df732a238bc435f07",
      "parents": [
        "834a91dda7724974fbd93bc65b9dd7178edddcdd"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 10 20:15:01 2015 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 13 01:51:22 2015 -0700"
      },
      "message": "Set initial screen brightness earlier in the boot process.\n\nPreviously we had to wait for systemReady before setting the brightness\ndue to the order in which the display power controller was initialized.\nUnfortunately it could take us a rather long time to reach that stage,\nparticularly after an OTA where the screen would remain at maximum\nbrightness for minutes while \"Optimizing Apps\".\n\nThis change moves the brightness backlight setting code deeper\ninto the display manager which has a couple of nice side-benefits\nin that it now becomes much easier to coordinate display power mode\nchanges with display backlight changes.  So this change also resolves\nsome issued with changing the backlight while in DOZE_SUSPEND and\nensuring that backlight changes generally end up being performed\nbefore executing a power mode change except in the case where the\ndisplay needs to come out of suspend first.  (So now the backlight\nwill be set before entering DOZE from the ON state.)\n\nDeleted some dead code in LightService which was in the way.\n\nBug: 19029490\nChange-Id: I494b5223e676248daf2ff8be3ec338845977f73c\n"
    },
    {
      "commit": "9d21ee5d7755755cc5695a9d7cea00a05a4b92aa",
      "tree": "6209cce943f5000f6ce4b4d03ac2ad075d813b4d",
      "parents": [
        "75e4f353835d62c8625fb145e3aba1d442f93a90"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Fri Mar 20 22:18:55 2015 -0700"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Mar 31 12:01:22 2015 -0700"
      },
      "message": "Add CameraService to system server.\n\n- Adds a camera service to system server that forwards events to the\n  mediaserver camera service.\n- Notify the camera service when the device user changes.\n\nBug: 19186859\nChange-Id: I172a2ce46c8e8a131ae7e8dd99d60c5f4f0d6668\n"
    },
    {
      "commit": "c74e289a6537227ab80fa59da9d5d6f88dc9fe33",
      "tree": "ea311fc88c57608572ad1d51b57b454a8cdba729",
      "parents": [
        "6199bffef2eca134c44f0f56f8ddf9f0b8f41319",
        "edc524c90506d80e0fc5fb67e8de7b8f3ef53439"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 30 19:39:25 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 30 19:39:27 2015 +0000"
      },
      "message": "Merge \"Add GraphicsStatsService\""
    },
    {
      "commit": "5781cd5b218dc3e5a19d8f69e6fb9f310bed4df6",
      "tree": "7c74f6c49adbe1da5d4b580bbdd69561116f76b9",
      "parents": [
        "1e650e26a7bb2f02635530a46ecd715f9911d40e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Mar 27 13:23:41 2015 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Mar 27 13:23:41 2015 -0700"
      },
      "message": "Make the MIDI Manager optional, enabled by \"android.software.midi\" feature\n\nChange-Id: I76d442ea28beea4b9e2876bfef501d8f61403702\n"
    },
    {
      "commit": "edc524c90506d80e0fc5fb67e8de7b8f3ef53439",
      "tree": "098c18daa80655fe0fa3faab7c39332685c163ef",
      "parents": [
        "1cef4196886b0cc1238111d396c1e3665a5fd2ae"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 18 15:24:33 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 27 11:50:56 2015 -0700"
      },
      "message": "Add GraphicsStatsService\n\nMore S\u0027s for More Speed\n\nSplit JankTracker\u0027s backing data from the\nclass to allow for data relocation to/from ashmem regions\n\nPack the jank tracking data to fit in 256 bytes\n\nChange-Id: Ife86a64b71a328fbd0c8075fe6a0404e081f725b\n"
    },
    {
      "commit": "221d2cbf2f418be8de22f5cf3d79a25be1b8d1be",
      "tree": "fb2139c98caa4c739e633b4c45402add6747d63c",
      "parents": [
        "e4df25eded03c110e5feca6ba811ae10dd03735c",
        "b4f01b966bd2ebf89623f9c65462b8b8b7034461"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Mar 24 22:30:13 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 24 22:30:14 2015 +0000"
      },
      "message": "Merge \"Remove the ability to disable audio service.\""
    },
    {
      "commit": "b4f01b966bd2ebf89623f9c65462b8b8b7034461",
      "tree": "ca779ab99ad750e0f90748d282ecfbc504622e2c",
      "parents": [
        "1cef4196886b0cc1238111d396c1e3665a5fd2ae"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Mar 24 12:40:15 2015 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Mar 24 17:22:13 2015 -0400"
      },
      "message": "Remove the ability to disable audio service.\n\nRunning in a configuration without audio service is not fully tested.\nRemove the configuration option for now. Also remove unused delegation\nlayer in SoundPool.\n\nBug: 19891112\nChange-Id: I47be0e32d54b8ef8fa25cf47b85eacf8a4969500\n"
    },
    {
      "commit": "88e98dfa59e68a860d8c3b462ec03bc0b06d6b5c",
      "tree": "10e846a1db4f2307eaa5a32c920e2e9ec0aee79b",
      "parents": [
        "e7f931c4505a6bd62e01bef5193dd724571a672b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 23 13:29:14 2015 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 24 11:03:49 2015 -0700"
      },
      "message": "More work on device idle mode.\n\n- There is now an API for people to find out about\n  its state.\n- Moved DeviceIdleController to be closer to the\n  power manager implementation, since they are\n  closely related.\n- Job scheduler now knows about idle state and doesn\u0027t\n  run jobs while the device is idle.\n- Battery stats now keeps track of \"idling\" vs \"idle mode\".\n  Idling is when we consider the device to be idle,\n  independent of whether we are actually in deep idle mode.\n  This allows us to keep track of longer-term changes\n  independently of cycling in and out of idle mode.\n- Battery stats also now keeps track of package changes in\n  its daily stats.\n- Small optimization to network policy manager service to\n  not touch uids that do not have the NETWORK permission.\n\nChange-Id: I0b3304fb3722c78cdfdd0c1eada7369ece7cbcf9\n"
    },
    {
      "commit": "356176177633a619f4a916248536e4e7a5fb9b2e",
      "tree": "32893c6fc11bae091e7ad4daa0e53c9e9757f726",
      "parents": [
        "2a16460c7c914729e9c256ce39d681524d53b7dc",
        "05199e83a460683e2af06212b0dc7310647e8502"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 23 18:33:08 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 23 18:33:10 2015 +0000"
      },
      "message": "Merge \"Set the appliance (tv/watch) in the configuration earlier\""
    },
    {
      "commit": "bf2673384cdea54eef2ca1c3e6ee35f5a3ce0e8a",
      "tree": "0439a8402f2e2bd7c33235abb0f62b05f2797a53",
      "parents": [
        "afa10ad39a7effd964d6afc83dab891e98856e1d",
        "56e629322f0739a04c8ff48915226ecf36a13b44"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Mar 22 20:03:54 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Mar 22 20:03:55 2015 +0000"
      },
      "message": "Merge \"Bring MountService into the SystemService world.\""
    },
    {
      "commit": "56e629322f0739a04c8ff48915226ecf36a13b44",
      "tree": "b19a76026e7aacd9809487f3a51e22aa1a99b22f",
      "parents": [
        "ed7cfb67e7e697e544ac1220170af741e9e117d6"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Mar 21 20:41:00 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Mar 21 20:41:00 2015 -0700"
      },
      "message": "Bring MountService into the SystemService world.\n\nChange-Id: I7f7db49ff373b199f7b81f184a7c62bee682af67\n"
    },
    {
      "commit": "05199e83a460683e2af06212b0dc7310647e8502",
      "tree": "4848a34dfcd33fdccddaa9595c767b2deeb75adf",
      "parents": [
        "f9eb4b90fe4b00f9f9c8091eb6080d027a6fac9a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 19 14:37:11 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 19 14:40:25 2015 -0700"
      },
      "message": "Set the appliance (tv/watch) in the configuration earlier\n\nSome UI is displayed (boot/optimizing) before the configuration\nhas been completely set. This noteably happens for watches and\nTVs because UIModeManagerService hasn\u0027t started yet.\n\nUIModeManagerService is started earlier, and its dependency\nTwilightService is loaded during the \"all system services ready\"\nboot phase.\n\nb/18388692\n\nChange-Id: Iabdf8ac3eb04ebcb44779d752e19042769cc65c6\n"
    },
    {
      "commit": "8ad2af7e5b28f71e7bdfc1bb097937c6c1d22b18",
      "tree": "9b954b257d7c6e8ea50a4b7fb32e69cad5a0ad99",
      "parents": [
        "27eac1d58fe0b7ca3a2e27f5ed64eff232745f45"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 17 17:00:24 2015 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 19 11:10:55 2015 -0700"
      },
      "message": "First stab at device idle mode.\n\nIntroduce a new device idle controller service that\nmonitor\u0027s the device state and determines when to go\nin to idle mode.  When in idle mode, all we do right\nnow is turn off network access the same as we do for\npower save mode.  Many more things should come in the\nfuture -- stopping the alarm manager from scheduling\n(most) alarms, telling GmsCore for it to stop doing\nstuff, etc.\n\nBattery stats now has state tracking for devie idle\nmode, as well as events for the reasons we can come\nout of idle mode (significant motion or the device\nbecoming active).  Also added new events noting when\npackages are installed.\n\nRenamed the \"low power\" event in battery stats to\n\"power save\" because the former was just way too\nconfusing.\n\nFinally, fix buffer size reading kernel wake locks.\n(Stupidly, just increasing the buffer size.  Ideally\nwe should try to be smarter and grow our buffer to\nfit the data available, but I\u0027ll leave that for\nanother time.)\n\nChange-Id: I0be2062466c83ee9d890c6cf5a228d9cc4090eca\n"
    },
    {
      "commit": "d3b371755df509cabbc5b4451df83309be5439b0",
      "tree": "70d3cd4df91e053459d63cdbc1d1a41c1a25f45b",
      "parents": [
        "28e6aeca3aad075ef4fd7aab08cd1ad1ff9eb555"
      ],
      "author": {
        "name": "riddle_hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Thu Mar 19 01:11:55 2015 +0800"
      },
      "committer": {
        "name": "Riddle Hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Wed Mar 18 19:01:36 2015 +0000"
      },
      "message": "Fix no vibration during shutdown.\n\nIn ShutdownThread:rebootOrShutdown, the vibrator is created\nby \"new SystemVibrator()\" which will use default constructor\nof Vibrator.\n\nAnd because system server is not bound application,\nActivityThread.currentPackageName will be null.\nThen the member mPackageName of Vibrator is null.\n\nWhen doing vibration:\nVibratorService.startVibrationLocked\n -\u003e mAppOpsService.startOperation\n -\u003e getOpsLocked (null package will get null op)\n -\u003e return MODE_ERRORED\n -\u003e no vibration\n\nhttps://code.google.com/p/android/issues/detail?id\u003d160830\n\nPass null context in SystemServer.performPendingShutdown\nbecause vibrator service is not ready, and from the call\nsequence, there is no available context to use.\n\nChange-Id: I3e0175ba6dc2e1a92787873eda4461fba6e89783\n"
    },
    {
      "commit": "0ea7b1b094def6b4db6b9b50df2e7dbf44c5c5ad",
      "tree": "e819b1a3b1daf6d99fba0f07a7b632a99d22b5fd",
      "parents": [
        "1569f98ce18c696d624af56a22a47f772d51b7c8"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Nov 25 21:52:12 2014 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Mar 05 16:06:43 2015 +0900"
      },
      "message": "Enable Ethernet if the device has FEATURE_USB_HOST.\n\nAny device that supports USB OTG is capable of running Ethernet\nvia a USB OTG cable and Ethernet to USB adapter.\n\nCurrently, we only start the Ethernet system service if the\ndevice has FEATURE_ETHERNET, but this requires that every device\nexplicitly declare FEATURE_ETHERNET, which causes bugs like\nhttp://b/18515146 , where the L OTA broke Ethernet on nakasi.\n\nTherefore, start the Ethernet service on all devices that have\nFEATURE_USB_HOST.\n\nBug: 18515146\nChange-Id: I3b4e85d1ad8e1aea9baa046a27f5b4dd68c42028\n"
    },
    {
      "commit": "08c7116ab9cd04ad6dd3c04aa1017237e7f409ac",
      "tree": "6ddb0659a3ecd024e0165ba050940bc40ea257fe",
      "parents": [
        "3062e57072145ba5e71ba8b2cf565d3453db04a7"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Sat Feb 28 13:12:17 2015 -0500"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Sat Feb 28 14:47:49 2015 -0500"
      },
      "message": "Remove unused imports in frameworks/base.\n\nChange-Id: I031443de83f93eb57a98863001826671b18f3b17\n"
    },
    {
      "commit": "6156017c2217d0fbbbb03434986250ec6bbd69d8",
      "tree": "2bf29bdfad945edeeb161b9ef9bb6b8108093042",
      "parents": [
        "7d85bc4c435bc37284a814fb8baf53980396ab5b"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Feb 06 19:46:04 2015 -0500"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Mon Feb 09 17:13:38 2015 -0500"
      },
      "message": "Move AudioService to services.\n\n...and a few dependencies. Move remaining shared items to AudioSystem.\n\nChange-Id: Ib9623ff867678d34977337856bb0156e8cdaeeb5\n"
    },
    {
      "commit": "10024b3dc12a8552c1547b67810c77b865045cc8",
      "tree": "ad7f453999f8387077c40251355781e0d15cb4d1",
      "parents": [
        "34b064a1406ebb2eb10b5b1f24c845891748c238"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Dec 11 13:44:20 2014 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Jan 14 16:51:54 2015 -0800"
      },
      "message": "MidiManager updates:\n\nMIDI ports are now implemented as file descriptors directly between the sender\nand receiver, so the MidiService is no longer in the message path.\n\nTo facilitate the above, each port has its own file descriptor, rather than multiplexing\nall ports on a device through a single socket.\n\nAdded a new class MidiDeviceServer, which is used by implementors of MIDI devices.\nThis replaces the MidiVirtualDevice class (which only was included in changes that were reviewed but never submitted).\n\nThe USB MIDI implementation has moved from the MIDI service to the USB service.\nThe USB MIDI implementation uses MidiDeviceServer as its interface, so we now have a common\ninterface for all MIDI device implementations.\n\nChange-Id: I8effd1583f344beb6c940c3a24dbf20b477a6436\n"
    },
    {
      "commit": "8c07abe2206bf885d9ecf3eb8659bddd6e2c6633",
      "tree": "a8592ce8d1d20b6a1e9a8927a67643dea1fc7ff8",
      "parents": [
        "dc460d3512d0861404bb7a076109f77f5c78ad82",
        "02775fca2b78af8089e9f50575ca639898f4f21c"
      ],
      "author": {
        "name": "Santos Cordon",
        "email": "santoscordon@google.com",
        "time": "Tue Dec 09 23:20:31 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 09 23:20:31 2014 +0000"
      },
      "message": "am 02775fca: am 8dd185b0: am 5d2c1e69: (Telecom-system part 3) Adding Telecom Loader Service\n\n* commit \u002702775fca2b78af8089e9f50575ca639898f4f21c\u0027:\n  (Telecom-system part 3) Adding Telecom Loader Service\n"
    },
    {
      "commit": "02775fca2b78af8089e9f50575ca639898f4f21c",
      "tree": "90d0667739942a10de6bec60c4576c283be2f6db",
      "parents": [
        "ea06d6ceb70a0a091cae674bb7296bb470f7e594",
        "8dd185b08fae8d41bec558ab5a63012454cbb78e"
      ],
      "author": {
        "name": "Santos Cordon",
        "email": "santoscordon@google.com",
        "time": "Tue Dec 09 00:18:08 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 09 00:18:08 2014 +0000"
      },
      "message": "am 8dd185b0: am 5d2c1e69: (Telecom-system part 3) Adding Telecom Loader Service\n\n* commit \u00278dd185b08fae8d41bec558ab5a63012454cbb78e\u0027:\n  (Telecom-system part 3) Adding Telecom Loader Service\n"
    },
    {
      "commit": "5d2c1e69ecb851121177396ac376dee1fb41d421",
      "tree": "a51a21da5660fa306eb1f6da4a88c17edd59981a",
      "parents": [
        "4df65bf1eb454814954421403da9f8b5fcb82180"
      ],
      "author": {
        "name": "Santos Cordon",
        "email": "santoscordon@google.com",
        "time": "Fri Nov 21 15:20:15 2014 -0800"
      },
      "committer": {
        "name": "Santos Cordon",
        "email": "santoscordon@google.com",
        "time": "Mon Dec 08 23:30:10 2014 +0000"
      },
      "message": "(Telecom-system part 3) Adding Telecom Loader Service\n\nBug: 18112269\nChange-Id: I85ab03156bf906fdc72b459c4c68240ab3bf1894\n"
    },
    {
      "commit": "67f8e8bd8927f24147d7a1edd6ec3db1a54233b2",
      "tree": "9f559cd794ceeb33e8b1a92bbdfcfe0937602c2c",
      "parents": [
        "0927c43c38c2ef12e8b15490adf0d5d3796c39b7"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Dec 01 13:54:59 2014 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Dec 08 10:45:37 2014 -0800"
      },
      "message": "MIDI Manager work in progress\n\nStill to do:\n\nAdd MidiInputPort and MidiOutputPort classes\nSchedule sending MIDI events in the future\nSecurity/permissions\nReconsider interface for virtual devices\nLook into performance optimizations\n\nChange-Id: I9b7d63b196996a04be0a830efa913043da1328a8\n"
    },
    {
      "commit": "6ec2cbd8d2b26714d5771e5560bdd2b5b042287b",
      "tree": "ce057746c26239e853d8972cdf9b712612335488",
      "parents": [
        "7dedb1242567061b5651c671a221185b1ba901c8",
        "c25cfc57e0d863b002620f5e7dd14822418c678f"
      ],
      "author": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Mon Dec 01 23:59:50 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 01 23:59:50 2014 +0000"
      },
      "message": "am c25cfc57: am 24d02652: Merge \"Prevent EntropyMixer from registering with service manager.\"\n\n* commit \u0027c25cfc57e0d863b002620f5e7dd14822418c678f\u0027:\n  Prevent EntropyMixer from registering with service manager.\n"
    },
    {
      "commit": "24d02652bf8df12a41acf500d958109ef3d99b9a",
      "tree": "8c62e9d909acb3816ca572c75ec110333a0fc9b8",
      "parents": [
        "c859b85cb530e608da775bb18744a996483a0311",
        "fe8afa99a7109e7237b5e51271f6a94101dc7e68"
      ],
      "author": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Mon Dec 01 23:49:25 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 01 23:49:26 2014 +0000"
      },
      "message": "Merge \"Prevent EntropyMixer from registering with service manager.\""
    },
    {
      "commit": "fe8afa99a7109e7237b5e51271f6a94101dc7e68",
      "tree": "d01faad0eb6e026caaabbc0cf9399a55e0757b9b",
      "parents": [
        "fc54573373ff965aa40cccdc1ab11c1c880c8930"
      ],
      "author": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Tue Nov 25 12:59:12 2014 -0800"
      },
      "committer": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Wed Nov 26 13:50:30 2014 -0800"
      },
      "message": "Prevent EntropyMixer from registering with service manager.\n\nEntropyMixer is designed to be triggered in two ways, as either the\nresult of a self-set timer or of one of three system broadcasts.  It is not\nmeant to be triggered in any other way, so exposing it via servicemanager\nis undesirable.\n\nBug: 18106000\n\nCherry-pick of commit: 9287e0dd272b85b475e33bcbd7d868517a0f98f9\n\nChange-Id: I9aeb35e7ffde75090f4234ea193514fb883b1425\n"
    },
    {
      "commit": "9fd6d9d9952b14bbef7e3f31250ae11a6a7a5b49",
      "tree": "75ecc940d766321c5aed07a5b9347b678f2129d7",
      "parents": [
        "0e0dbf9367371a0315461f9afd5167d56fc9428c",
        "4e3f5d3fe41c0ecf68f5c5f2a4bb89ea79ffab15"
      ],
      "author": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Wed Nov 26 17:22:59 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 26 17:23:01 2014 +0000"
      },
      "message": "Merge \"Remove if(true) line.\""
    },
    {
      "commit": "0e0dbf9367371a0315461f9afd5167d56fc9428c",
      "tree": "6bff63fb974587bb248e5da45f95b0a12907b3ef",
      "parents": [
        "e2d619b6633616f8a993ff7a9ea889c258b40153",
        "9287e0dd272b85b475e33bcbd7d868517a0f98f9"
      ],
      "author": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Wed Nov 26 17:16:58 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 26 17:17:00 2014 +0000"
      },
      "message": "Merge \"Prevent EntropyMixer from registering with service manager.\""
    },
    {
      "commit": "4e3f5d3fe41c0ecf68f5c5f2a4bb89ea79ffab15",
      "tree": "aec7d479c91347c00473cc31784918c93f9fc7cc",
      "parents": [
        "3a1c4db53ee41fb34bbb6314886e2e1a8ad9889c"
      ],
      "author": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Tue Nov 25 15:33:26 2014 -0800"
      },
      "committer": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Wed Nov 26 09:06:57 2014 -0800"
      },
      "message": "Remove if(true) line.\n\nCommit: e4d9a01bfc7451afff1ed399a5801c7aa2af2831 introduced an\nif (true) block with the intention of changing it.  Remove it.\n\nChange-Id: Ida637cb69c57b7b676f37a3397d72e0bf010523a\n"
    },
    {
      "commit": "c9269da26cad88cc4d2fd84607e5245b19b29067",
      "tree": "44799e54056a4da76b0184800f78ef877c632416",
      "parents": [
        "ab1a53c509edbc8bacd944233335587dffd95999",
        "edda97c9ffc4fae08744e42fdbf60040e8f97b99"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Nov 26 11:10:48 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 11:10:48 2014 +0000"
      },
      "message": "am edda97c9: am fdbef408: Merge \"Start MountService before performBootDexOpt\"\n\n* commit \u0027edda97c9ffc4fae08744e42fdbf60040e8f97b99\u0027:\n  Start MountService before performBootDexOpt\n"
    },
    {
      "commit": "fdbef4081d715de59525d58d44881b00f616616f",
      "tree": "2d8083a71d5a056092bb5f810c81aa88ad57535c",
      "parents": [
        "af5bd75b3d65fc710784f59d1c22c164312e2691",
        "ada454152e0e2a1771f2d6574057afdb5fe01fe4"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Nov 26 10:59:28 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 26 10:59:29 2014 +0000"
      },
      "message": "Merge \"Start MountService before performBootDexOpt\""
    },
    {
      "commit": "9287e0dd272b85b475e33bcbd7d868517a0f98f9",
      "tree": "316b63d497df27d14ea5109e1d2883b1353acef7",
      "parents": [
        "3a1c4db53ee41fb34bbb6314886e2e1a8ad9889c"
      ],
      "author": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Tue Nov 25 12:59:12 2014 -0800"
      },
      "committer": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Tue Nov 25 12:59:12 2014 -0800"
      },
      "message": "Prevent EntropyMixer from registering with service manager.\n\nEntropyMixer is designed to be triggered in two ways, as either the\nresult of a self-set timer or of one of three system broadcasts.  It is not\nmeant to be triggered in any other way, so exposing it via servicemanager\nis undesirable.\n\nBug: 18106000\nChange-Id: I9aeb35e7ffde75090f4234ea193514fb883b1425\n"
    },
    {
      "commit": "4a84116d112f7467d73ff7ca4102dd26ea92d776",
      "tree": "7ad8cb50bd18833dda4d8303b93df0647846e27a",
      "parents": [
        "59093d925decaf6ddf2e952de25e3cdd1b492d81"
      ],
      "author": {
        "name": "padarshr",
        "email": "padarshr@codeaurora.org",
        "time": "Wed Nov 05 16:54:50 2014 +0530"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 25 10:42:15 2014 -0800"
      },
      "message": "Start MountService before performBootDexOpt\n\nThis change is to start Mountservice before starting\nperformBootDexOpt, as in one case, in performBootDexOpt\nwhen system upgrade happens, StorageManager will be started to\nget the low threshold of DataDir. But, at this point, as\nMountservice is still not up, StorageManager will end up\nhaving a null object of Mountservice.\n\nChange-Id: I6dec474266faa5de67449c1bbe6ef30791e5ecaa\n"
    },
    {
      "commit": "343f478241fab49c909b229d6876ff8405e7b0d5",
      "tree": "b51a935e8cc0dc55b6ee3d0c8d58e810380b1bcc",
      "parents": [
        "d843564331e2db18166d3deb8570502092d532ea"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Nov 10 14:23:41 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Nov 19 14:41:08 2014 +0000"
      },
      "message": "Tell installd when boot completes.\n\ninstalld can then clear the \".booting\" marker from the dalvik-cache\n(owned by root). This marker is used to detect boot loops.\n\nbug: 18280671\n\n(cherry picked from commit 76a748e62f354c799342044f724e1f4b80121837)\n\nChange-Id: I2364c05837ac04d428b5a34ab1802964a11d2df4\n"
    },
    {
      "commit": "ada454152e0e2a1771f2d6574057afdb5fe01fe4",
      "tree": "f47c56ea12c74b34f161c5444bf906b1829f52a0",
      "parents": [
        "a58336f6c8aa44373485e5a6d7ec32677387a935"
      ],
      "author": {
        "name": "padarshr",
        "email": "padarshr@codeaurora.org",
        "time": "Wed Nov 05 16:54:50 2014 +0530"
      },
      "committer": {
        "name": "Maunik Shah",
        "email": "mshah@codeaurora.org",
        "time": "Tue Nov 18 10:53:18 2014 +0000"
      },
      "message": "Start MountService before performBootDexOpt\n\nThis change is to start Mountservice before starting\nperformBootDexOpt, as in one case, in performBootDexOpt\nwhen system upgrade happens, StorageManager will be started to\nget the low threshold of DataDir. But, at this point, as\nMountservice is still not up, StorageManager will end up\nhaving a null object of Mountservice.\n\nChange-Id: I6dec474266faa5de67449c1bbe6ef30791e5ecaa\n"
    },
    {
      "commit": "76a748e62f354c799342044f724e1f4b80121837",
      "tree": "72248a91d6be7824705f5cd508afd522802ed3da",
      "parents": [
        "54a5ca1aad1bdbb154ca731ab9a6c026d58a42d6"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Nov 10 14:23:41 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Nov 11 10:50:46 2014 +0000"
      },
      "message": "Tell installd when boot completes.\n\ninstalld can then clear the \".booting\" marker from the dalvik-cache\n(owned by root). This marker is used to detect boot loops.\n\nbug: 18280671\n\nChange-Id: I878f1463c7f523892605c17b980a51ac3b6645e2\n"
    },
    {
      "commit": "7eb599b267d00cbde891c0a87924f2f5086f4497",
      "tree": "01978b12641d7c03ff3edecc8e2f8d672246a5a8",
      "parents": [
        "f6e297398ba23ce7d26cf2e0efaf0d8a2230fe1c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 22 15:57:32 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Oct 23 11:27:42 2014 -0700"
      },
      "message": "Get UsageStats if no PackageUsage is available for boot dexopt filtering.\n\nBug: 17191977\nChange-Id: I33e18459e49afa42b8e8218574a2434e5205a6da\n"
    },
    {
      "commit": "2cab8825b3214b67b9462eaf5a1d777e9888d488",
      "tree": "7d5d85aeca9850a2ed88aea7140d1317eeb72eaf",
      "parents": [
        "fe09db1e0d5af46e7b643c37ba52f62500b7f043"
      ],
      "author": {
        "name": "Chenjie Luo",
        "email": "cjluo@google.com",
        "time": "Thu Oct 16 13:31:39 2014 -0700"
      },
      "committer": {
        "name": "Chenjie Luo",
        "email": "cjluo@google.com",
        "time": "Thu Oct 16 13:33:25 2014 -0700"
      },
      "message": "Add system property config.disable_networktime to configure NetworkTimeUpdateService\n\nBug: 17934875\nChange-Id: Ie5acf7266a5766f407db8f23d2c3d26920fa4020\n"
    },
    {
      "commit": "d25e4efdc1974131bfbdaecbec9302a891567a94",
      "tree": "d182dcd57e710c8d4aacc1b42e1ab623af94c2f8",
      "parents": [
        "c597c55ffeb9debcf2dba8a77a80caa9016ea4d1"
      ],
      "author": {
        "name": "Chenjie Luo",
        "email": "cjluo@google.com",
        "time": "Thu Oct 16 20:22:24 2014 +0000"
      },
      "committer": {
        "name": "Chenjie Luo",
        "email": "cjluo@google.com",
        "time": "Thu Oct 16 20:22:24 2014 +0000"
      },
      "message": "Revert \"Add system property config.disable_timeupdate to configure NetworkTimeUpdateService\"\n\nThis reverts commit c597c55ffeb9debcf2dba8a77a80caa9016ea4d1.\n\nChange-Id: Idc83e582c10dda2c6245ec19921785f361a07a68\n"
    },
    {
      "commit": "c597c55ffeb9debcf2dba8a77a80caa9016ea4d1",
      "tree": "d34eec7ee34dd27e8c045fff349e8717b5fa6250",
      "parents": [
        "349e3640b784c277f983ec9c849db3131d135ccf"
      ],
      "author": {
        "name": "Chenjie Luo",
        "email": "cjluo@google.com",
        "time": "Thu Oct 16 10:55:33 2014 -0700"
      },
      "committer": {
        "name": "Chenjie Luo",
        "email": "cjluo@google.com",
        "time": "Thu Oct 16 11:36:31 2014 -0700"
      },
      "message": "Add system property config.disable_timeupdate to configure NetworkTimeUpdateService\n\nBug: 17934875\nChange-Id: Ic1acff13190f38cedb1ecf22783d4dfd3373511d\n"
    },
    {
      "commit": "8d05172112436a81bed6e4a0810f8914509d8a4d",
      "tree": "6436496aef38ce21c06c6d073fd28edcea204ba3",
      "parents": [
        "f178591f26a535ec3cffa3520c3ca387ec44959b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Oct 01 14:59:58 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Oct 01 16:58:56 2014 -0700"
      },
      "message": "More work on issue #17656716: Unhandled exception in Window Manager\n\nFix Slog.wtf to not acquire the activity manager lock in its code\npath, so that it can never deadlock.  This was the original intention\nof it, but part was missed.\n\nNow we can put back in the code to detect when strict mode data is\ngetting large (a little more targeted now to the actual problem),\nand use Slog.wtf to report it.  And as a bonus, when this happens\nwe will now clear all of the collected violations, to avoid getting\nin to the bad case where IPCs start failing.  So this should be\ngood enough for L to fix the problem, with wtf reports for us to\nsee if the underlying issue is still happening.\n\nFinally, switch a butch of stuff in the system process from Log.wtf\nto Slog.wtf, since many of those are deadlocks waiting to happen.\n\nOh and fix a crash in the settings provider I noticed in APR.\n\nChange-Id: I307d51b7a4db238fd1e5fe2f3f9bf1b9c6f1c041\n"
    },
    {
      "commit": "996b5af40c1af8f61005b584465d4ec392b2d209",
      "tree": "5f1e85609cfa6529286c06cb3974cdde8d968669",
      "parents": [
        "11cfe2c0369820835def8495303189ed398480ea"
      ],
      "author": {
        "name": "Jae Seo",
        "email": "jaeseo@google.com",
        "time": "Wed Aug 27 23:50:37 2014 -0700"
      },
      "committer": {
        "name": "Jae Seo",
        "email": "jaeseo@google.com",
        "time": "Wed Aug 27 23:52:01 2014 -0700"
      },
      "message": "Start TvInputManagerService when the device supports FEATURE_LIVE_TV\n\nBug: 17284986\nChange-Id: I5efeffecfcb771cb2e6180ccfd665464611a24fc\n"
    },
    {
      "commit": "0bbd2aaace3c08671e0f039859f241429a2600c6",
      "tree": "c6a3198897c70b7d383e12545bf6fdac74a8feb3",
      "parents": [
        "1698297daf8068bc9e6971d43744d48f1672bab2"
      ],
      "author": {
        "name": "vandwalle",
        "email": "vandwalle@google.com",
        "time": "Tue Aug 26 15:43:46 2014 -0700"
      },
      "committer": {
        "name": "vandwalle",
        "email": "vandwalle@google.com",
        "time": "Tue Aug 26 15:43:46 2014 -0700"
      },
      "message": "remove call to passpoint service start\n\nChange-Id: Ibc6e537544c2228e8b07f734158182d1e4817d17\n"
    },
    {
      "commit": "6d2a9492e2b19421165f0cd918d9f28595bfb770",
      "tree": "61aec347859424bcaa3a8b8f2e10d97874efef82",
      "parents": [
        "77437731a70c74d24a3a63d5d1cb899ffae34eb1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 07 19:06:49 2014 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 11 17:13:03 2014 -0700"
      },
      "message": "Eliminate power manager latency for boot completed.\n\nThe power manager disables the power button until boot completed\noccurs.  If there are many pending broadcasts in the queue, it\nmay be possible for BOOT_COMPLETED to be delayed for several\nseconds after boot.\n\nTo avoid the delay, introduced a new boot phase which is\nsent to system services immediately when boot completed happens.\n\nBug: 13398280\nChange-Id: I1833d2ffb20305009dd76363b43e534034f1d0a2\n"
    },
    {
      "commit": "a351ab96987381ffe7ea29a7cdec1e7fbd1497d5",
      "tree": "8cec8f73970a6b7fa81e6e279080d76d065e5185",
      "parents": [
        "d78e8114988326d557a1405e669b330f63fbf0d3"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 08 17:35:50 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Aug 09 13:31:59 2014 -0700"
      },
      "message": "Fix issues 16739817 and 16709247 in voice interaction service.\n\nIssue #16739817 VIS doesn\u0027t start for non-primary user(s)\nIssue #16709247 GSA is not the default voice interaction agent\n\nThese are both fixed by getting rid of the existing code for applying\nthe default voice recognizer, moving it in to the voice interaction\nmanager service, and extending it to also set up the default voice\ninteraction service.\n\nChange-Id: If8d5936c28aebfa7eff77c8d99241c3a2ffdb0a4\n"
    },
    {
      "commit": "4dbeb359b2cfeb63d6ec3ecb702f2bd836db058a",
      "tree": "fdded63f6c0e1c9dff148f70ea5c0f49eee6aa9c",
      "parents": [
        "161536b5970ba5ab43233e7695ef69ba2bb804f4"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Tue Jul 29 19:14:24 2014 +0100"
      },
      "committer": {
        "name": "Ben Murdoch",
        "email": "benm@google.com",
        "time": "Fri Aug 01 14:24:47 2014 +0100"
      },
      "message": "Cherry pick Make WebViewUpdateService a SystemService. DO NOT MERGE\n\nMigrate WebViewUpdateService to the newer SystemService approach instead\nof ServiceManager.addService.\n\nOriginal Bug: 16403706\nOriginal Change-Id: I21aa67a41c22c3c20ba9e82eb87e5d610fe130e8\n\nBug: 16723226\nChange-Id: Id276b71ee547e683f0756bcee0f4978ce342c2af\n"
    },
    {
      "commit": "810c052d9b117217152c2a609ccec056a2a61d1e",
      "tree": "fbc663c7cf06cba6a8eda4accbe7d718023c646f",
      "parents": [
        "6c778cebc73e7eb76510f6e2183d804b8c07082b"
      ],
      "author": {
        "name": "Primiano Tucci",
        "email": "primiano@google.com",
        "time": "Fri Jul 25 18:03:16 2014 +0100"
      },
      "committer": {
        "name": "Ben Murdoch",
        "email": "benm@google.com",
        "time": "Fri Aug 01 14:24:09 2014 +0100"
      },
      "message": "Cherry pick Introduce startIsolatedProcess private API in ActivityManager DO NOT MERGE\n\nThe new API spawns a isolated process, using a custom uid, entrypoint and\nabi. Such API is used by the WebViewFactory to spawn its unpriviledged\nbut trusted process (hence the fixed uid) which rewrites the rerlo file\non boot / when an update occurs.\nSince both the ActivityManager service and the WebViewUpdate service\nlive in the SystemServer their calls be dispatched locally and no\nbinder interface needs to be exposed for the new startIsolatedProcess API.\n\nOriginal BUG:16403706\nOriginal Change-Id: I327b59735c12698595e0dbcc4da5d759c9103b0a\n\nBug: 16723226\nChange-Id: Iecb49888e11eec9d302d9712953fd498db5821af\n"
    },
    {
      "commit": "d97e1fdb29db15c5117e2502da2f1f1fb82233b6",
      "tree": "0ba3e9fb285376d2799b35b6d322fd303ccb6b16",
      "parents": [
        "8b5a858ee388729cc6e1c386965d5c31cd2a47aa"
      ],
      "author": {
        "name": "Ye Wen",
        "email": "ywen@google.com",
        "time": "Thu Jul 24 12:56:45 2014 -0700"
      },
      "committer": {
        "name": "Ye Wen",
        "email": "ywen@google.com",
        "time": "Tue Jul 29 16:32:07 2014 -0700"
      },
      "message": "Implement broker pattern for imms (1/3)\n\nb/16324360\n\nChange-Id: I41dc9823820eed60406973f5edb5a71deb4b0130\n"
    },
    {
      "commit": "c4272f32aec68ae2377141a2d6d4e6059fb36714",
      "tree": "46b7339f855ad0b47bacdd2aaecac8cf590dc88f",
      "parents": [
        "d65e8f4b6b37b274fcd5b7701a73eaef7c4ba8b4"
      ],
      "author": {
        "name": "Vinit Deshpande",
        "email": "vinitd@google.com",
        "time": "Fri Jul 25 17:46:14 2014 -0700"
      },
      "committer": {
        "name": "Vinit Deshpande",
        "email": "vinitd@google.com",
        "time": "Mon Jul 28 09:00:10 2014 -0700"
      },
      "message": "Enable RTT End-to-end\n\nThis change includes various fixes to first RTT implementation and\nenables RTT APIs end-to-end. Fixes include proper marshalling of\nobjects across API and service and JNI fixes.\n\nChange-Id: Ie4ba1ffc6c5b42593e931438b3f03e201ff6be71\n"
    },
    {
      "commit": "3c153519ca5f2b66b88901374383f943c9d77df7",
      "tree": "a8af9d9bec018b08cb47e7c6ac622e449c8585d1",
      "parents": [
        "f7496d7e0c475e1b3f16129c42c8540bd810ec85"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 23 17:34:34 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jul 25 17:18:54 2014 +0000"
      },
      "message": "Add Per-User logging of UsageStats\n\nChange-Id: I4518c5d3c56b3821292accb886f9fb21f3a8b25f\n"
    },
    {
      "commit": "0fdcb74cc39b20e161f08c88414e7672bf9afa23",
      "tree": "9cbc5efd06a748a35f23a6270978effd7336972e",
      "parents": [
        "cdc7448b29b887f6464231c780c23be5e32aef82"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Thu Jul 24 16:28:35 2014 +0900"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Thu Jul 24 16:28:35 2014 +0900"
      },
      "message": "Disable TvInputManagerService on non-TV devices.\n\nThe block condition is based on FEATURE_LEANBACK instead of\nFEATURE_TELEVISION which is deprecated in favor of FEATURE_LEANBACK.\n\nBug: 16497355\nChange-Id: I433051362fe94ea453afe9344800fb4f8c7076a9\n"
    },
    {
      "commit": "0debc9aff4c0cbc28e083a948081d91b0f171319",
      "tree": "3ac4d7a9927cdd2741f65393d4e6855508ab3c26",
      "parents": [
        "d3de42cae84fadfa1befd082a2cf1bf72f9ad82a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 16 19:09:13 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jul 18 15:24:20 2014 -0700"
      },
      "message": "First iteration of a public UsageStats API\n\nUsageStats API that allows apps to get a list of packages that have been\nrecently used, along with basic stats like how long they have been in\nthe foreground and the most recent time they were running.\n\nBug: 15165667\n\nChange-Id: I2a2d1ff69bd0b5703ac3d9de1780df42ad90d439\n"
    },
    {
      "commit": "c7a845de4a9578e8093b6abcb90c6836d360d5b3",
      "tree": "76e1882bac2721c903ccb310a6e2417cc2cf93b1",
      "parents": [
        "86f8a7425ba88c718a6ab8bba35cfbc9e314e8a0",
        "c39d47a8e7c74bd539104b0efab898ef6fc43ddf"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Jul 17 21:59:19 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 17 21:15:46 2014 +0000"
      },
      "message": "Merge \"Add MediaProjection APIs.\" into lmp-dev"
    }
  ],
  "next": "c39d47a8e7c74bd539104b0efab898ef6fc43ddf"
}
