)]}'
{
  "log": [
    {
      "commit": "3546c9a5821fc8a754e05593d314c49cd6bca0d0",
      "tree": "6a93b27a9a5accaa30989c56d0fc898e76cdc226",
      "parents": [
        "14638d76bb1be95c6de1df7daad98af4a0ea92d4",
        "a62050d42c7d76d57ae555ffcb6d8efc5cf79de1"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Fri Nov 07 18:22:30 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 07 18:22:32 2014 +0000"
      },
      "message": "Merge \"Mark Gps Raw related APIs as System APIs. b/16727892\" into lmp-mr1-dev"
    },
    {
      "commit": "992b9aa37b0b7dba45505593cc4715d5be5aecbb",
      "tree": "3741dd0710d344cde4644442f45ba2c36e213e62",
      "parents": [
        "a11bb7427171418681428754051d5ee4dce851ee",
        "6568d709e78d6ccaf256b7d0e4a19cdfb26deafb"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Thu Nov 06 23:22:41 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 06 23:22:46 2014 +0000"
      },
      "message": "Merge \"Add support for GPS measurement/navigation message capabilities. b/16727892 b/16815124\" into lmp-mr1-dev"
    },
    {
      "commit": "a62050d42c7d76d57ae555ffcb6d8efc5cf79de1",
      "tree": "ca17272abaecc91788925fe5d35014ada8e7f905",
      "parents": [
        "b9eabc5c2b54145772cbec1c6cec90360925e174"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Thu Oct 23 14:07:25 2014 -0700"
      },
      "committer": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Fri Oct 31 14:05:27 2014 -0700"
      },
      "message": "Mark Gps Raw related APIs as System APIs.\nb/16727892\n\nChange-Id: I29d78d45aef7829c3321ae4e7c26549e46fa39f9\n"
    },
    {
      "commit": "6568d709e78d6ccaf256b7d0e4a19cdfb26deafb",
      "tree": "c1c6bcbe94f2d6f95c31b1bb1522e5514171b461",
      "parents": [
        "b9eabc5c2b54145772cbec1c6cec90360925e174"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Mon Oct 27 12:47:41 2014 -0700"
      },
      "committer": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Fri Oct 31 14:03:20 2014 -0700"
      },
      "message": "Add support for GPS measurement/navigation message capabilities.\nb/16727892\nb/16815124\n\nThe listeners are changed to receive statuses asynchronously, this is required because GPS HAL,\nrequires time to be notified of the capabilities it supports.\n\nChange-Id: Ie69fdd629d8680341386a2c736bc851632dd2bda\n"
    },
    {
      "commit": "df1198401101805a335535dd08231cbb0e2af500",
      "tree": "b63166f1cb576558596055043cd0cffc6d1d303e",
      "parents": [
        "b9eabc5c2b54145772cbec1c6cec90360925e174"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Tue Oct 14 16:52:43 2014 -0700"
      },
      "committer": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Fri Oct 31 13:59:17 2014 -0700"
      },
      "message": "Fix reference leak in GPS measurement JNI layer.\nb/16727892\nb/17075171\n\nChange-Id: I5f41c6db114078b927e56a7614fa7c09a288e2b2\n"
    },
    {
      "commit": "89b196958fee07475765bd3c458098464ba16f2e",
      "tree": "08c0d22686180c281faaeb1e9c5e9cc93405dcb3",
      "parents": [
        "908a4f9a4372a9627e821b5800936095b0f0b5b0",
        "955d8d69ea6caabce1461dc25b339b9bf9dc61a6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Oct 08 17:59:18 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 08 17:59:19 2014 +0000"
      },
      "message": "Merge \"Put in real \"code\" (aka marketing) name.\" into lmp-dev"
    },
    {
      "commit": "955d8d69ea6caabce1461dc25b339b9bf9dc61a6",
      "tree": "f6bd4b5d4be17a8e237e837d59c3f8aaa76ebe55",
      "parents": [
        "0d334365c6123388a0df81438b82122be29d19ab"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 07 20:17:19 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 07 20:17:19 2014 -0700"
      },
      "message": "Put in real \"code\" (aka marketing) name.\n\nChange-Id: Idb3976edfae37293ed75cb5b869b4b42d8042bbe\n"
    },
    {
      "commit": "6ec5a256d78579057e82691e4cc21ca6222e2b1f",
      "tree": "7ff011535ad293a3f383ceb8e502aa7ed183f538",
      "parents": [
        "c2b35efb58623b778d0feaf49cc00e5e8bc9eed4",
        "4be6fdebdd386dc18159c5557db91936a62f42ab"
      ],
      "author": {
        "name": "Quddus Chong",
        "email": "quddusc@google.com",
        "time": "Tue Oct 07 22:23:40 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 07 22:23:40 2014 +0000"
      },
      "message": "am 4be6fdeb: am ba2199fa: Merge \"docs: Modified the notice in the android.location package file to strongly encourage developers to migrate to the Google Play Services Location API.\" into klp-modular-docs\n\n* commit \u00274be6fdebdd386dc18159c5557db91936a62f42ab\u0027:\n  docs: Modified the notice in the android.location package file to strongly encourage developers to migrate to the Google Play Services Location API.\n"
    },
    {
      "commit": "380dde32a742a993a42cfad9643499da207ff95e",
      "tree": "4727c67dc184ccc07b5dfb96412fdc82e901c6f4",
      "parents": [
        "52a1816180c7a85b13c543a5cdb6a7506cb8f01d"
      ],
      "author": {
        "name": "Quddus Chong",
        "email": "quddusc@google.com",
        "time": "Thu Sep 11 16:50:09 2014 -0700"
      },
      "committer": {
        "name": "Quddus Chong",
        "email": "quddusc@google.com",
        "time": "Fri Oct 03 14:14:08 2014 -0700"
      },
      "message": "docs: Modified the notice in the android.location package file to strongly\nencourage developers to migrate to the Google Play Services Location API.\n\nChange-Id: I9c2602daa7198eca38841582865c6a973f5acec8\n"
    },
    {
      "commit": "566ebfde2b3195ec5897a680c879241c46f33477",
      "tree": "f9225cb738fa8655221ecb75822f3e12faaecda8",
      "parents": [
        "33ae07ab814df0242625bb1e1961f464b630a7fe"
      ],
      "author": {
        "name": "Tsuwei Chen",
        "email": "tsuwei@google.com",
        "time": "Thu Sep 25 14:33:08 2014 -0700"
      },
      "committer": {
        "name": "Tsuwei Chen",
        "email": "tsuwei@google.com",
        "time": "Thu Sep 25 14:53:54 2014 -0700"
      },
      "message": "Fix an incorrect behavior that failed AT\u0026T privacy test.\n\nBug: 17278951\n\nChange-Id: I8b8bf4ed19af8738e7cef3553c8a06f7e27c7264\n"
    },
    {
      "commit": "61ee1eda0afb78c4ded09ac516f58283191e38df",
      "tree": "639c91ca1ae2607b66e2fe942cc9b7da1ddb5930",
      "parents": [
        "fd20f196b12fbb6934283baadb855837f4215b40",
        "4bd34887324b90478ee89358697c543dca9cf4dc"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Wed Sep 17 21:20:26 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 17 21:20:27 2014 +0000"
      },
      "message": "Merge \"Add @SystemApi to LocationManager methods used by GmsCore (with reflection). Bug: 17515515\" into lmp-dev"
    },
    {
      "commit": "4bd34887324b90478ee89358697c543dca9cf4dc",
      "tree": "66fee8c503d8ce3492665538e680af26d74a6a70",
      "parents": [
        "833dcd4bea5cadccaa55f9a06942bb36d01d73ac"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Mon Sep 15 19:22:24 2014 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Mon Sep 15 19:22:24 2014 -0700"
      },
      "message": "Add @SystemApi to LocationManager methods used by GmsCore (with reflection).\nBug: 17515515\n\nChange-Id: I005871c721868bc52a3057839949eb342181b7b8\n"
    },
    {
      "commit": "7c485bf66a2f9c2ca0ce54e624ce48d39c568b97",
      "tree": "2b1fb4dcf9d51bfbede3ef59cd28b3d125a496b3",
      "parents": [
        "26f9ea38a5b6030714757834b94dce737aa8d564"
      ],
      "author": {
        "name": "Tsuwei Chen",
        "email": "tsuwei@google.com",
        "time": "Wed Sep 10 15:33:34 2014 -0700"
      },
      "committer": {
        "name": "Tsuwei Chen",
        "email": "tsuwei@google.com",
        "time": "Fri Sep 12 14:56:00 2014 -0700"
      },
      "message": "Handle user privacy properly during network initiated requests.\nBug: 16131208\n\nChange-Id: Ic6f83fcf24eef9e0e26e303bb652651f0dc2970a\n"
    },
    {
      "commit": "ff4f6c8859ead7cc94ff0d5ce46c8b346a769523",
      "tree": "2328d90933cd46b8add0d492799e76f0273e318b",
      "parents": [
        "be5b6569407635eb8d23b1934f90a508da0e60be",
        "3324e954127de3db2b3200fdefca8f4d0400b7bb"
      ],
      "author": {
        "name": "Tsuwei Chen",
        "email": "tsuwei@google.com",
        "time": "Mon Sep 08 22:15:31 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 08 22:15:32 2014 +0000"
      },
      "message": "Merge \"Manually merge QC\u0027s change for SUPL_ES.\" into lmp-dev"
    },
    {
      "commit": "bc3095139e9b8c7640fe6cebb4fc527af916d1be",
      "tree": "605d2d26202c89f6ad4ccff46c0537c563f9c3c9",
      "parents": [
        "a740b2bf9a492df5301336e2533651fa90e57c6b"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Mon Sep 08 10:06:34 2014 -0700"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Mon Sep 08 10:14:33 2014 -0700"
      },
      "message": "Fix a STOPSHIP\n\nChange-Id: I3714f1645c0a847e912cb79515fe3991960c1698\n"
    },
    {
      "commit": "3324e954127de3db2b3200fdefca8f4d0400b7bb",
      "tree": "fa426aee823ce4e29e42200f085a280b59c3190b",
      "parents": [
        "68c936f77d836285c255e98b73bdadb78025ade9"
      ],
      "author": {
        "name": "Tsuwei Chen",
        "email": "tsuwei@google.com",
        "time": "Sun Sep 07 01:30:42 2014 -0700"
      },
      "committer": {
        "name": "Tsuwei Chen",
        "email": "tsuwei@google.com",
        "time": "Mon Sep 08 07:11:02 2014 +0000"
      },
      "message": "Manually merge QC\u0027s change for SUPL_ES.\n\nOriginal CL: https://android-review.googlesource.com/#/c/105431\n\nEmergency SUPL\n\nAdded emergency SUPL when UE is\nin emergency mode.\n\nBug: 17118312\n\n\nChange-Id: Id9b77add9bbab139b983a84d5a4c798c9c94df43"
    },
    {
      "commit": "649db7f0a5b1a2add3f68ace9d7896a76340ff78",
      "tree": "a4109e9ec77cb73dceb62aa8a05228cfe6576c3f",
      "parents": [
        "8b9c97a4e27364750d4ca72ec724596c5bc93d32",
        "17c5e79496bc1e2d53bc3c4e33bad4b39b80c36d"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Thu Sep 04 22:56:57 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 04 22:56:58 2014 +0000"
      },
      "message": "Merge \"Keep LMP from breaking KitKat API\" into lmp-dev"
    },
    {
      "commit": "17c5e79496bc1e2d53bc3c4e33bad4b39b80c36d",
      "tree": "a81fc3b35a526f01d51b42a7bae6fcfa8f994e1a",
      "parents": [
        "127343cb460c8d23f9fb59bcf4bcea6e9b9cea03"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Thu Sep 04 15:42:36 2014 -0700"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Thu Sep 04 15:42:36 2014 -0700"
      },
      "message": "Keep LMP from breaking KitKat API\n\n- Bug: 17390371\n\nChange-Id: I25c1abebcc42ed24abd57bbe2834a40fb8ee834b\n"
    },
    {
      "commit": "e7baf5afc07127854e5791d93f05e6b46633bc47",
      "tree": "dccc1979337473bb6be4747adec6ac1a1b8013fe",
      "parents": [
        "a4b9a191a85507b077f59b6ac5ce210caa0a84a3",
        "c20b795cf05b48fe5e024c19dab9c7e4b18cd10f"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Sep 04 20:53:38 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 04 20:53:39 2014 +0000"
      },
      "message": "Merge \"Add @SystemApi annotations to methods used by GmsCore. -Currently these methods are called using reflection for location. Bug: 17371392 Change-Id: I6546f5b485415beff69164ba0d526757ee831f69\" into lmp-dev"
    },
    {
      "commit": "c20b795cf05b48fe5e024c19dab9c7e4b18cd10f",
      "tree": "428ea0d77719c9f13acb134ee89e6488a2f3059c",
      "parents": [
        "833dcd4bea5cadccaa55f9a06942bb36d01d73ac"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Sep 04 11:29:01 2014 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Sep 04 20:53:21 2014 +0000"
      },
      "message": "Add @SystemApi annotations to methods used by GmsCore.\n-Currently these methods are called using reflection for location.\nBug: 17371392\nChange-Id: I6546f5b485415beff69164ba0d526757ee831f69\n"
    },
    {
      "commit": "52617bbff8607cdc208ba107ec111bd1471433cb",
      "tree": "5e48b8c85895759f7145a6136e2053d7218ac003",
      "parents": [
        "09daab204c4121138b77d43c3c56632474612a4d"
      ],
      "author": {
        "name": "Tsuwei Chen",
        "email": "tsuwei@google.com",
        "time": "Mon Aug 25 11:49:11 2014 -0700"
      },
      "committer": {
        "name": "Tsuwei Chen",
        "email": "tsuwei@google.com",
        "time": "Sat Aug 30 00:17:39 2014 +0000"
      },
      "message": "Reload GPS configuration after carrier info is available.\nBug: 17110478\nChange-Id: I1ecb71c4ca661df3dfeaea1622d73caeacb1350e"
    },
    {
      "commit": "255dd04271088590fedc46c8e22b2fd4ab142d39",
      "tree": "9b0087d4e1cee5335f4d55b037b5e3a6ff13a30f",
      "parents": [
        "5e85359a36c14c0c568b73f138f6c8f4baad9b8e"
      ],
      "author": {
        "name": "Selim Cinek",
        "email": "cinek@google.com",
        "time": "Tue Aug 19 22:29:02 2014 +0200"
      },
      "committer": {
        "name": "Selim Cinek",
        "email": "cinek@google.com",
        "time": "Wed Aug 20 14:25:18 2014 +0200"
      },
      "message": "Added notification color to all system notifications\n\nBug: 17128331\nChange-Id: I81a94510ef51b99916f314c0dd65852426a1fbeb\n"
    },
    {
      "commit": "4b3e3931270f8e406fc806bc7fa1c2788256687d",
      "tree": "b2b057ff2396faa88e2d21743199f6bd52ce2a74",
      "parents": [
        "5320b04fe74f0120f84dd9fe09785491f42a766b"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Mon Jul 21 18:01:47 2014 -0700"
      },
      "committer": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Wed Jul 23 10:30:21 2014 -0700"
      },
      "message": "Expose Gps Navigation Messages in the platform.\nb/16405976\n\nChange-Id: Ic982ea2467d116585780c20c2fa7e974e50f8345\n"
    },
    {
      "commit": "81cabb8a7fb5b61f16bf49c2757ccb51bc88e708",
      "tree": "764694ca6dc9e33b2a812c6d795de7e654fb63d8",
      "parents": [
        "caf26263a7e186882c1875f022530324852fe75f"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Tue Jul 22 09:59:43 2014 -0700"
      },
      "committer": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Tue Jul 22 10:03:28 2014 -0700"
      },
      "message": "Add uncertainty for GPS received TOW field.\nb/16463499\n\nChange-Id: I5dde8a2737d9345eb7f77edc64ab7286254a65e4\n"
    },
    {
      "commit": "2102dd725540bcf51bf324a2775fbcffe45dd32f",
      "tree": "4cd058abcb38fb0dfb1a48f4247b158ef5ab6364",
      "parents": [
        "3b3795601051f9ae7008e2b3e29e683f5d4a2e53"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Fri Jul 18 17:50:24 2014 -0700"
      },
      "committer": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Mon Jul 21 10:38:12 2014 -0700"
      },
      "message": "Update GPS HAL raw measurements support.\n\nAlign the GPS framework with the GPS HAL\nb/16374800\n\nRemove localTime field from API\nb/16241708\n\nUpdate Property containers for measurements to use bit masks\nb/16238371\n\nChange-Id: Id4db16c3153d0020bf2edb5a67f59353662762d0\n"
    },
    {
      "commit": "ea8a8a6076f04360de2d25b3e5853cde8026cd5f",
      "tree": "7c416b43028165443b11a3e433d9044b54b9fe81",
      "parents": [
        "34257d8544190979a0c1dfe63350fc50136e4dd0"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Mon Jun 23 18:19:03 2014 -0700"
      },
      "committer": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Fri Jul 11 12:20:39 2014 -0700"
      },
      "message": "Update location framework to accept raw data from GPS HAL.\n\nChange-Id: Ib4feca004b53fa89dcece4299974ab08913455a0\n"
    },
    {
      "commit": "43c9b107d838d2d152d243151f1728d3b39a2821",
      "tree": "4186057f4ec26a622811e1d15edfa040dc78910e",
      "parents": [
        "61dcb08c856c93247771c1d769deeba61eaf779f",
        "812de6f6d75f71d1c2fd9cd319a78389c5adb703"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Jul 05 17:23:25 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jul 05 17:23:25 2014 +0000"
      },
      "message": "am 812de6f6: am dbed61c8: am ca2df286: Merge \"Fix typo in the exception message.\"\n\n* commit \u0027812de6f6d75f71d1c2fd9cd319a78389c5adb703\u0027:\n  Fix typo in the exception message.\n"
    },
    {
      "commit": "552bd68c2c592348b45fb823b939fb289afb4af7",
      "tree": "0b7f50743afa98f7193608965f0b27bbd48b7829",
      "parents": [
        "e54a764cfd83825096edd55dd22cc7b3a6af45da"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Tue Jun 17 13:46:30 2014 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Tue Jun 17 13:46:30 2014 -0700"
      },
      "message": "Update Location documentation for altitude (WGS84 instead of sea level).\n\nChange-Id: I9531fba75bc1fee7d0e7c1dc179e3d05fb3e8a42\n"
    },
    {
      "commit": "cc972725af35284c0b571aaa0dc6873e69b15119",
      "tree": "5c6a0e5e648b2f541a7c72642e36e9d0b24e697c",
      "parents": [
        "250bb6e3e045a88022db526b074e7ab38c47d93c"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Fri Apr 25 11:37:52 2014 -0700"
      },
      "committer": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Fri Apr 25 11:39:16 2014 -0700"
      },
      "message": "Make sure FLP HAL statuses currently used are translated (if needed) correctly into the framework.\nb/14118906\n\nChange-Id: I4723a3b9cad99aacc70bd3b7b5b5e034aa6c033d\n"
    },
    {
      "commit": "248ada68cce2d1ab8f59ef18b869d866f4af6045",
      "tree": "b95f98a5bd20ee3585a5c5e92896cc7956baa05e",
      "parents": [
        "08488bf3fe6f4b1fadf59821feaf07b4c2ae52ae"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Fri Feb 28 18:12:47 2014 -0800"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Mon Mar 03 10:30:36 2014 -0800"
      },
      "message": "Injected settings no longer include summaries\n\n- Bug: 13279850\n\nChange-Id: I0fd1e60b2a56c45776963c29bbae6f176fdf1bea\n"
    },
    {
      "commit": "afecea18054c457cbd55d1ed9c023f2c2aa3726b",
      "tree": "8db4e4553a2c8b61d32572d62ed8f3f103ba4c5a",
      "parents": [
        "8a78a807097397ccd9c6ea20868f71c7ee19ef1d"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Fri Feb 28 17:38:31 2014 -0800"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Fri Feb 28 17:38:31 2014 -0800"
      },
      "message": "Seeing if a provider is enabled doesn\u0027t require special permissions\n\n- Bug: 10696351\n\nChange-Id: I4f1612ce10587728e71277587144fdcb59445b3f\n"
    },
    {
      "commit": "8a985d24ce9a38f40ed88fecbdcd0e75e3a68f44",
      "tree": "a71a241bf554a157a25d54dce66364d7881c3579",
      "parents": [
        "875e2101d71afe7e4acf10b061c942fbf7294775"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Feb 25 09:40:05 2014 -0500"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Feb 25 09:49:29 2014 -0500"
      },
      "message": "Tabs -\u003e spaces in frameworks/base.\n\nChange-Id: I5a84e8e93ac99b5ed0212b37bf66efa5e53864be\n"
    },
    {
      "commit": "405393cfe33c857e2f430ebc09c891b886c75e73",
      "tree": "09fa3916db9bbf356afca8e7d293f285d0d95caa",
      "parents": [
        "4a72b3064cecc85c56b8d75bb4a2d9fedbf76ec8"
      ],
      "author": {
        "name": "Masaki Muranaka",
        "email": "monaka@monami-software.com",
        "time": "Thu Oct 24 00:46:52 2013 +0000"
      },
      "committer": {
        "name": "Masaki Muranaka",
        "email": "monaka@monami-software.com",
        "time": "Wed Dec 11 01:43:29 2013 +0000"
      },
      "message": "Fix typo in the exception message.\n\nChange-Id: I5e8c089dfd406af40c4eb3aa76af13398c05b7e6\nSigned-off-by: Masaki Muranaka \u003cmonaka@monami-software.com\u003e\n"
    },
    {
      "commit": "6090995951c6e2e4dcf38102f01793f8a94166e1",
      "tree": "37f32f4b269fc26a18e3249a18459a476c473266",
      "parents": [
        "266f48cc042dda828109eb135088cdb6f0f7c1d5"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Nov 19 16:54:46 2013 -0500"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Wed Nov 20 11:31:47 2013 -0500"
      },
      "message": "Remove unused imports from frameworks/base.\n\nChange-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906\n"
    },
    {
      "commit": "d5759437eeb3137e4a05471ff0f4681c0254e81a",
      "tree": "0d22df7aa8d52ead9ef9da0f417fe43bb70814e7",
      "parents": [
        "e91a3f5229405b39a3ba59aa0a3e44527eef063e"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Wed Sep 11 11:03:03 2013 -0700"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Wed Sep 11 11:03:03 2013 -0700"
      },
      "message": "Improve some javadoc related to isProviderEnabled() apis\n\n- LocationManager.isProviderEnabled() no longer throws SecurityException:\nthe caller could already circumvent the permission check by calling\nSecure.isLocationProviderEnabled()\n\nChange-Id: I5abd04264299671ed35ce4594b5be46d86378767\n"
    },
    {
      "commit": "cef05c28eb452810e4b79895970457ff2bdef5b4",
      "tree": "42b1171cac99d57c5c2cd146cd175dd5e602178b",
      "parents": [
        "9e8bdc39bcdfc22d05edd5f4a0ca69cdffec4f34"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Thu Sep 05 09:45:03 2013 -0700"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Thu Sep 05 09:45:03 2013 -0700"
      },
      "message": "Incorporate new API council comments\n\n- Split getStatus() into onGetSummary() and onGetEnabled()\n\n- Call them on app\u0027s UI thread\n\n- Allow runtime exceptions to propagate up\n\n- Make a couple of more methods final to prevent subclasses from playing\naround with the intent\n\n- Remove explicit timing requirement from javadoc\n\n- Mention that this will be restricted to system-image apps (will be\nenforced by the actual settings code)\n\n- b/10461474\n\nChange-Id: Id22dd7a707c05de396ae4c5810e839ca734714c0\n"
    },
    {
      "commit": "40a86c24d2601df4966c57573a5bf58b30a41990",
      "tree": "a34b94d308b15723986736c4f1b096b61e2a4267",
      "parents": [
        "d0e2a2e7a9a6c247f501a5044d1c19cd82c6129d"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Tue Sep 03 18:05:13 2013 -0700"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Tue Sep 03 18:07:10 2013 -0700"
      },
      "message": "Add LocationManager.MODE_CHANGED_ACTION broadcast\n\n- Currently redundant with PROVIDERS_CHANGED_ACTION, but that may\nchange in the future\n\n- Part of fix for b/10409275\n\nChange-Id: I12daaf20e6546fd9e9dc71c599967fa0ad95e27f\n"
    },
    {
      "commit": "546113d4c290f36bf21b1e9c7b93d1592df17fce",
      "tree": "1854fd104c3685b77bfec1286201ce8fe588ea16",
      "parents": [
        "81e0b1bd8325a2897a34f58a1e781e4d653f49fe"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Fri Aug 30 10:09:39 2013 -0700"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Fri Aug 30 10:09:39 2013 -0700"
      },
      "message": "Improve constant names for settings injection API\n\n- Add timing for getStatus() call to encourage implementors to be fast\n\n- Affects b/10461474\n\nChange-Id: I503cbae5cf27008c587a39ab4e60d8e09daedecc\n"
    },
    {
      "commit": "7f6f45723adea684529dd9b7465d798f10c3acbf",
      "tree": "09f8e28dfb2fff373306c9ba1f509151269df6c3",
      "parents": [
        "4a9c7fec662315d9da48f0f5f99313f270424b48"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Tue Aug 27 10:53:15 2013 -0700"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Tue Aug 27 10:53:15 2013 -0700"
      },
      "message": "Remove or reduce visibility of deprecated methods\n\n- Fix additional getInt() path, restores the location settings screen\nfunctionality.\n\n- Should fix \"unresolved link\" build breakages in\ngit_klp-dev-plus-aosp-without-vendor, which is much more persnickety than\nklp-dev for some reason.\n\n- Add warning that we may add additional location modes in the future.\n\n- Finish fix for b/10461763 and b/10461474\n\nChange-Id: Id7155e3a0d7526a377d446018ef3bdb057bad3a6\n"
    },
    {
      "commit": "4a7c49c81f021ebb01c1ac06737b4e705f212783",
      "tree": "639a41aa3ac049e8342ea0a9d9949201abc5a894",
      "parents": [
        "94366313331a789440a3c077173aafcb85cabe78"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Mon Aug 26 10:08:12 2013 -0700"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Mon Aug 26 10:08:12 2013 -0700"
      },
      "message": "Address API Review for SettingInjectorService\n\n- Escape \u003c and \u003e in javadoc\n\n- Constructor does not take log tag\n\n- Start intent rename\n\n- Comments for Status.summary and enabled\n\n- Bonus fixes:\n\n  - Start renaming STATUS_KEY to SUMMARY_KEY\n\n  - Send message back even if getting the status fails so we don\u0027t have\n  to wait for the fetch to time out\n\n  - Add comment about setting activity being invoked when disabled\n\n- Partial fix for b/10461474\n\nChange-Id: I025e7e0782c2873a4eda20ab4793bc6145daf8db\n"
    },
    {
      "commit": "c8211ea1cc65560938c31263edce6fcb87016acb",
      "tree": "75a6222f9d839bfa72292e85a051707baed27bc4",
      "parents": [
        "83208e34f6a0381d5627886dbf98ff8f313e590f"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Thu Aug 22 14:28:12 2013 -0700"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Thu Aug 22 14:28:12 2013 -0700"
      },
      "message": "Add a little comment about the enabled value\n\nChange-Id: I4ac0b864f55992242b6a3b0d8ffb328f23f6b645\n"
    },
    {
      "commit": "184e75146cb17f8695dffba69e0ca8d80b350af3",
      "tree": "49eda39243813244415af6cd876f6752f1dbc28d",
      "parents": [
        "b6e8943933f745f5e3f248ac058fc8dbca8f8ab1"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Mon Aug 19 13:10:19 2013 -0700"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Mon Aug 19 13:13:21 2013 -0700"
      },
      "message": "Warn that SettingInjectorService must be fast\n\n- Move UPDATE_INTENT to SettingInjectorSErvice\n\nChange-Id: I9c8f8dc0878647a051cb852721b3436e9d55b391\n"
    },
    {
      "commit": "3e32bdd41832d383b03f928cfd2341b9693dc78b",
      "tree": "67903b97c875c8b76d5a5cac34f3dfd764eab5db",
      "parents": [
        "d0d554579b244d8d98e63e866be19333a8aa8b2e"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Aug 16 16:16:27 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Aug 16 16:16:27 2013 -0700"
      },
      "message": "Add comments to new hidden API in LocationRequest.\nDocument their purpose and permissions required in case\nthis is unhidden in a different code line.\n\nChange-Id: I42f6f950157f488cf51b361e3411861ff98794e8\n"
    },
    {
      "commit": "d0d554579b244d8d98e63e866be19333a8aa8b2e",
      "tree": "68e759b34c32156255f56ec032d366a384cd3da0",
      "parents": [
        "e3c754bb1c518c9166ff4275b5ee59f36c999f4c",
        "def20a3350ce239b929ef0ebbbf913cc0b42cf5f"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Aug 16 22:55:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 16 22:55:21 2013 +0000"
      },
      "message": "Merge \"Use default class loader when creating a LocationRequest from Parcel. This seems to be the standard usage, and there are rare reports of requestLocationUpdates giving NullPointerExceptions on the first call to requestLocationUpdates but not on subsequent calls (b/10207898).\" into klp-dev"
    },
    {
      "commit": "6de10472786ee17106b096eddbb603ab735c11a7",
      "tree": "30355c0022ae44d871229520b9cac5410e0b2710",
      "parents": [
        "dad0f462ae6fee99840bbea910c810282bbc1c54"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Aug 16 14:12:59 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Aug 16 14:12:59 2013 -0700"
      },
      "message": "Ensure LocationRequest\u0027s worksource defaults to null\nHelps to make sure the service doesn\u0027t throw a\nSecurityException for not having the UPDATE_DEVICE_STATS\npermission.\n\nChange-Id: I9be0302f1378d2c4441e6b7d5ce472ed0d5fbd80\n"
    },
    {
      "commit": "def20a3350ce239b929ef0ebbbf913cc0b42cf5f",
      "tree": "c09d9a2a07b1436b649ff4f0226f8ac5fac3b299",
      "parents": [
        "6bab49deaa96ddb0c427c1e2ab127608e5a8d93b"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Aug 15 16:01:42 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Aug 15 16:01:42 2013 -0700"
      },
      "message": "Use default class loader when creating a LocationRequest from Parcel.\nThis seems to be the standard usage, and there are rare reports of\nrequestLocationUpdates giving NullPointerExceptions on the first call\nto requestLocationUpdates but not on subsequent calls (b/10207898).\n\nChange-Id: If7a873fba5a2cd77b836ff3fda89105da20104ac\n"
    },
    {
      "commit": "95b2299dc476f4dbd50b8da8e0debff4b5ccba50",
      "tree": "2b1f9c8afba2b8f47c8fdcbe5323d23332bc5625",
      "parents": [
        "d48233e1e62c119b4bd67ad66e471f6a21e68a3d",
        "fa2992c412c08f76331a3f58ca57cf8cf04e7b84"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Wed Aug 14 00:18:16 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 14 00:22:18 2013 +0000"
      },
      "message": "Merge \"API for location settings injection\" into klp-dev"
    },
    {
      "commit": "0682809ad08db284d7110aab44108d5e9c310e6b",
      "tree": "2aa38602adac05aa16f829f995b21d239ba2494c",
      "parents": [
        "f464511a7be2e381f508b5b2b937f19c98d800c2"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Mon Aug 12 18:50:30 2013 -0700"
      },
      "committer": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Tue Aug 13 16:00:04 2013 -0700"
      },
      "message": "Add support in the platform for Flp Geofencing.\n\nChange-Id: I0fb0e276d3a06322697bb5d46323779aca1f78c5\n"
    },
    {
      "commit": "fa2992c412c08f76331a3f58ca57cf8cf04e7b84",
      "tree": "8ff95fba0faff30428923dfcee0c5dda4596f9a8",
      "parents": [
        "5893a97cbf398ca3e1bff5444454343d94e25a4c"
      ],
      "author": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Tue Aug 13 14:41:22 2013 -0700"
      },
      "committer": {
        "name": "Tom O\u0027Neill",
        "email": "tomo@google.com",
        "time": "Tue Aug 13 14:41:22 2013 -0700"
      },
      "message": "API for location settings injection\n\n- Partial fix for b/10287745\n\nChange-Id: Ie998ce0a7b350e4183fce5753bfac3eb51238ff4\n"
    },
    {
      "commit": "1af4b0280af406cfc7eb46810f6b76e57b983e11",
      "tree": "1f7f8d5a86c8dcd42cb24474e93b58bb0775071e",
      "parents": [
        "8ffe17ae32e72e5d872a36d5048bf912d28e766f"
      ],
      "author": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Fri Jul 12 15:43:36 2013 -0700"
      },
      "committer": {
        "name": "destradaa",
        "email": "destradaa@google.com",
        "time": "Thu Aug 08 15:27:38 2013 -0700"
      },
      "message": "Add FlpHal layer to support Location Batching.\n\nChange-Id: Ia3a57d869dfb3f067a1b95fa66d54f311ddcfdc3\n"
    },
    {
      "commit": "c750c1fb83fbdec895e236dda7207db4da14ec49",
      "tree": "0b853aa47bad8e6dd2c3eafd1f1bd7437768d170",
      "parents": [
        "4104d3295203d8a1f2d15d572293fdc1171631c6"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Aug 08 12:56:57 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Aug 08 14:06:25 2013 -0700"
      },
      "message": "Update gps status icon to be a \"high power\" location icon.\nMove icon to right side of the screen and synchronize status with\nAppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION.\n\nChange-Id: Iea2570501cb18be0489669fd4ea240dc63f9567a\n"
    },
    {
      "commit": "40e5782f5c79ea660b98b8875086f592367bc1d2",
      "tree": "8fdfd3a5bbe90b996c71e933230b7138505fdaa7",
      "parents": [
        "930524ade21464a4f8cbbf80fed7039f4e813965"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Tue Jul 30 11:36:48 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Aug 01 14:31:48 2013 -0700"
      },
      "message": "Allow a particular LocationRequest to be excluded from\nAppOps monitoring as long as the client as the appropriate\npermission (UPDATE_DEVICE_STATS).\n\nChange-Id: I7223a53bc1551e6498302a22eb310c8c5b5684b0\n"
    },
    {
      "commit": "82edc9b3482307a8e93655aadabb4f9ad24efe46",
      "tree": "cb82eabd1b6c11293eb6cb0dbea2e6ad00ca7d2b",
      "parents": [
        "757ec7837db85eae675cda5cfaf94040268327fd"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Jul 19 11:31:42 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Mon Jul 22 16:50:13 2013 -0700"
      },
      "message": "Add WorkSource capability to LocationManager\n\nChange-Id: I0fbbad0879b87ecc75a503bf7963356595bf4b96\n"
    },
    {
      "commit": "89cded957cee206287ff8da00cf6450c31967702",
      "tree": "7dc4e1df54ec5f903d372e5a96f89067f8e4e545",
      "parents": [
        "0500297714a26c744304a323267d5d642f351326",
        "39069b6e82fa848608d56b4efc8f28785816fe27"
      ],
      "author": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Mon May 13 23:36:58 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 13 23:36:58 2013 -0700"
      },
      "message": "am 39069b6e: am efb3726c: am 2b8f3734: am e3c549fc: am cd70c873: Merge \"Android U: Making Apps Location-Aware\" into jb-mr1.1-docs\n\n* commit \u002739069b6e82fa848608d56b4efc8f28785816fe27\u0027:\n  Android U: Making Apps Location-Aware\n"
    },
    {
      "commit": "39069b6e82fa848608d56b4efc8f28785816fe27",
      "tree": "fce07dc6c519063bdffcb6638b56bf5e42475d25",
      "parents": [
        "b4e1c8572aeee78a91f340c9607d3e934adae030",
        "efb3726c226001149c92d48fa50da7031c231490"
      ],
      "author": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Mon May 13 23:34:47 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 13 23:34:47 2013 -0700"
      },
      "message": "am efb3726c: am 2b8f3734: am e3c549fc: am cd70c873: Merge \"Android U: Making Apps Location-Aware\" into jb-mr1.1-docs\n\n* commit \u0027efb3726c226001149c92d48fa50da7031c231490\u0027:\n  Android U: Making Apps Location-Aware\n"
    },
    {
      "commit": "3ddba7ee37c02c071b6b7580cc21ad8007861ec9",
      "tree": "650df51e23a7aef6a02d319e71b627762d270b80",
      "parents": [
        "4da9c11b2758d55c67f7a24c3eb519c36497ba5d"
      ],
      "author": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Mon Mar 04 10:33:30 2013 -0800"
      },
      "committer": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Mon May 13 20:50:22 2013 -0700"
      },
      "message": "Android U: Making Apps Location-Aware\n\nChange-Id: I8f44c6ca6d797ceb8ada5b2c723a8cca0081cf0a\n"
    },
    {
      "commit": "8ce470dd4ba0608abb6b5eae117cefca927af96b",
      "tree": "e8746efbeec5ac1b39d7f594a1012514b44d491d",
      "parents": [
        "8d06cc6d871fce6d5d6b6283027d4625edd92550"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumar@google.com",
        "time": "Wed Apr 03 12:22:18 2013 -0700"
      },
      "committer": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumar@google.com",
        "time": "Wed Apr 10 15:25:07 2013 -0700"
      },
      "message": "GPS Hardware geofencing.\n\nAdd support for doing geofencing in hardware.\n\nChange-Id: I6d5015190e8d84e1f4beb1010ed977a71c1622d0\n"
    },
    {
      "commit": "54ca7aef2e12b240caa6fb1a1e65abd234bea337",
      "tree": "162f4680a75081bbfe363a6c48a3d97367d4bd43",
      "parents": [
        "f25febf01453733e8bdd1ac241ecd9d3bcbef475"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Jan 08 09:39:50 2013 -0800"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Jan 22 09:39:47 2013 -0800"
      },
      "message": "Annotate Locations coming from mock providers\n\nLocationManagerService now annotates incoming Location objects that\nhave come from mock location providers. The new isFromMockProvider()\nmethod can be called on any Location to determine whether the\nprovider that supplied the Location was a mock location provider.\n\nBug: 6813235\nChange-Id: Ib5140e93ea427f2e0b0036151047f87a02b4d23a\n"
    },
    {
      "commit": "a06de0f29b58df9246779cc4bfd8f06f7205ddb6",
      "tree": "c8ecd3323c1112dd46a9470600eab5df022ca85c",
      "parents": [
        "2e9f65f978397d112dbfb134d374588515bb644a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 11 16:34:47 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 09 12:47:47 2013 -0800"
      },
      "message": "New \"app ops\" service.\n\nInitial implementation, tracking use of the vibrator, GPS,\nand location reports.\n\nAlso includes an update to battery stats to also keep track of\nvibrator usage (since I had to be in the vibrator code anyway\nto instrument it).\n\nThe service itself is only half-done.  Currently no API to\nretrieve the data (which once there will allow us to show you\nwhich apps are currently causing the GPS to run and who has\nrecently accessed your location), it doesn\u0027t persist its data\nlike it should, and no way to tell it to reject app requests\nfor various operations.\n\nBut hey, it\u0027s a start!\n\nChange-Id: I05b8d76cc4a4f7f37bc758c1701f51f9e0550e15\n"
    },
    {
      "commit": "a5fa049562333ad154c38e47d0ec7845941d6c21",
      "tree": "199a23216f969f1def09a2952b0715acbd62d335",
      "parents": [
        "45972e7cf03ae95c4829f9d5a819870d5d609310",
        "4b77660b38cfff2ffb67c15db4c9e20adaac41d7"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Thu Nov 29 14:28:04 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 29 14:28:04 2012 -0800"
      },
      "message": "am 4b77660b: am 7023b3b0: Merge \"clarify Geofence.createCircle() param ranges\" into jb-mr1.1-dev\n\n* commit \u00274b77660b38cfff2ffb67c15db4c9e20adaac41d7\u0027:\n  clarify Geofence.createCircle() param ranges\n"
    },
    {
      "commit": "3dffb8cb691ccd3187cec193223d53b32339ed8b",
      "tree": "4d2ce8dc52df2c88ee7dc9b034904516d18cfe5d",
      "parents": [
        "6f3b20ccc14c25173780f01c621dbb2279cd8236"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Oct 30 10:44:14 2012 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Nov 27 09:23:52 2012 -0800"
      },
      "message": "clarify Geofence.createCircle() param ranges\n\nThis commit adds the valid ranges to the latitude/longitude\nparameters in Geofence.createCircle()\u0027s javadoc.\n\nBug: 7172696\nChange-Id: Iff6e3c3723d3fd9b6393bbc827ec5755c0d034af\n"
    },
    {
      "commit": "58ed5d748c0b9b64845975ef5844ad313de7c3f6",
      "tree": "507af3879bc894eb854712a1fe6c0953805a895c",
      "parents": [
        "9197d170b770f2b87abd0cd0e13dcf71e5a181c2",
        "768d9e1a72ceee7d4a5f608776b87b62d6ce4a04"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 11:52:12 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 07 11:52:12 2012 -0800"
      },
      "message": "am 768d9e1a: Merge \"Correct executable bit for source files\"\n\n* commit \u0027768d9e1a72ceee7d4a5f608776b87b62d6ce4a04\u0027:\n  Correct executable bit for source files\n"
    },
    {
      "commit": "3a084af2e90849aaa8beb3a610189e3399c63ea0",
      "tree": "ba4b87d227674fd68f9ea395649fde32778620f0",
      "parents": [
        "9d547d6934f64189e368c0b190fb4cf49c95a557"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 10:19:47 2012 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 10:27:31 2012 -0800"
      },
      "message": "Correct executable bit for source files\n\nMany media files and source code files were marked as executable in Git.\nRemove those.\n\nAlso a shell script and python script were not marked as executable.\n\nChange-Id: Ieb51bafb46c895a21d2e83696f5a901ba752b2c5\n"
    },
    {
      "commit": "7ab7f538924371a9dd4be7a27a6ae3b4c04b301c",
      "tree": "b78dc6cc0bdd8c32726a3e28c6df6e24cffaf06b",
      "parents": [
        "465c37533ac1fb76d76b062452ae19afb84aab0a"
      ],
      "author": {
        "name": "Laurent Tu",
        "email": "laurentt@google.com",
        "time": "Tue Oct 30 14:54:02 2012 -0700"
      },
      "committer": {
        "name": "Laurent Tu",
        "email": "laurentt@google.com",
        "time": "Thu Nov 01 15:22:22 2012 -0700"
      },
      "message": "Hide new location APIs and undeprecate old ones\n\nHide all new location APIs related to LocationRequest/Geofence and\nundeprecate all deprecated APIs consequently to the LocationRequest and\nGeofence introduction. Also introduce LocationRequestUnbundled for\nLocationProviders to use.\n\nChange-Id: I5b116c7d342041f45b341c88a4b6813571118018\n"
    },
    {
      "commit": "1e701979a031f42ee0fa0a07b151f6c61314e2e4",
      "tree": "ba0fad267efd6abc3fa812f3122af7449ac0257f",
      "parents": [
        "7e1a45d8af9d02fc552d65f2abcaefe3096b2c9c",
        "779b77455fc51382ecafa210b8a805d2a616da55"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Thu Nov 01 15:07:56 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 01 15:07:56 2012 -0700"
      },
      "message": "Merge \"fix NLP for COARSE applications, build FLP with SDK\" into jb-mr1-dev"
    },
    {
      "commit": "779b77455fc51382ecafa210b8a805d2a616da55",
      "tree": "c8dbdaf9a7dc45be92fbef534f2ead9cd4b13039",
      "parents": [
        "03f7ebfeaadb3f03c9a9a6405276fb702ad11fe1"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Wed Oct 31 15:54:05 2012 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Thu Nov 01 13:55:36 2012 -0700"
      },
      "message": "fix NLP for COARSE applications, build FLP with SDK\n\nIn this commit, we provide a means for unbundled location providers\nto attach an EXTRA_NO_GPS_LOCATION to the Locations that they report.\n\nWe also build FusedLocation against the SDK rather than the internal\ntree.\n\nUsed in conjunction with I394ded497b8de40d1f85618bff282553cdf378cb\nto fix NLP for applications with only ACCESS_COARSE_LOCATION\npermission.\n\nBug: 7453355\nChange-Id: Ie696f7abff9ef5237740ab87fe9f537a1c812c54\n"
    },
    {
      "commit": "8761e143c987fc48d854818988cde44700c9f602",
      "tree": "1fb5e1274405e5576d1a72776cba03892b4b1964",
      "parents": [
        "c86e8dffd04804f7f975c80325bc3ae70e7e972a"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Mon Oct 29 19:11:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 01 09:54:15 2012 -0700"
      },
      "message": "docs: Clarify the callback mechanisms for LocationRequest\nand clarify horizontal geofencing\n\nChange-Id: I8ff264d7a12c8ec3c79854e008aeeb5f922ad459\n"
    },
    {
      "commit": "b17223b6f5c4d894530c6412fc5dac2d6be403dc",
      "tree": "7f86418e3fde5490ff8ed786284c7b9477e4e2ad",
      "parents": [
        "799916e6ac706921e43a3382e5d9e06e13f87525"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Wed Oct 24 10:40:07 2012 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Wed Oct 24 10:40:07 2012 -0700"
      },
      "message": "revise android.location.Geofence documentation\n\nBug: 7172696\nChange-Id: Ib1a104ee4a97c51996200b8d456face66178115f\n"
    },
    {
      "commit": "2291ca47c763d9c292865ada1450d3a094918882",
      "tree": "30667eb6c845aae0404d0844f2cb550388a2a504",
      "parents": [
        "cc0106cd99831ce7d3715e3c85e5b3e6c5c6ca78"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Mon Oct 22 09:30:07 2012 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Mon Oct 22 12:53:32 2012 -0700"
      },
      "message": "LocationManager javadoc permission fixes\n\nThe javadoc mistakenly claimed that GPS and PASSIVE location\nproviders could be used with ACCESS_COARSE_LOCATION permissions.\nThat was incorrect, and the javadoc has been amended.\n\nBug: 7389249\nChange-Id: I6f6489bb539679a962c67ae7263857700df33c82\n"
    },
    {
      "commit": "37425c3475877f2fdadb78f669ec57fecf82dca7",
      "tree": "73b33ba2de97ecbb1505d6568f6d329424cbac26",
      "parents": [
        "a4c356cad7de0ef30faeaeadacd21b6eae913541"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Oct 16 16:08:48 2012 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Thu Oct 18 09:13:39 2012 -0700"
      },
      "message": "LocationManager permissions cleanup\n\nThis commit is the result of a comprehensive permissions review for\nMR1 release. It addresses a number of deviations from spec and from\nMR0\u0027s behavior, bringing MR1 into sync with both.\n\nIt also cleans up the concept of \"location resolution permission\",\nrepresenting it internally as an enumerated access level to reduce\nreliance on cumbersome string manipulation. There\u0027s a function to\nconvert the enum int into a permission string where needed, too.\n\nAdditionally, this confines caller-identity-sensitive calls to the\nhopefully-obviously-named \"getCallerAllowedResolutionLevel()\". This\nshould make it much easier to prove correctness with respect to\naccidentally calling functions that depend upon the caller\u0027s identity\nafter identity has already been shed by Binder.clearCallingIdentity().\n\nChange-Id: I446169aee8fb2fde26ac6d04b479b40253782acb\n"
    },
    {
      "commit": "e72fe16146dd33cb218bf8c16b069f68f331fdf8",
      "tree": "1fc422742eaca00e3ae01f790bc188e6d480a012",
      "parents": [
        "57e6203457cedbc6f4bf8a45635862a3eb717e9f"
      ],
      "author": {
        "name": "Laurent Tu",
        "email": "laurentt@google.com",
        "time": "Thu Oct 04 13:40:08 2012 -0700"
      },
      "committer": {
        "name": "Laurent Tu",
        "email": "laurentt@google.com",
        "time": "Thu Oct 04 13:40:08 2012 -0700"
      },
      "message": "Prevent  overflow in LocationRequest.setExpireIn()\n\nPrevent overflow in LocationRequest.setExpireIn(), for example,\nwhen we pass in Long.MAX_VALUE.\n\nBug: 7047435\nChange-Id: Ie56928a59fb387173fbd3887c0ef9aede00f8152\n"
    },
    {
      "commit": "38389b6cf7bd2ef49d2bd20ff1bca8677596590e",
      "tree": "df60d969dee05b53545e2b0b18bfba57d266d595",
      "parents": [
        "ce803d8ed8350179a8474564df8ff26be32bbe5e"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Sun Sep 30 11:44:22 2012 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Mon Oct 01 09:09:25 2012 -0700"
      },
      "message": "Route GPS notifications to all users.\n\nThis takes the easy way around notifying the correct users\nabout GPS state transitions by notifying ALL the users(!).\n\nI\u0027ve also laid groundwork for proper multiuser support in\nLocationManager and did a tiny bit of cleanup in\nGpsNetInitiatedHandler while I was looking at notifications.\n\nBug: 7213552\nChange-Id: I2d6dc65c459e55d110ac0f5f79ae7a87ad638ede\n"
    },
    {
      "commit": "4118012da9a22694b3353040a485f8cdc27e2f17",
      "tree": "310eddfb0c3ee5d1205dfbc2c72dd91fb9ffc40f",
      "parents": [
        "2832136bb6fcace61ef078051e94aa0a841aac15"
      ],
      "author": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Wed Sep 26 11:29:25 2012 -0700"
      },
      "committer": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Wed Sep 26 11:29:25 2012 -0700"
      },
      "message": "Fix for bug: #7173350. elapsedRealtimeNano() -\u003e elapsedRealtimeNanos()\n\nChange-Id: Ie38952bbaace080e81e41e61350cda172951d548\n"
    },
    {
      "commit": "73577888ec48bcb1eb5053f8dc3ba4eb33eb6f1a",
      "tree": "de817f40e52b5a09cea88d3fdab19ad826539735",
      "parents": [
        "b8c2ac3ecb6ee6319df65a88f42141c070b46163"
      ],
      "author": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Tue Sep 25 12:58:26 2012 -0700"
      },
      "committer": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Tue Sep 25 12:58:26 2012 -0700"
      },
      "message": "Fix for bug: #7172778. Javadoc errors in LocationManager.\n\nChange-Id: Iaebd4cf00c8a33bcf4fc74eaa1dfec9675032826\n"
    },
    {
      "commit": "bc391d58c8d09bd58b57dda20dd9d2281d90db32",
      "tree": "a2229a1a1b02535f6ee5ae3ddaba76db9cb7a93e",
      "parents": [
        "9b93f4def131845200997c861858f34cc15c8dee",
        "53fe75677212d0eb45e256a78599d7866256bc6a"
      ],
      "author": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Mon Sep 24 11:41:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 24 11:41:53 2012 -0700"
      },
      "message": "Merge \"Revert \"Fix for bug: #7173350. elapsedRealtimeNano() -\u003e elapsedRealtimeNanos()\"\" into jb-mr1-dev"
    },
    {
      "commit": "53fe75677212d0eb45e256a78599d7866256bc6a",
      "tree": "9e2bacbd6cf9fa125447b697c9531d7a3583b8ac",
      "parents": [
        "2f6d8829524dfca3a77e9a57c3b9c3862209877d"
      ],
      "author": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Mon Sep 24 11:38:29 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 24 11:38:29 2012 -0700"
      },
      "message": "Revert \"Fix for bug: #7173350. elapsedRealtimeNano() -\u003e elapsedRealtimeNanos()\"\n\nThis reverts commit 2f6d8829524dfca3a77e9a57c3b9c3862209877d\n\nChange-Id: Id5af767a09fc319127c4ebef837c5b7a7f75cb01\n"
    },
    {
      "commit": "b00df8e929f9ba865a95a7df3f949e6169332954",
      "tree": "403858cba43361e6ca1a9a4d955929f4b671e2a0",
      "parents": [
        "cd11b223f3d23ca0f92b53808f7e1cce928c2a7b",
        "2f6d8829524dfca3a77e9a57c3b9c3862209877d"
      ],
      "author": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Mon Sep 24 11:02:31 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 24 11:02:31 2012 -0700"
      },
      "message": "Merge \"Fix for bug: #7173350. elapsedRealtimeNano() -\u003e elapsedRealtimeNanos()\" into jb-mr1-dev"
    },
    {
      "commit": "17e3e9e53c5fb9c92c8972a8d92659c6bef85831",
      "tree": "e7d429e36069f950f9c2b47ed66b55acf4fb0a87",
      "parents": [
        "e3f2ac9e526e5b4de4d2ae113e644c1cb14b1ce6",
        "09016ab4dd056a16809419d612cb865a14980880"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Sun Sep 23 15:06:58 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Sep 23 15:06:59 2012 -0700"
      },
      "message": "Merge \"Do not use passive GPS data for COARSE only apps.\" into jb-mr1-dev"
    },
    {
      "commit": "2f6d8829524dfca3a77e9a57c3b9c3862209877d",
      "tree": "15bd455fb9ed48e4246a475855c9ad7d0a15d94b",
      "parents": [
        "f98db0de2248ad286b207eed6a826373cc60b786"
      ],
      "author": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Fri Sep 21 14:21:27 2012 -0700"
      },
      "committer": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Fri Sep 21 15:54:41 2012 -0700"
      },
      "message": "Fix for bug: #7173350. elapsedRealtimeNano() -\u003e elapsedRealtimeNanos()\n\nChange-Id: I71c24ea10093ece07a0780e97bc641ff548c1a44\n"
    },
    {
      "commit": "09016ab4dd056a16809419d612cb865a14980880",
      "tree": "e920e568aeac8e75b2f4b9e815047bf7c4a8f2af",
      "parents": [
        "537d47f510ce49acee09516ed5dde680d910ff94"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Sun Sep 16 12:33:15 2012 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Fri Sep 21 13:45:41 2012 -0700"
      },
      "message": "Do not use passive GPS data for COARSE only apps.\n\nFusionEngine now attaches a secondary location that has never seen\nGPS data to its result. LocationFudger uses the GPS-less location so\nthat COARSE apps never see data from the GPS provider.\n\nWhen the previous location is updated, the previous GPS-less location\nis carried over if the location update was GPS-only.\n\nAdditionally, apps without FINE permission are not notified when GPS\nlocation changes, and any attempt to use GPS_PROVIDER without FINE\npermission is met by a stern SecurityException.\n\nBug: 7153659\nChange-Id: I12f26725782892038ce1133561e1908d91378a4a\n"
    },
    {
      "commit": "8a624ef0fe5e86031f15f4120205c869e34f6637",
      "tree": "796e0ea05d7777a9ed60233c3b8f3c264bbca707",
      "parents": [
        "11cb642756093a4af901b1525375b1eb2b5c3e2b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 21 11:20:00 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 21 11:20:00 2012 -0700"
      },
      "message": "API REVIEW: Undeprecate Location.dump()\nBug #7173109\n\nChange-Id: Ia2f4a5b6255dae7ace4702f7d66ec30a077c9c79\n"
    },
    {
      "commit": "4fab68b5324e1f9b6765cdc33e66d1f074623dc2",
      "tree": "96d99f6794718101b1cbb52c72af154d2b0790e9",
      "parents": [
        "aefd73d2b9f17a06f05346f302db1e393a7ece19"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Thu Sep 13 13:20:59 2012 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Thu Sep 13 14:17:41 2012 -0700"
      },
      "message": "Require ACCESS_FINE_LOCATION for Geofence use.\n\nBug: 7153226\nChange-Id: I49236379e739fcda66bbc9a31cfdca9a87122aec\n"
    },
    {
      "commit": "1332b53522e281012fefb34bfbcc68a03028f516",
      "tree": "ee947d9b82613b9ff24a3f75d38fb578b949e7a4",
      "parents": [
        "5584b497b7fcd8660cc49cfc8ab4dd0c6dad1060"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Tue Aug 21 16:25:47 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Tue Aug 21 16:26:26 2012 -0700"
      },
      "message": "Fix some location issues exposed by CTS.\n\nChange-Id: I5859ee2c9db5745b0a3bc8abfa8f08728fb25059\n"
    },
    {
      "commit": "5584b497b7fcd8660cc49cfc8ab4dd0c6dad1060",
      "tree": "4528c5cab02a61558cdba596c0dd666b1ca263c0",
      "parents": [
        "2b7a0d00426218523629e4e8dd2e9197d445c09b"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Aug 20 14:40:24 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Tue Aug 21 13:52:20 2012 -0700"
      },
      "message": "Print timestamp (instead of age) in Location#toString()\n\nAge was a bad idea, since it depends when toString() was called\n\nChange-Id: Ica0b6bfa9a93b5a452ba3def5fbb2b0a0194c401\n"
    },
    {
      "commit": "4035f5a7c191a68bc9a5912ce44c43c82e9e5dbf",
      "tree": "df96aa5f4a8a2d60d872a17024d89944ece40d60",
      "parents": [
        "81c304b99d920e8d66ac16332489d78ff7162e12"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 17 14:43:49 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 17 15:25:16 2012 -0700"
      },
      "message": "Port location blacklist code to MR1.\n\nI had to re-do this change for MR1 because LocationManagerService changed\nso much. Here is the original change description:\n\nAdd package-name-prefix blacklist for location updates.\n\nThe Settings.Secure value locationPackagePrefixBlacklist and\nlocationPackagePrefixWhitelist contains comma seperated package-name\nprefixes.\n\nLocation \u0026 geo-fence updates are silently dropped if the receiving\npackage name has a prefix on the blacklist. Status updates are\nnot affected. All other API\u0027s work as before.\n\nA content observer is used so run-time updates to the blacklist\napply immediately. There is both a blacklist and a whitelist.\nThe blacklist applies first, and then exemptions are allowed\nfrom the whitelist. In other words, if your package name prefix\nmatches both the black AND white list, then it is allowed.\n\nBug: 6986553\nChange-Id: I1e151e08bd7143e47db005bc3fe9795076398df7\n"
    },
    {
      "commit": "4e31c4fffbc42b4c2b5dca6431cfeef9e078f5b4",
      "tree": "e1e5a1df577872de6f947623cdccfe50062cb521",
      "parents": [
        "74fa7eabda3d0c1a85e0b568e3fc4230ed4fe7a4"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Aug 13 19:35:39 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Aug 16 17:59:34 2012 -0700"
      },
      "message": "Add javadoc for new location API\u0027s.\n\nChange-Id: If15024ee88421c07ba3a174747774fc451fd002e\n"
    },
    {
      "commit": "74fa7eabda3d0c1a85e0b568e3fc4230ed4fe7a4",
      "tree": "aaf46ec024fa88f5172c39cfb46a0f8bf8c4a877",
      "parents": [
        "08ca1046fe4f1890f91241f8d082a024ef6cfd93"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Aug 13 19:36:38 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Aug 16 15:22:24 2012 -0700"
      },
      "message": "Improve coarse locations.\n\nFix a couple of bugs, and modify the behavior of the random offset.\n\nThe random offset now slowly changes over time, to mitigate against\napplications averaging out the offset over time while at a\ngrid boundary.\n\nChange-Id: Iecffff29145b8c2b30d1eca1662cf9d3e8cff756\n"
    },
    {
      "commit": "08ca1046fe4f1890f91241f8d082a024ef6cfd93",
      "tree": "da4e378d5fb57beac9ab8bca3f28e0f6da335456",
      "parents": [
        "3914e4b7d12b014f73085cd6e34b6fd69ea26226"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 15:47:53 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 17:17:32 2012 -0700"
      },
      "message": "Fix a couple of bugs from the location overhaul.\n\nMarshall LocationRequest array correctly.\n\nObserve reportLocation from FusionEngine.\n\nActually deliver the setRequest message to fusion engine.\n\nChange-Id: Iff64596fdd42f9fb06e563591dda9fbe0241533a\n"
    },
    {
      "commit": "3914e4b7d12b014f73085cd6e34b6fd69ea26226",
      "tree": "11dce06e9b6e602183cd024e709ec476e02defd5",
      "parents": [
        "6fa9ad4afcd762aea519ff61811386c23d18ddb2"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 15:25:16 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 15:27:38 2012 -0700"
      },
      "message": "Remove LocationManager#getLastKnownLocation(Criteria).\n\nThis was never a public API, so we don\u0027t need to follow\nan orderly deprecation. And it breaks a CTS test:\n\ncts/tests/tests/location/src/android/location/cts/LocationManagerTest.java:521: reference to getLastKnownLocation is ambiguous, both method getLastKnownLocation(java.lang.String) in android.location.LocationManager and method getLastKnownLocation(android.location.Criteria) in android.location.LocationManager match\n            mManager.getLastKnownLocation(null);\n                    ^\n\nChange-Id: I503267e4fa577ce4bf684239da777f11b0e511f5\n"
    },
    {
      "commit": "6fa9ad4afcd762aea519ff61811386c23d18ddb2",
      "tree": "5b027550205ada4b972f5cc3d8073819c07d9c75",
      "parents": [
        "c47f80f1ae96e3c8b6a750d68cc12dfbbca97254"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Jul 16 12:18:23 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 14:57:09 2012 -0700"
      },
      "message": "Location overhaul, major commit.\n\nThemes: Fused Location, Geofencing, LocationRequest.\n\nAPI changes\no Fused location is always returned when asking for location by Criteria.\no Fused location is never returned as a LocationProvider object, nor returned\n  as a provider String. This wouldn\u0027t make sense because the current API\n  design assumes that LocationProvider\u0027s have fixed properties (accuracy, power\n  etc).\no The fused location engine will tune itself based on the criteria passed\n  by applications.\no Deprecate LocationProvider. Apps should use fused location (via Criteria\n  class), instead of enumerating through LocationProvider objects. It is\n  also over-engineered: designed for a world with a plethora of location\n  providers that never materialized.\no The Criteria class is also over-engineered, with many methods that aren\u0027t\n  currently used, but for now we won\u0027t deprecate them since they may have\n  value in the future. It is now used to tune the fused location engine.\no Deprecate getBestProvider() and getProvider().\no Add getLastKnownLocation(Criteria), so we can return last known\n  fused locations.\no Apps with only ACCESS_COARSE_LOCATION _can_ now use the GPS, but the location\n  they receive will be fudged to a 1km radius. They can also use NETWORK\n  and fused locatoins, which are fudged in the same way if necessary.\no Totally deprecate Criteria, in favor of LocationRequest.\n  Criteria was designed to map QOS to a location provider. What we\n  really need is to map QOS to _locations_.\n  The death knell was the conflicting ACCURACY_ constants on\n  Criteria, with values 1, 2, 3, 1, 2. Yes not a typo.\no Totally deprecate LocationProvider.\no Deprecate test/mock provider support. They require a named provider,\n  which is a concept we are moving away from. We do not yet have a\n  replacement, but I think its ok to deprecate since you also\n  need to have \u0027allow mock locations\u0027 checked in developer settings.\n  They will continue to work.\no Deprecate event codes associated with provider status. The fused\n  provider is _always_ available.\no Introduce Geofence data object to provide an easier path fowards\n  for polygons etc.\n\nImplementation changes\no Fused implementation: incoming (GPS and NLP) location fixes are given\n  a weight, that exponentially decays with respect to age and accuracy.\n  The half-life of age is ~60 seconds, and the half-life of accuracy is\n  ~20 meters. The fixes are weighted and combined to output a fused\n  location.\no Move Fused Location impl into\n  frameworks/base/packages/FusedLocation\no Refactor Fused Location behind the IProvider AIDL interface. This allow us\n  to distribute newer versions of Fused Location in a new APK, at run-time.\no Introduce ServiceWatcher.java, to refactor code used for run-time upgrades of\n  Fused Location, and the NLP.\no Fused Location is by default run in the system server (but can be moved to\n  any process or pacakge, even at run-time).\no Plumb the Criteria requirements through to the Fused Location provider via\n  ILocation.sendExtraCommand(). I re-used this interface to avoid modifying the\n  ILocation interface, which would have broken run-time upgradability of the\n  NLP.\no Switch the geofence manager to using fused location.\no Clean up \u0027adb shell dumpsys location\u0027 output.\no Introduce config_locationProviderPackageNames and\n  config_overlay_locationProviderPackageNames to configure the default\n  and overlay package names for Geocoder, NLP and FLP.\no Lots of misc cleanup.\no Improve location fudging. Apply random vector then quantize.\no Hide internal POJO\u0027s from clients of com.android.location.provider.jar\n  (NLP and FLP). Introduce wrappers ProviderRequestUnbundled and\n  ProviderPropertiesUnbundled.\no Introduce ProviderProperties to collapse all the provider accuracy/\n  bearing/altitude/power plumbing (that is deprecated anyway).\no DELETE lots of code: DummyLocationProvider,\no Rename the (internal) LocationProvider to LocationProviderBase.\no Plumb pid, uid and packageName throughout\n  LocationManagerService#Receiver to support future features.\n\nTODO: The FLP and Geofencer have a lot of room to be more intelligent\nTODO: Documentation\nTODO: test test test\n\nChange-Id: Iacefd2f176ed40ce1e23b090a164792aa8819c55\n"
    },
    {
      "commit": "48c5eb018b1731bd47caccd43cda2cd36ebc271f",
      "tree": "8d4161bddb28cb388d875e9639e1c7c53d41f5d3",
      "parents": [
        "47db02bad8fed67025669c41ef0c0dd9cafe7ed2"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Sun Jul 29 21:23:08 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Jul 30 13:17:30 2012 -0700"
      },
      "message": "DO NOT MERGE. Add package-name-prefix blacklist for location updates.\n\nThe Settings.Secure value locationPackagePrefixBlacklist and\nlocationPackagePrefixWhitelist contains comma seperated package-name\nprefixes.\n\nLocation \u0026 geo-fence updates are silently dropped if the receiving\npackage name has a prefix on the blacklist. Status updates are\nnot affected. All other API\u0027s work as before.\n\nA content observer is used so run-time updates to the blacklist\napply immediately. There is both a blacklist and a whitelist.\nThe blacklist applies first, and then exemptions are allowed\nfrom the whitelist. In other words, if your package name prefix\nmatches both the black AND white list, then it is allowed.\n\nChange-Id: I4ea2ad56fa6bd75d32151bc250ac25c26a5777c4\n"
    },
    {
      "commit": "2eeeec248a38ff33999c83f4b8d5bab7d50e79d2",
      "tree": "2886aaefdd09bbafa7853dbbbb29aa866846045f",
      "parents": [
        "b8acd060d409f0e81ab3510b429cb86d3f34adb8"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Wed Jul 18 13:13:37 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Jul 20 10:07:07 2012 -0700"
      },
      "message": "Improve Location object.\n\nAdd getElapsedRealtimeNano():\n\nCurrently Location just has getTime() and setTime() based on UTC time.\nThis is entirely unreliable since it is not guaranteed monotonic.\nThere is a lot of code that compares fix age based on deltas -\nand it is all broken in the case of a system clock change. System\nclock can change when switching cellular networks (and in some\ncases when switching towers).\n\nDocument the meaning of getAccuracy():\nIt is the horizontal, 95% confidence radius.\n\nMake some fields mandatory if they are reported by a LocationProvider:\n\nAll Locations returned by a LocationProvider must include at the\nminimum a lat, long, timestamps, and accuracy. This is necessary\nto perform fused location. There are no public API\u0027s for applications\nto feed locations into a location provider so this should not cause\nany breakage.\n\nIf a LocationProvider does not fill in enough fields on a Location\nobject then it is dropped, and logged.\n\nBug: 4305998\nChange-Id: I7df77125d8a64e174d7bc8c2708661b4f33461ea\n"
    },
    {
      "commit": "e0fd693c6098f59004f9e96ad75c058e26c337b0",
      "tree": "d015b05584ab8cb4feab93fe8bdbedcbad7502fa",
      "parents": [
        "357d9cb861e05c514acba8cc0a8fc5ef70e4a356"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Wed Jul 11 10:26:13 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Jul 16 12:18:52 2012 -0700"
      },
      "message": "Improve geofencing: throttle location updates with distance to fence.\n\nPreviously any geofence (proximity alert) would turn the GPS on at full rate.\nNow, we modify the GPS interval with the distance to the nearest geofence.\nA speed of 100m/s is assumed to calculate the next GPS update.\n\nAlso\no Major refactor of geofencing code, to make it easier to continue to improve.\no Discard proximity alerts when an app is removed.\no Misc cleanup of nearby code. There are other upcoming changes\n  that make this a good time for some house-keeping.\n\nTODO:\nThe new geofencing heuristics are much better than before, but still\nrelatively naive. The next steps could be:\n- Improve boundary detection\n- Improve update thottling for large geofences\n- Consider velocity when throttling\n\nChange-Id: Ie6e23d2cb2b931eba5d2a2fc759543bb96e2f7d0\n"
    },
    {
      "commit": "9be0105fbc56eb1b1813bb7c5fe258a144867a43",
      "tree": "964727f4694bb224eacdaaa68320292aab85ffd3",
      "parents": [
        "3cd4624448dcaddecc75461ef645da72e7e5c098"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Jun 22 12:35:08 2012 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Jun 22 12:35:08 2012 -0700"
      },
      "message": "docs: fix several links\n\nChange-Id: I89d9fd64dc22c90680bb05415cc966c255165af9\n"
    },
    {
      "commit": "f1be6861daea57ba0a1595739a899d05229d6d15",
      "tree": "92debafdbbce7ecc9792e8a6f7e40c919c2f8f47",
      "parents": [
        "c1c140657633cc5b0ff26da1f122fab305d21e01"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Tue May 15 10:53:42 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu May 17 14:56:54 2012 -0700"
      },
      "message": "Enforce the minTime parameter in LocationManager#requestLocationUpdates\n\nThere is a long history in Android, on both GED and non GED devices\nof GPS providers ignoring the minTime parameter making location updates\nevery second. The problem is usually poor GPS drivers that claim to\ndo scheduling but then do not.\n\nBy making the minTime parameter strict (instead of a hint) we can add\na CTS test to ensure that udpates to not occur too frequently. I believe\nthis is the desired behavior from apps. If apps want to take advantage\nof more frequent updates when another application asks for those updates\nthen it can use the passive provider.\n\nThe CTS test for GPS has already been submitted (as part of CTS Verifier).\n\nBug: 6424983\nChange-Id: I163b9e44ea7ab71530b86fc2282614e0150e90f1\n"
    },
    {
      "commit": "3aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45",
      "tree": "7600f58de48f6764d476cc9d6a92ed0a5dddf278",
      "parents": [
        "8f04ae361cd34fdaea41fbedefb85cff2c684e36"
      ],
      "author": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Tue Dec 20 10:38:34 2011 -0800"
      },
      "committer": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Thu Dec 22 15:08:23 2011 -0800"
      },
      "message": "docs: Add developer guide cross-references, Project ACRE, round 4\n\nChange-Id: I1b43414aaec8ea217b39a0d780c80a25409d0991\n"
    },
    {
      "commit": "d73b79bb314dde86cf8ff9300fefc133b31841d1",
      "tree": "a53994afb14a9a58be2a5088aa903fbe7495ff71",
      "parents": [
        "19a06fe93cccb4b1dd224b8456969821a19b07ef"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Dec 13 14:02:32 2011 -0800"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Dec 13 14:02:32 2011 -0800"
      },
      "message": "Cherry-picking Id45abeba and Ia065dec6 for MR1\n\n-------------------------------------------------------\nMCC detection fixes for CountryDetector\n\n- Don\u0027t get and cache phone tpe at the initialization time.  At this point\nTelephonyManager is probably not ready yet.\n\n- Refresh MCC whenever we get the service state changed callback, even when\nthe state hasn\u0027t actually changed, in order to make sure we get refresh\ncountry properly when MCC changes.\n\n- Also remove the initialization of mPhoneStateListener, which prevented us from\nregistering phone state listener properly.\n\n- Also fix tests which were already failing.\n\nBug 5670680\n\n-------------------------------------------------------\nAdd logging to country detector logic\n\nThis is for debugging purposes to verify the effects of\nchange Id45abeba1b1e843053ac2c946861b439ca568de4.\n\nBug: 5670680\nChange-Id: I238d953484e2c8135f7dac70fce8662c8300a286\n"
    },
    {
      "commit": "40c5ccfffe1aca40c8e6b9155ce2f9918b53701a",
      "tree": "b7db53676f6f8ad3f8d3e2e5d7345a869ba4bcb6",
      "parents": [
        "f55df0e26a71b93bda2e10de7a5b2dd9ab843765"
      ],
      "author": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Tue Jul 19 12:10:07 2011 -0700"
      },
      "committer": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Tue Jul 19 12:10:07 2011 -0700"
      },
      "message": "Acknowledge that the platform guarantees UTF-8 and UTF-16.\n\nThese log statements were dead code. That isn\u0027t much of a problem,\nexcept that the \u0027e.getMessage()\u0027 that was being logged could be null,\nand that would cause a real problem.\n\nChange-Id: I8573bc687a7eda73782bd028e8ddc048a1954dc5\n"
    },
    {
      "commit": "08c34c27b6a0153a58950ce7c541700a71bc0ed7",
      "tree": "b2b18d065649e61248dc4c816ead4e124885362d",
      "parents": [
        "73f0a3a6bde168524a5f3c7ac31ba372174940e7",
        "e0009bb0b700dcfeba3ff77f8c33113499674432"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Jul 01 07:56:15 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 01 07:56:15 2011 -0700"
      },
      "message": "am e0009bb0: am 98395483: am 9f2cbf14: am e06749e1: Merge \"Add FLAG_AUTO_CANCEL flag for multiple supl notifications.\"\n\n* commit \u0027e0009bb0b700dcfeba3ff77f8c33113499674432\u0027:\n  Add FLAG_AUTO_CANCEL flag for multiple supl notifications.\n"
    },
    {
      "commit": "e0009bb0b700dcfeba3ff77f8c33113499674432",
      "tree": "3f99fd3784efc458c5d0cc49fe332c20adaa71cd",
      "parents": [
        "0562efd1ea970ded01b1b47bbce790a269a60c45",
        "98395483e4309f7b92348136491575861008b3c0"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jun 30 08:25:13 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 30 08:25:13 2011 -0700"
      },
      "message": "am 98395483: am 9f2cbf14: am e06749e1: Merge \"Add FLAG_AUTO_CANCEL flag for multiple supl notifications.\"\n\n* commit \u002798395483e4309f7b92348136491575861008b3c0\u0027:\n  Add FLAG_AUTO_CANCEL flag for multiple supl notifications.\n"
    }
  ],
  "next": "3746f2d91425e24b23ddf34f2b9afef3f3efc3e2"
}
