)]}'
{
  "log": [
    {
      "commit": "cf361e2670cb6976042699d46391cc0ac4662c87",
      "tree": "e5c9da3f1ad3afce923621cedc8ad5db6128e68a",
      "parents": [
        "df64ac688d400c74438db091952d236fffd5f778"
      ],
      "author": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Tue Apr 22 17:54:46 2014 -0700"
      },
      "committer": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Tue Apr 22 17:54:46 2014 -0700"
      },
      "message": "Import translations. DO NOT MERGE\n\nChange-Id: Ieceadfdafb3e1353a30494c8a9731efcf91b9e8b\nAuto-generated-cl: translation import\n"
    },
    {
      "commit": "2c4254e4765b4fa675c268550e66a3d4341282bc",
      "tree": "d82c9d52d66903ceafa31b130e7a4f85b57119b2",
      "parents": [
        "90cadb35156829ff1d6b7066409596da38fc70e1"
      ],
      "author": {
        "name": "Oskar Grönqvist",
        "email": "oskar.gronqvist@sonymobile.com",
        "time": "Wed Dec 11 14:14:33 2013 +0100"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Tue Jan 14 17:57:21 2014 +0900"
      },
      "message": "Set Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE default value\n\nTo be able to customize the \"WiFi scan always available\"\nsetting we need to set a default value.\n\nChange-Id: I3673f2613ab9b6a947aed7e29d4cc876140c2180\n"
    },
    {
      "commit": "6236cfdf13d86840945f29ec4e7e38642b34eb11",
      "tree": "b437909fa377af5fa26937641f9808a50b8e64c3",
      "parents": [
        "21bd2e5b0a8ccd065b8bbffb845159ce59640a9a",
        "d0383e37bdd7fe909ee4dc0477c73a7342aa7e4e"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Oct 14 19:01:42 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 14 19:01:42 2013 -0700"
      },
      "message": "am d0383e37: am 4d0f0692: Merge \"Switch settings provider to use the new Settings icon\" into klp-dev\n\n* commit \u0027d0383e37bdd7fe909ee4dc0477c73a7342aa7e4e\u0027:\n  Switch settings provider to use the new Settings icon\n"
    },
    {
      "commit": "6b013b753c40a8d998027b4244883e99be42a3be",
      "tree": "8093639a7027e1b6b665c55361a86b38149ff5e8",
      "parents": [
        "7a2f4ae13223bb804417e9ce3294b22bd9bda49a",
        "5c74233315fd3b4ff9710624996b2312bbbaca5e"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Oct 14 19:00:03 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 14 19:00:03 2013 -0700"
      },
      "message": "am 5c742333: am b83bba7c: Merge \"Log noisily on uid vs user-handle confusion in the settings provider\" into klp-dev\n\n* commit \u00275c74233315fd3b4ff9710624996b2312bbbaca5e\u0027:\n  Log noisily on uid vs user-handle confusion in the settings provider\n"
    },
    {
      "commit": "8292342e66211d37eb5ebd8615967335f3f99500",
      "tree": "2056f203124f1fdba071c4fbbdca355f06f588b6",
      "parents": [
        "1680cfd803d6a435ce4c809075d052da2723ac07"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Oct 14 15:24:31 2013 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Oct 14 15:24:31 2013 -0700"
      },
      "message": "Switch settings provider to use the new Settings icon\n\nBug: 11193955\nChange-Id: I2e32d31fc8789a950cb54ab6176b8360fc5d9ae5\n"
    },
    {
      "commit": "0da1357f9827b6a2df24a449dbb8eba12484095c",
      "tree": "12c79b0be416e0b9e1bdf672d341eb718b3dee00",
      "parents": [
        "ce6d9066b666cb065821163036bdabc9ec8081dd"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Sun Oct 13 17:34:49 2013 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Sun Oct 13 18:36:08 2013 -0700"
      },
      "message": "Log noisily on uid vs user-handle confusion in the settings provider\n\nMake sure that we catch any attempts to pass a uid to the settings\nprovider\u0027s \"for this user\" code paths.\n\nBug 11087584\nBug 11208808\n\nChange-Id: I1cc025b2aade9072b4a61b4499d02c82b0085fa2\n"
    },
    {
      "commit": "4be3db7018154406ab74e029482a7d82dbcd3a5a",
      "tree": "f7bc50cdd634a7e68cbd50b0c06028715c94ed0f",
      "parents": [
        "d78b94a96bdbfe5b9742c50f221c2923fdd9be8e",
        "f3a56199a526bb21f4196e35a355d8476e4604ce"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Oct 08 13:07:53 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 08 13:07:53 2013 -0700"
      },
      "message": "am f3a56199: am 40bacdf4: Merge \"Don\\\u0027t wake users up with low battery sounds.\" into klp-dev\n\n* commit \u0027f3a56199a526bb21f4196e35a355d8476e4604ce\u0027:\n  Don\u0027t wake users up with low battery sounds.\n"
    },
    {
      "commit": "dea6462aab31049d1f1055314491bc33a6f16b0d",
      "tree": "c4c97da0bae3256459ffd3329748bd96c93986f3",
      "parents": [
        "46ec729a88079d3878a95a57ab703e64638dfc1a"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Mon Sep 23 16:05:57 2013 -0400"
      },
      "committer": {
        "name": "Dan Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Oct 08 17:37:06 2013 +0000"
      },
      "message": "Don\u0027t wake users up with low battery sounds.\n\nBattery sounds will always play when the screen is on, and\nthen for Settings.Global.LOW_BATTERY_SOUND_TIMEOUT\nmilliseconds after the screen goes off. After that, low\nbattery alerts will be pushed out the airlock until the\nscreen comes back on again.\n\nIf battery sounds are suppressed via this mechanism you\u0027ll\nsee a log line like:\n\n\tV/PowerUI ( 3161): screen off too long (5779ms, limit\n\t5000ms): not waking up the user with low battery sound\n\nThe default value of LOW_BATTERY_SOUND_TIMEOUT is a settings\nprovider resource: R.integer.def_low_battery_sound_timeout.\n\nBug: 10487557\nChange-Id: Iddd42038aa630631dc8f1833f20fcc5a0c646681\n"
    },
    {
      "commit": "1c8b3fa018a1d8a06fef065f3c58c6552abf3474",
      "tree": "3f2c4f5dd27eba418476d50ae6138240d98c1d84",
      "parents": [
        "fa0556943ee386e83d190f1de86d73d81e08cc8a"
      ],
      "author": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Sat Sep 14 21:08:26 2013 -0700"
      },
      "committer": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Sat Sep 14 21:08:26 2013 -0700"
      },
      "message": "Import translations. DO NOT MERGE\n\nChange-Id: I12383ccb553cbace814156dafc8aad62a007f2c0\nAuto-generated-cl: translation import\n"
    },
    {
      "commit": "074dc2eb2da23976bc2916cfe7c61dfcd9977e8f",
      "tree": "dd9c882c4f9f1f488a1d70b184eab5b923dd7fd6",
      "parents": [
        "204df6f06ad17f0e775fd32fd657cff7d4c4ab7d",
        "1d1319e3e1c266399ca1805ef1453bca71fdf6ce"
      ],
      "author": {
        "name": "Vinit Deshapnde",
        "email": "vinitd@google.com",
        "time": "Thu Sep 12 17:53:39 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 12 17:53:39 2013 +0000"
      },
      "message": "Merge \"Don\u0027t restore EAP-TLS networks from backup\" into klp-dev"
    },
    {
      "commit": "2e804444d64bdf2763c682109c838a8372b17934",
      "tree": "4666d069488e792ad4ad3bb20749c17c6557f574",
      "parents": [
        "ecf612a15c6201d7a4c55f0fcceb077f3e9ad84e"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Sep 11 11:11:19 2013 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Sep 11 11:11:19 2013 -0700"
      },
      "message": "Handle the case where the restore environment doesn\u0027t have the ringtone\n\nBug: 10130785\n\nuncanonicalize() can return a null now, so abort restoring the ringtone\nin that case.\n\nChange-Id: I28765818c8d3e1fb3f271afdfe66ebc955cfcefe\n"
    },
    {
      "commit": "622bf2220cf7fb9bb526afa39921ee2aa93e32ca",
      "tree": "95a22db170541bdf0beac56c43e8a7612130a0ad",
      "parents": [
        "1d2daa7809b58c226410c0060d7837de0a29888a"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Sep 06 13:54:28 2013 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Sep 10 11:08:24 2013 -0700"
      },
      "message": "Backup and restore ringtone and notification ringtone\n\nUse the new content provider API to canonicalize Uris.\nIf the provider doesn\u0027t support it, don\u0027t save the value,\nunless it\u0027s a silent ringtone.\n\nBug: 10130785\n\nChange-Id: Id08bb2812b9b2a7036a25801d1997661b0017629\n"
    },
    {
      "commit": "1d1319e3e1c266399ca1805ef1453bca71fdf6ce",
      "tree": "490050db0c0b14c45e20c110215ee499ad39741c",
      "parents": [
        "2def61485413084e68233c89ba956a2282fbacd1"
      ],
      "author": {
        "name": "Vinit Deshapnde",
        "email": "vinitd@google.com",
        "time": "Fri Sep 06 17:12:41 2013 -0700"
      },
      "committer": {
        "name": "Vinit Deshapnde",
        "email": "vinitd@google.com",
        "time": "Fri Sep 06 17:12:41 2013 -0700"
      },
      "message": "Don\u0027t restore EAP-TLS networks from backup\n\nSince they need certificates that are not backed up/restored; restoring\nthem is not that useful.\n\nBug: 6544151\n\nChange-Id: Ida1a98dc4f01ec1883ce7f76e52f87a27cc814cc\n"
    },
    {
      "commit": "911d7f411f36f2279aae44c89ff1d33a29140046",
      "tree": "98cdcb6ae4f9720b2096f252c8c0fe1d0726f56a",
      "parents": [
        "a61dc8e03e6e863005b3a4629ca8f3801d33d3c4"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 05 18:11:45 2013 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Sep 06 08:08:18 2013 -0700"
      },
      "message": "Provide calling package to ContentProviders.\n\nThe calling package is important for ContentProviders that want to\ngrant Uri permissions as a side effect of operations, so offer it\nthrough a new API.  Validates the provided package against the\ncalling UID before returning.\n\nBug: 10626527\nChange-Id: I7277880eebbd48444c024bcf5f69199133cd59e4\n"
    },
    {
      "commit": "38e7a60fd7fecdf1c6593724111a92147b4c50ff",
      "tree": "ba3b03b7383f16172996f18e413194c3567b1e9f",
      "parents": [
        "bfa29c7181d4b811cb39dbd013c45ff653d8a5f4"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Sep 03 16:57:34 2013 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Sep 03 16:57:34 2013 -0700"
      },
      "message": "Sanity check users before committing new Android ID\n\nIn creation/deletion cycling we can wind up racing and attempting\nto establish the Android ID on first access *after* the user has\nalready been deleted.  Cope gracefully with this outcome.\n\nBug 10608503\n\nChange-Id: I169d5052e5a2e354ce0e1f61258e45e31f5ba171\n"
    },
    {
      "commit": "12803955396591cb4d348599e49d55dedcccf40e",
      "tree": "ebc57a33b95b8596cf47e1c6c7820c97009814ef",
      "parents": [
        "03901667db75696ccd544809e0e7bc000a99f417",
        "9fe49fc56ef39facf7b3be5f66256bd15a87961f"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Mon Aug 05 17:23:01 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 05 17:23:01 2013 -0700"
      },
      "message": "am 9fe49fc5: am 523db46f: Merge \"Set subscription_mode in the database to a default value\"\n\n* commit \u00279fe49fc56ef39facf7b3be5f66256bd15a87961f\u0027:\n  Set subscription_mode in the database to a default value\n"
    },
    {
      "commit": "b4d485c18448eadb92083c74fc84722250daeb5d",
      "tree": "6cff8eabf6ce6859f0e97b200ba18d951fcd1f57",
      "parents": [
        "c67b2ed50226c4758d0fc1434d39f6add6a0a533"
      ],
      "author": {
        "name": "Naveen Kalla",
        "email": "nkalla@codeaurora.org",
        "time": "Wed Jul 03 16:39:27 2013 -0700"
      },
      "committer": {
        "name": "Naveen Kalla",
        "email": "nkalla@codeaurora.org",
        "time": "Thu Aug 01 18:03:42 2013 -0700"
      },
      "message": "Set subscription_mode in the database to a default value\n\nIf ro.telephony.default_cdma_sub is set, use that to set the\ndefault CDMA subscription source in the database. If that is not set\nuse the default preferred value defined in the source code.\n\nChange-Id: I11fff596a5fe721c64f192c889672326517dc43d\n"
    },
    {
      "commit": "0bc2fe425dcc0873863cdcd7bd76a33fd4193088",
      "tree": "ecd6ef9bcd646c07e82068425b7a6649a48f514e",
      "parents": [
        "9f6a7f424fad614fdb991bd978009eb1321c70a6",
        "e2be065142dc22f1eea033334f6ba4cf16559e56"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Mon Jul 01 17:01:23 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 01 17:01:23 2013 -0700"
      },
      "message": "am e2be0651: am f313da5b: am aff0ac4d: Merge \"Do not set the network mode differently for LTE+CDMA\"\n\n* commit \u0027e2be065142dc22f1eea033334f6ba4cf16559e56\u0027:\n  Do not set the network mode differently for LTE+CDMA\n"
    },
    {
      "commit": "e2be065142dc22f1eea033334f6ba4cf16559e56",
      "tree": "29d1a9c27a6c7ed091370ac7ff18e113d08c7d6c",
      "parents": [
        "3b5d686e683b1811ca90e056065dcf3805bb256a",
        "f313da5bfe1953fef509ba6bab7f654516a71509"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Mon Jul 01 16:03:38 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 01 16:03:38 2013 -0700"
      },
      "message": "am f313da5b: am aff0ac4d: Merge \"Do not set the network mode differently for LTE+CDMA\"\n\n* commit \u0027f313da5bfe1953fef509ba6bab7f654516a71509\u0027:\n  Do not set the network mode differently for LTE+CDMA\n"
    },
    {
      "commit": "f313da5bfe1953fef509ba6bab7f654516a71509",
      "tree": "639f6eeca3224973fad6f1132d73fea78ac8695b",
      "parents": [
        "c63c068228267b41fb106e22a6914ab19da9e5bc",
        "aff0ac4d202934dde7765f7418ea2ad38b0c2faa"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Mon Jul 01 16:00:23 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 01 16:00:23 2013 -0700"
      },
      "message": "am aff0ac4d: Merge \"Do not set the network mode differently for LTE+CDMA\"\n\n* commit \u0027aff0ac4d202934dde7765f7418ea2ad38b0c2faa\u0027:\n  Do not set the network mode differently for LTE+CDMA\n"
    },
    {
      "commit": "97ecc9ec24056259495d2de4d10a4b312d83a57a",
      "tree": "4c1bc2774462fbea7cba3f17a5805b87ca80d9d0",
      "parents": [
        "e3b94f05b8be2b6305cbee77c23b7f7599bfcff7"
      ],
      "author": {
        "name": "Naveen Kalla",
        "email": "nkalla@codeaurora.org",
        "time": "Fri Jul 13 20:10:22 2012 -0700"
      },
      "committer": {
        "name": "Naveen Kalla",
        "email": "nkalla@codeaurora.org",
        "time": "Mon Jul 01 11:16:38 2013 -0700"
      },
      "message": "Do not set the network mode differently for LTE+CDMA\n\nro.telephony.default_network can be set if needed to set a different\nvalue for LTE+CDMA. No need to hardcode preferred network mode in the source code.\n\nChange-Id: Iae65f72a6a3bc31d500c5ecec87368a6f2a5d117\n"
    },
    {
      "commit": "7f50ef7ddafc6dc7d6419e312185160995047256",
      "tree": "7006655a83449ebf33dcb52dc7ace33e7a5836de",
      "parents": [
        "8751a9644d301e40d03be3c9fc5b36bba9998d34",
        "3f0decd7dff8b4c12544c24b2d19a41d4eaacd03"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Jun 28 10:48:54 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 28 10:48:54 2013 -0700"
      },
      "message": "am 3f0decd7: am 16a2268f: am e6304a9c: Merge \"When a new user AID is generated, dump it to dropbox\" into jb-mr2-dev\n\n* commit \u00273f0decd7dff8b4c12544c24b2d19a41d4eaacd03\u0027:\n  When a new user AID is generated, dump it to dropbox\n"
    },
    {
      "commit": "5cdf7f5b2a75455e8024a4cb892ac38bcd8e9582",
      "tree": "9fed5e2854bfcf295d095422c50b1a0222418474",
      "parents": [
        "2f50097a5d5a1fb60574c89c7202cc43ecb51c54"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Jun 27 15:12:01 2013 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Jun 28 09:58:43 2013 -0700"
      },
      "message": "When a new user AID is generated, dump it to dropbox\n\nBug: 9595851\nChange-Id: I6fde757eed84d7914db180e80c9d68448b3e5780\n"
    },
    {
      "commit": "ccbf84f44c9e6a5ed3c08673614826bb237afc54",
      "tree": "854e35665f7754b3b0d1b4aaadc7b4927c3ea9ce",
      "parents": [
        "4ffa23379f95771fcdc63a2e35586b7e2c0b23a5"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed May 08 15:25:41 2013 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 17 12:47:35 2013 -0700"
      },
      "message": "Some system apps are more system than others\n\n\"signatureOrSystem\" permissions are no longer available to all apps\nresiding en the /system partition.  Instead, there is a new /system/priv-app\ndirectory, and only apps whose APKs are in that directory are allowed\nto use signatureOrSystem permissions without sharing the platform cert.\nThis will reduce the surface area for possible exploits of system-\nbundled applications to try to gain access to permission-guarded\noperations.\n\nThe ApplicationInfo.FLAG_SYSTEM flag continues to mean what it is\nsays in the documentation: it indicates that the application apk was\nbundled on the /system partition.  A new hidden flag FLAG_PRIVILEGED\nhas been introduced that reflects the actual right to access these\npermissions.\n\nAt some point the \"system\" permission category will be\nrenamed to \"privileged\".\n\nBug 8765951\n\nChange-Id: I6f0fd9cdb9170e076dfc66d83ecea76f8dd7335d\n"
    },
    {
      "commit": "2b3329bb73e0a5167aaf1b638f42c50f94d61bab",
      "tree": "d015c23abed776ba335a2ee2284a73a5a08f53be",
      "parents": [
        "b243f791d61f673abddc427e6733c4e63ba1f79f",
        "1bc14ed9c3bb0fae28c2cdf9319b2f5f892409eb"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 11 15:37:12 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 11 15:37:12 2013 -0700"
      },
      "message": "am 1bc14ed9: am 76b76666: Merge \"Need to explicitly disable scan-always when turning off wifi\" into jb-mr2-dev\n\n* commit \u00271bc14ed9c3bb0fae28c2cdf9319b2f5f892409eb\u0027:\n  Need to explicitly disable scan-always when turning off wifi\n"
    },
    {
      "commit": "87bc7e7082ed2093ac7b5ee241439c54cf71b8f6",
      "tree": "589fc60e5d962feec533d3ec551d66bce938c564",
      "parents": [
        "58100fb813f4a68386757fc80244dbb756ea35d5"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 10 16:55:02 2013 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 10 16:55:02 2013 -0700"
      },
      "message": "Need to explicitly disable scan-always when turning off wifi\n\n... when you want wifi to be really most sincerely off, because\nsettings restore is about to rewrite the conf file.\n\nBug 9032154\n\nChange-Id: I6a3a34ac3f14ec43aa9d9cc0159fca6168ccd0a2\n"
    },
    {
      "commit": "853ad6fbe34fa26e81e4b7325309a034d7a1b038",
      "tree": "9091103654aefef36d0f8dcbd1131fb1def28fcc",
      "parents": [
        "b98212925e41e9420ce6fefc3fe204b29c8f7a83"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Apr 29 16:12:23 2013 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Apr 29 16:48:13 2013 -0700"
      },
      "message": "Remove obsolete OMA-DRM support\n\nChange-Id: Ic6008d4c9f8b9cd9fd4efec070260227af70559c\n"
    },
    {
      "commit": "27db46850b708070452c0ce49daf5f79503fbde6",
      "tree": "b8ee9ba7481bbd869601b8320f5070394bde13bd",
      "parents": [
        "9e8ba8f27316c793578e68fcc6632a6ea6240f4a"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Mar 30 17:07:47 2013 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Mar 30 18:25:49 2013 -0700"
      },
      "message": "Block access to accounts for limited users.\n\nMake sure that apps that have access to restricted accounts can see them.\nIf they don\u0027t have access, they shouldn\u0027t be able to add a new account either.\nShow an error message in the account picker if the user/app is not authorized.\n\nChange-Id: I117c0b14d7d06c5ac4e66506df156b174567f5f3\n"
    },
    {
      "commit": "a12fccf57d5ec289793699d9b22ff45daccd3933",
      "tree": "c100fe02b0b544cfe129d5ce3f3341dac3389e0a",
      "parents": [
        "7cd9ed195ba5242b125eb58a36ea2b01a588dbdd"
      ],
      "author": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Thu Mar 14 18:02:12 2013 -0400"
      },
      "committer": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Wed Mar 27 18:14:29 2013 -0400"
      },
      "message": "Add user restrictions for bluetooth, sideloading, usb file transfer\n\nCreated constants for these in UserManager and current.txt. Also created\nan accessor for individual user restrictions that takes the restriction key\n(removing individual methods for particular restrictions).\n\nChange-Id: Ibb5517cbcdffadd3925f52cbe67d7d525813faa9\n"
    },
    {
      "commit": "6794458f8626c3be27eac3db3a5c89d94f132675",
      "tree": "67840d15784013dede06dc3e40306c35e30d4be7",
      "parents": [
        "ff4fcdb98c9575642c48f1daeafff4b257769e81"
      ],
      "author": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Fri Feb 22 14:58:27 2013 -0500"
      },
      "committer": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Mon Feb 25 12:45:14 2013 -0500"
      },
      "message": "Add location sharing toggle user restriction.\n\nAnd add support for respecting it.\n\nChange-Id: Ia5cf9134c5f5741c3f55afadbe54f862da7bfe5b\n"
    },
    {
      "commit": "a81a40e06d91b3b8936f9b275f73a19130fb0db1",
      "tree": "1ff9c096721248018e115e3fb931511ef48a39c8",
      "parents": [
        "6bd6b1c436f9da46d01280cb080c2e810c50f390",
        "3c239d7e8d78570b1e17ad968c408506e73a8f3f"
      ],
      "author": {
        "name": "Jeffrey Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed Feb 06 20:55:58 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 06 20:55:58 2013 -0800"
      },
      "message": "am 3c239d7e: am 8934c575: am 88ba2f48: Merge \"Disable usage of WAL in DatabaseHelper\"\n\n# By Yevgen Pronenko\n# Via Android Git Automerger (2) and others\n* commit \u00273c239d7e8d78570b1e17ad968c408506e73a8f3f\u0027:\n  Disable usage of WAL in DatabaseHelper\n"
    },
    {
      "commit": "8934c57564a864e046c5172ba7d56ab68056ab26",
      "tree": "9223cbbcf573fbdcd24ca05c9b80c8ed5e1c63dc",
      "parents": [
        "1e48b386eac8cb1ca9e6e50d73422661691512dc",
        "88ba2f48a2d1193f3877575b2589897a7804aa75"
      ],
      "author": {
        "name": "Jeffrey Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed Feb 06 20:50:09 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 06 20:50:09 2013 -0800"
      },
      "message": "am 88ba2f48: Merge \"Disable usage of WAL in DatabaseHelper\"\n\n# By Yevgen Pronenko\n# Via Gerrit Code Review (1) and Johan Redestig (1)\n* commit \u002788ba2f48a2d1193f3877575b2589897a7804aa75\u0027:\n  Disable usage of WAL in DatabaseHelper\n"
    },
    {
      "commit": "88ba2f48a2d1193f3877575b2589897a7804aa75",
      "tree": "c002c8dd0da3e2f72abf84f43d1b8668a043d93d",
      "parents": [
        "04ce0d253de9ec16f921824409a7b2c13195c19e",
        "4de6f2cff1d6b23c5c4cd78a247360aad5c7a92c"
      ],
      "author": {
        "name": "Jeffrey Brown",
        "email": "jeffbrown@android.com",
        "time": "Thu Feb 07 04:39:35 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 07 04:39:35 2013 +0000"
      },
      "message": "Merge \"Disable usage of WAL in DatabaseHelper\""
    },
    {
      "commit": "1095d9ac5df839408b9a549cc638c2909d98dfac",
      "tree": "d06c6f1bd7202a8e02e376028f3f080c6ffaecfc",
      "parents": [
        "08d11e1fa939ecdda1ecc8bda750c07e924f06aa",
        "d2726582f135383e56661bc41d750966642dab45"
      ],
      "author": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Thu Feb 07 00:04:59 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 00:04:59 2013 +0000"
      },
      "message": "Merge \"Fix for SettingsProvider to query for correct user.\""
    },
    {
      "commit": "d2726582f135383e56661bc41d750966642dab45",
      "tree": "c3a4b288963fc5acc95f7f6f1c805dc566e39076",
      "parents": [
        "484f3bdcd663d4ddc9521e788c45338b34a1691d"
      ],
      "author": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Mon Feb 04 13:28:19 2013 -0500"
      },
      "committer": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Wed Feb 06 18:53:47 2013 -0500"
      },
      "message": "Fix for SettingsProvider to query for correct user.\n\ninsertForUser takes a specified user and attempts to adjust that user\u0027s\nsettings, first looking at their existing settings to determine the difference.\nHowever it was querying the settings for the calling user, rather than for\nthe user whose settings were being changed.\n\nAlso add a test that exercises the fix.\n\nChange-Id: I6ed6fd79154ac1b6e6ab880769ac9081dfff6b80\n"
    },
    {
      "commit": "961321fe4ed4431a6362d729d9e4ea26bdecde61",
      "tree": "0ddcc0f94b7840ce752fd10a9e57b55c3f2c4d9b",
      "parents": [
        "f51f61269aacdfcf737b2c32b6b216c48ab61e65"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 05 17:22:41 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 05 17:22:41 2013 -0800"
      },
      "message": "App ops: add op for writing settings.\n\nAlso fix a build.\n\nAnd fix a bug that I think was introduced in the multi-user work\nthat removed the permission check for writing to settings...!\n\nChange-Id: I5945682faa789ffc78fd3546c0df7d03693f106d\n"
    },
    {
      "commit": "447d94684ee73046d769649d8247aacd581bd6e3",
      "tree": "e06e136d19aee8777457233c7994c4b5c4b9c365",
      "parents": [
        "0214f205f619ebc23b5069880afdb09259b0ced7"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 01 19:46:20 2013 +0000"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 01 12:24:42 2013 -0800"
      },
      "message": "\"Fixing backwards cmpatibility for enabling explore by touch\"\"\n\nThis reverts commit d1ed3cea37e4156eab14b7dc8207a520c9eab700\n\nChange-Id: I622ef034526f8f006a5a233e72487b062020e4f6\n"
    },
    {
      "commit": "d1ed3cea37e4156eab14b7dc8207a520c9eab700",
      "tree": "cdc028be2b0ce578141384b6fe5c3b1b457ce078",
      "parents": [
        "0a9c7c144671f70f5f1af222050bd3ec6b11fe41"
      ],
      "author": {
        "name": "Mike Cleron",
        "email": "mcleron@google.com",
        "time": "Fri Feb 01 18:36:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 18:36:41 2013 +0000"
      },
      "message": "Revert \"Fixing backwards cmpatibility for enabling explore by touch\"\n\nThis reverts commit 0a9c7c144671f70f5f1af222050bd3ec6b11fe41\n\nChange-Id: I8da530a6d0a57163522d5a63326e787a8d22ecbf\n"
    },
    {
      "commit": "0a9c7c144671f70f5f1af222050bd3ec6b11fe41",
      "tree": "9f2062e418e4427a22a70d00f127046b87202704",
      "parents": [
        "0ec0418c6eac5076774a74855725d9df53141907"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 01 00:47:29 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 01 00:47:29 2013 -0800"
      },
      "message": "Fixing backwards cmpatibility for enabling explore by touch\n\nChange-Id: I8cbc4f03223d289547e3f3f6d1f528ad5b4f6f72\n"
    },
    {
      "commit": "3822896e226567c6cd3ef84518d318abd33a7624",
      "tree": "6e755134d69f6b6ecac12d0ee949124e42ed43a3",
      "parents": [
        "8c47e856b067057b5fcbb6eccfc79d1da4cff8f1"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 29 01:04:35 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 29 13:56:22 2013 -0800"
      },
      "message": "Remove \"enhance web scripts\" from settings and make it requested by plug-ins.\n\nCurrently we have an \"enhance web accessibility\" setting that has to be\nenabled to make sure web content is accessible. We added the setting to\nget user consent because we are injecting JavaScript-based screen-reader\npulled from the Google infrastructure. However, many users do not know\nthat and (as expected) do not read the user documentation, resulting in\ncritique for lacking accessibility support in WebViews with JavaScript\nenabled (Browser, Gmail, etc).\n\nTo smoothen the user experience now \"enhance web accessibility\" is a\nfeature an accessibility plug-in can request, similarly to explore by\ntouch. Now a user does not need to know that she has to explicitly\nenable the setting and web accessibility will work out-of-the-box.\n\nBefore we were showing a dialog when a plug-in tries to put the device\nin a touch exploration mode. However, now that we have one more feature\na plug-in can request, showing two dialogs (assume a plug-in wants both\nfeatures) will mean that a user should potentially deal with three\ndialogs, one for enabling the service, and one for each feature. We\ncould merge the dialogs but still the user has to poke two dialogs.\n\nIt seems that the permission mechanism is a perfect fit for getting\nuser permission for an app to do something, in this case to enable\nan accessibility feature. We need a separate permission for explore\nby touch and enhance web accessibility since the former changes the\ninteraction model and the latter injects JavaScript in web pages. It\nis critical to get user consent for the script injection part so we\nneed a well-documented permission rather a vague umbrella permission\nfor poking accessibility features. To allow better grouping of the\naccessibility permissions this patch adds a permission group as well.\n\nbug:8089372\n\nChange-Id: Ic125514c34f191aea0416a469e4b3481ab3200b9\n"
    },
    {
      "commit": "58f41ecfa57bb1299cf0f8b13f6f5f5b4b7dde91",
      "tree": "54218ed770e35a0daf94e7ea00a0491d5cbcad89",
      "parents": [
        "26bf4d9020dcb16327e91044cda78b3baef723b5"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jan 11 15:40:36 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jan 11 15:40:36 2013 -0800"
      },
      "message": "Migrate BUGREPORT_IN_POWER_MENU from Secure to Global settings\n\nBug 7273591\n\nChange-Id: I5790f9d18ddf22282144be1c2d96dd4d706caa14\n"
    },
    {
      "commit": "c1b3d21306f9b48a385ca2d817820bafe9e450fc",
      "tree": "1af998d755b3e4e08bbb2bfa7e640ebd948ae4ff",
      "parents": [
        "2ede4226952770714df307803e49f2ffdbd81601",
        "53d998368c6c6107c6d18de945f4dfee482e6f91"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Tue Jan 08 10:27:08 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 08 10:27:08 2013 -0800"
      },
      "message": "am 53d99836: am 26c00dec: am b2d3904b: Merge \"Setting the default value for dock audio\"\n\n* commit \u002753d998368c6c6107c6d18de945f4dfee482e6f91\u0027:\n  Setting the default value for dock audio\n"
    },
    {
      "commit": "26c00decb4c0352913396851c2b42a8705976614",
      "tree": "6f8624eb19e2da58021332b32bd50613a15c5f29",
      "parents": [
        "2a8de804a2a8313fc4571a73c625d8213237b825",
        "b2d3904b0d0f02b3eddef1d228724b99962cba56"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Mon Jan 07 13:26:38 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 07 13:26:38 2013 -0800"
      },
      "message": "am b2d3904b: Merge \"Setting the default value for dock audio\"\n\n* commit \u0027b2d3904b0d0f02b3eddef1d228724b99962cba56\u0027:\n  Setting the default value for dock audio\n"
    },
    {
      "commit": "729f6685f9dfb7a1813a89dbf2298024d9da3813",
      "tree": "aea36c6ab06c38e7e841dcad0713f8c1c2de06fb",
      "parents": [
        "7979b58a7ade37c3b6d574fd647e633c5b57c3f1"
      ],
      "author": {
        "name": "Dmytro Dubovyk",
        "email": "dmytro.dubovyk@ti.com",
        "time": "Tue Dec 18 18:07:50 2012 +0200"
      },
      "committer": {
        "name": "Sergii Iegorov",
        "email": "x0155539@ti.com",
        "time": "Wed Dec 19 11:14:38 2012 +0200"
      },
      "message": "Setting the default value for dock audio\n\nThere was no default value for parameter \"dock_audio_media_enabled\"\nin global settings and because of that it couldn\u0027t be obtained before\nSettings app first start and improper actions, such as FORCE_NONE\nsending to AudioSystem instead of FORCE_ANALOG_DOCK, were taken.\nThis patch sets default value to \u0027true\u0027.\n\nChange-Id: Idbe343519db15f806f3a237e8b39f8420b9edde1\nSigned-off-by: Dmytro Dubovyk \u003cdmytro.dubovyk@ti.com\u003e\n"
    },
    {
      "commit": "912f01865ab879314ac86dc9a61b62e2e7bd5911",
      "tree": "578c5ae82d7adb4ed082baed41d528d552eda7bc",
      "parents": [
        "ca059d6d1f62db8c094ce9d1451cc7a386d04aaf",
        "68c308607b01bafd31c91572a81f4563e2199260"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Dec 12 11:46:41 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 12 11:46:41 2012 -0800"
      },
      "message": "am 68c30860: am 73f24ae1: am 9a147340: Merge \"Don\\\u0027t update global table when upgrading secondary users\\\u0027 database.\" into jb-mr1.1-dev\n\n* commit \u002768c308607b01bafd31c91572a81f4563e2199260\u0027:\n  Don\u0027t update global table when upgrading secondary users\u0027 database.\n"
    },
    {
      "commit": "2d43fabaf7c15ded1dcb463725754edfe41b42a1",
      "tree": "15cad38976373cc03f39d997640c82e53549c898",
      "parents": [
        "2735795f5aa906fbfd885dbacee1de0b41b80bf0"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Dec 12 09:52:26 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Dec 12 09:52:26 2012 -0800"
      },
      "message": "Don\u0027t update global table when upgrading secondary users\u0027 database.\n\nBug: 7722149\nChange-Id: I0c1373cba316b924701136579083274eb6c9b1da\n"
    },
    {
      "commit": "ace7404de8b9a5bd7566027a8a90d36d099a46f4",
      "tree": "c01fc20897525d49aecd56c4fc6a672fceed3089",
      "parents": [
        "fba73030d674b3cd29ffe8519aa41738b54ae827",
        "d7337fb97aab0b28c6ca60f6553d03feb1000991"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Dec 11 15:21:02 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Dec 11 15:21:02 2012 -0800"
      },
      "message": "resolved conflicts for merge of d7337fb9 to master\n\nChange-Id: I51dedcc5ee521e62ad6101c0b09e4f881b8c4bf0\n"
    },
    {
      "commit": "84e2756c0f3794c6efe5568a9d09101ba689fb39",
      "tree": "21927b498b4d35e2afaf2687ef09e86277d70267",
      "parents": [
        "32b424f7240580e3948f44559050262e18de99d8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Dec 07 13:56:34 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Dec 11 12:55:03 2012 -0800"
      },
      "message": "Play a tone when wireless charging begins.\n\nOnly plays a tone if the battery level is below 95% which\nis the same heuristic used when determining whether to turn\nthe screen on.\n\nUse new low battery and wireless charging sounds on Mako.\n\nBug: 7371658\nChange-Id: Ia4527ec398d024ee418a4287e1fcbf0ec83bcc24\n"
    },
    {
      "commit": "4de6f2cff1d6b23c5c4cd78a247360aad5c7a92c",
      "tree": "d8c4d27af1030e2eea6f959b7861aca2d9a3b674",
      "parents": [
        "568f923ba4cf522f699837bee0d8cba318343345"
      ],
      "author": {
        "name": "Yevgen Pronenko",
        "email": "yevgen.pronenko@sonymobile.com",
        "time": "Mon Aug 13 13:52:21 2012 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Tue Dec 11 09:30:58 2012 +0100"
      },
      "message": "Disable usage of WAL in DatabaseHelper\n\nAccording to SQLite documentation, WAL can not be used when database\npartition is not accessible for writing (even when the client just\nperforms read operation).\nHowever, such situation may happen when the partition is full.\nAs SettingsProvider should always be able to read a value of ANDROID_ID\nfrom corresponding database, this commit disables usage of WAL.\nWithout this we risk ending up in a situation where /data is full\nand the phone is unable to boot properly.\n\nChange-Id: I1f79bbcd8d0f64bf35dc9d7b846bcfb2664d2eac\n"
    },
    {
      "commit": "dcf03f39725deec68f644f6162fdfcc884dc9964",
      "tree": "ba70eaebefeafd3de60c27534970214487262ba1",
      "parents": [
        "9950edcdcf6eea0495ba71fa35555bbbbd26954e"
      ],
      "author": {
        "name": "Jianzheng Zhou",
        "email": "jianzheng.zhou@freescale.com",
        "time": "Fri Nov 16 13:45:20 2012 +0800"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Thu Dec 06 12:00:04 2012 -0800"
      },
      "message": "Refactor getPersistedNetworkPreference\n\nOptimize for updating mNetworkPreference according to device\u0027s networkAttributes\nsetting from overlay config.xml when connectivityservice start.\n\nChange-Id: I90286332d4f453038f1ddac7dd9d1265d96b4859\nSigned-off-by: Jianzheng Zhou \u003cjianzheng.zhou@freescale.com\u003e\n"
    },
    {
      "commit": "13579ed3305bf89b41a9fa88e1347f0e0769d279",
      "tree": "705a6b10c05895d2acf7a17d5a70d1c952bce4d8",
      "parents": [
        "71175f727bc1e094e72a410aca62392badffbf11"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Nov 28 18:05:36 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Nov 28 18:09:01 2012 -0800"
      },
      "message": "Cleaner initial boot.\n\nThis does some cleanup of the initial boot, especially when\nbooting in \"no core apps\" mode for encryption/decryption.\n\nChange-Id: Ifb3949f580e52f54559e603c4b0b104f6bac2f6c\n"
    },
    {
      "commit": "40e9f2922cae76ffcbc521481e5be8e80e8744ef",
      "tree": "8eb1822dd2832b729d4b262b616ecc050d9cf266",
      "parents": [
        "ba4ac51823c59152e2167365b81ac56857b6b4d0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 27 19:12:23 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 27 19:12:23 2012 -0800"
      },
      "message": "Quiet down a lot of logging.\n\nAlso fix a little problem where the USER_STARTED broadcasts\nwere not being sent as ordered broadcasts(!).\n\nChange-Id: I3aa3e0a9b3900967cdd2d115ee103371b0a50c41\n"
    },
    {
      "commit": "051ab5c2e8635f32c7d6ef744dc4261db8610add",
      "tree": "4b13b68a3f046a4f49e89fc2d53794e99e38c767",
      "parents": [
        "d6523da1ad7bae805a3dbea8d7b398d86cd3c181"
      ],
      "author": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Mon Oct 22 12:01:02 2012 -0700"
      },
      "committer": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Mon Oct 22 12:01:02 2012 -0700"
      },
      "message": "Import translations. DO NOT MERGE\n\nChange-Id: I51415c91026c1ea461f1b1239a75ec999fd7fe0c\nAuto-generated-cl: translation import\n"
    },
    {
      "commit": "ed108f3d125b0a4cc465057e3514caf781cdea19",
      "tree": "d1e416f310fc443821fcc2591e49bbd8173c81c8",
      "parents": [
        "a1f739ea83b6d770b8469ae1c2c4161f6fe96334"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Thu Oct 18 16:49:24 2012 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Oct 19 11:32:03 2012 -0400"
      },
      "message": "Frameworks base: Promote dream setting defaults to config.\n\nSo that:\n - the values can be shared (to fix assoc bug)\n - the values can be customized in product overlays\n\nBug:7373284\nChange-Id: I37f037082523a3d975f6014f36afa28c60117372\n"
    },
    {
      "commit": "d488bc0ef494718e82a77b2e9433c2480e7383b0",
      "tree": "3b27e3ce07868df1bfa58248a3d74d260596dda7",
      "parents": [
        "64cb35c078d58d9025d2f14b3674ca59f2e6d80b"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Oct 09 14:06:30 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Oct 09 15:11:01 2012 -0700"
      },
      "message": "Defer wifi bounce following restore for 1 minute...\n\n...to allow network-reliant restore actions by apps to get underway.\n\nBug 7304761\n\nChange-Id: Ia1d2321ef86609588efbc7add043c24a12ec6a20\n"
    },
    {
      "commit": "531c237b82a948ac6599ba472bb95e26f71006cf",
      "tree": "263fde55a1e63732c15c3ce4739a020b51268d8e",
      "parents": [
        "0e2aade9f1cfbbbdb60889ca9e1399093eb542ac"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Oct 08 14:43:20 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Oct 08 17:04:17 2012 -0700"
      },
      "message": "Add an upgrade step for settings moved to global.\n\nFor some reason, the original step didn\u0027t work for some testers. This re-applies the move, which\nshould be no-ops if the entries are already in the right table.\n\nBug: 7254629\n\nAlso moved a few more entries to the global initialization section. Otherwise they would write\ninto the wrong table.\n\nChange-Id: Ic0f5c4e09680f5687d08dccf78063508b9c0584c\n"
    },
    {
      "commit": "73755c95ff9a3ebef294be674091ac677599bf3f",
      "tree": "759b4435d5d7ce141dd1fe88f106e3e085bd405c",
      "parents": [
        "5075f8e3237cb950104049fd8b5677e6aad0306f",
        "3543beb255b30c294283270ede3fcf048dc71b02"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Oct 05 15:24:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 05 15:24:06 2012 -0700"
      },
      "message": "Merge \"Fix settings restore\" into jb-mr1-dev"
    },
    {
      "commit": "3543beb255b30c294283270ede3fcf048dc71b02",
      "tree": "76d3525f718e8af8eb72e5411d824dca327922bd",
      "parents": [
        "7ef38ea9e5ee1d2fd58e818f37191a589793e236"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Oct 05 13:35:12 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Oct 05 15:01:42 2012 -0700"
      },
      "message": "Fix settings restore\n\nNow with more fix.\n\nBug 7249405\n\nChange-Id: Ib8bc2e9c5b054054f4aaacf14af8d5a0d05d6e3a\n"
    },
    {
      "commit": "d0f199308e5d040bf0a968114578d620fb6a9f61",
      "tree": "f7ed974bc9b75bdf622241a43af02fb4a8ddd344",
      "parents": [
        "7ef38ea9e5ee1d2fd58e818f37191a589793e236",
        "61695ffcbccc6cca210e869eb3bc6e97127c2357"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Oct 05 14:46:01 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 05 14:46:01 2012 -0700"
      },
      "message": "Merge \"Make sure settings writes are permission checked correctly\" into jb-mr1-dev"
    },
    {
      "commit": "61695ffcbccc6cca210e869eb3bc6e97127c2357",
      "tree": "ee7c711a122a505838d0c10449beb79530108767",
      "parents": [
        "dd2f15a563f18c9534cfa85fe2b8bf2fe100ed83"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Oct 05 12:05:13 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Oct 05 12:05:13 2012 -0700"
      },
      "message": "Make sure settings writes are permission checked correctly\n\nThe last bit of undoing the earlier tangle around query results having\nobservers under the calling user\u0027s identity.  We do *not* want to drop\ncalling identity in the call() processing; we want the table-based\npermission checks at the point of the underlying db operations to be\nperformed against that identity.\n\nBug 7265610\n\nChange-Id: Ie0c9331ebd0918262a0a32b5b03b876fc2a92ca3\n"
    },
    {
      "commit": "7f1c248e80c747663396c6112bd637b0ee558dcb",
      "tree": "827ad6ad3b2531f766ef0178695807e1a2cf96c1",
      "parents": [
        "20de160ca32a8f2936a80ffd70551a22e2371d25"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Oct 05 11:15:28 2012 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Oct 05 11:45:18 2012 -0400"
      },
      "message": "Fix upgrade case for Settings.Secure.USER_SETUP_COMPLETE.\n\nExisting primary users were never being marked as complete,\ncausing things that relied on this (e.g. showing the quick settings panel)\nto break.\n\nBug:7282088\nChange-Id: I9c8622f3cd0fb99a44477946d3db22fa2cbbc6fc\n"
    },
    {
      "commit": "5067685ccf6c294a77a3e7f0577190600a0e6238",
      "tree": "1ffd1c4ddf0c9eb77b6087a185208aad08cf1215",
      "parents": [
        "dd2f15a563f18c9534cfa85fe2b8bf2fe100ed83"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Oct 04 19:10:11 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Oct 04 19:10:11 2012 -0700"
      },
      "message": "Settings (and general) restore fixes\n\nPro tem, we ignore wifi configuration data when restoring system settings.\nThis is not ideal, but it *does* mean we do not bounce wifi off and on\nagain during the extended restore process, which in turn means we don\u0027t\ninterfere with things like the Play Store\u0027s download of applications.\nWe do continue to back up wifi configuration, and will start using that\ndata again when the new implementation that restores AP configurations\nwithout having to bounce wifi comes to pass.\n\nAlso, this CL fixes a longstanding bug in BackupDataInput.skipEntityData()\nthat was being reproduced reliably once settings restore was skipping\nthe wifi-related entities in the restore stream.\n\nBug 7249405\n\nChange-Id: I61520a9a116b66ebdf95734d09d9afd46406df01\n"
    },
    {
      "commit": "34637e57fc5bce01029806a67cf0cc2ef049e13b",
      "tree": "e9c939fa1836eb5806e2115636fdd60f623e52f3",
      "parents": [
        "dce8b948320e933e46e4a38c496f56555472495f"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Oct 04 15:00:00 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Oct 04 16:01:10 2012 -0700"
      },
      "message": "Make sure to check write perms after rewriting destination table\n\nThe write-permission check must occur after any destination-table\nrewriting, otherwise any application would be able to write to\nany global setting, by supplying a fraudulent \"system\" namespace\nin the uri, but with a key name that will be redirected to global.\n\nBug 7289965\n\nChange-Id: I122098a64e40d14e00d3cb6608c50aeb74faf7ce\n"
    },
    {
      "commit": "35dd752238d3ce3b83e78eb4b00a85ea3d067088",
      "tree": "6deffb8c2c0fd218b15a8548b6ef4d3bec1d3b30",
      "parents": [
        "a6cab32d68692f69729195ac69b7f9e9c8d2001f",
        "c221d2be7d2bf57373d43457b18483266f88f9a6"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Oct 03 19:31:40 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 03 19:31:40 2012 -0700"
      },
      "message": "Merge \"Rewrite raw insert()s and some raw query()s of moved-to-global keys\" into jb-mr1-dev"
    },
    {
      "commit": "c221d2be7d2bf57373d43457b18483266f88f9a6",
      "tree": "ef6550a3d5afb66a8309d5f0bde22f6f40d99983",
      "parents": [
        "76366938242282e37863e1fd8b7fa16e7fd554c1"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Oct 03 18:33:52 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Oct 03 19:20:51 2012 -0700"
      },
      "message": "Rewrite raw insert()s and some raw query()s of moved-to-global keys\n\nThe Settings put*() APIs fix up references via the old namespaces,\nbut the raw insert() interface didn\u0027t.  Now it does.  Also, when\npossible we fix up direct query() operations on the old namespace\nto point to the correct one.  At present that is only done for\nquery() operations with Uris of the form\n\n    content://secure/adb_enabled\n\nThere is no rewriting done on queries of the form\n\n    content://secure WHERE name\u003d\u0027adb_enabled\u0027\n\nsince the app-supplied WHERE clause can be arbitrarily complex.\n\nBug 7267568\n\nChange-Id: I5c8cecbea7f5b1da6247a53b1428d3effb0bbca5\n"
    },
    {
      "commit": "1a2fac3eeda031ac5f4c7d17c883d54af5661a66",
      "tree": "4928deac55763c4160046be19672d85c6350b3a6",
      "parents": [
        "ac2fc16373fb93f28c9335c27dff744194b28678",
        "afccaa84c8d1b9aa45040ddeb0edd42ba80e80d6"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Oct 03 18:54:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 03 18:54:49 2012 -0700"
      },
      "message": "Merge \"Use myUserId() only in registerContentObserver()\" into jb-mr1-dev"
    },
    {
      "commit": "afccaa84c8d1b9aa45040ddeb0edd42ba80e80d6",
      "tree": "3650d663133dda528c4c426086e76b7956642cd8",
      "parents": [
        "76366938242282e37863e1fd8b7fa16e7fd554c1"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Oct 03 17:41:51 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Oct 03 17:41:51 2012 -0700"
      },
      "message": "Use myUserId() only in registerContentObserver()\n\nThe reason for this is a bit subtle: we want to guarantee that\nwhen a content observer is registered using the public API, it\nis *always* bound to the host user\u0027s view of the data behind the\nobserved Uri, never the calling user\u0027s.  Now, the reason it was\nthe calling user in the first place is that the Settings provider\n(and potentially any singleton provider) needs the observers\nunderlying Cursors returned from query() to be tied to the caller\u0027s\nuser, not the provider\u0027s host user.\n\nIn order to accomplish that now that the public-facing behavior is\nalways tied to the host user, the concrete class that implements\nthe Cursor type handled by the Settings provider has been extended\nwith a new hidden API for setting a notification observer tied to\nan arbitrary user; and then the provider explicitly downcasts the\nquery result\u0027s Cursor to that class in order to register the\nnotification observer.  We can do this safely because this is platform\ncode; if we change the way that these underlying cursors are constructed,\nwe can just fix this point of call to follow along.  If they get out\nof sync in the future, the Settings provider will scream bloody\nmurder in the log and throw a crashing exception.\n\nBug 7231549\n\nChange-Id: I0aaceebb8b4108c56f8b9964ca7f9e698ddd91c8\n"
    },
    {
      "commit": "55b02226c07f276e143f9da6f752963882fb60d5",
      "tree": "e95d34f755ebb9e1980c65f991b7d56a91ba3c94",
      "parents": [
        "5a829cbf5862d6c41f709b86ed5fc1085fea95ee"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 03 11:56:23 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 03 16:13:04 2012 -0700"
      },
      "message": "fix settings data base upgrade for ringer mode\n\nRinger mode setting was moved from System to Global group\nbut a db upgrade cleanup step was missing.\n\nBug 7128886.\n\nChange-Id: Id20994fe74575afa2b68154a620aa3c8807e8304\n"
    },
    {
      "commit": "66488d64df8c3cf8722b8bf282398617cf3c0551",
      "tree": "9ddb707fa3a9a37adb4c8c8c78d075239696ddf3",
      "parents": [
        "09f090b377cbe2332340580daf4adf4d2502d004"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Oct 02 11:58:01 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Oct 02 15:22:30 2012 -0700"
      },
      "message": "Make settings backup/restore work in the new multi-user world\n\n1) Properly handle restores of settings elements that have been migrated\n   to the new global namespace\n\n1) Back up and restore the new global settings namespace\n\n3) Make sure to back up / restore the global entity\n   ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED\n\nBug 7249405\n\nChange-Id: Ibfa9930ea4d0e16c7635697e8c631b155e4c0cb2\n"
    },
    {
      "commit": "6e2bee75cea415621165698fdd9ce857bbb8872e",
      "tree": "840286617a3603685bb9f134e2fe4c924b8afef4",
      "parents": [
        "0944d625448209185452eb4e800daec49de51986"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 01 13:39:08 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Oct 02 13:55:15 2012 -0700"
      },
      "message": "Migrate more System and Secure settings to Global.\n\nIncludes telephony, WindowManager, PackageManager, and debugging\nsettings.  Update API to point towards moved values.\n\nBug: 7231764, 7231252, 7231156\nChange-Id: I5828747205708872f19f83a5bc821ed0a801cb79\n"
    },
    {
      "commit": "b14288d4b13d7629f578c4854f5a14d4d9a06783",
      "tree": "72762aa30edeee5d3d0961ccd5b59c9888a96615",
      "parents": [
        "1f7a09b5df9f859781d9cfa0053fad44c72c2168"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Sun Sep 30 18:25:05 2012 -0700"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Mon Oct 01 18:14:41 2012 -0700"
      },
      "message": "Attempt to fix missing lock sounds\n\nbug 7254629\n\nChange-Id: I65eee674fe014a0e84d5ec20ead81abdec38f890\n"
    },
    {
      "commit": "0ac1028b0dc8713296e2face40abe5451ecd479c",
      "tree": "551f0812524e6277151bc1962889a5fd2d79ac99",
      "parents": [
        "32ee831eabc43001d756897e57f52f527bd9c431"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 01 12:50:22 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 01 12:54:12 2012 -0700"
      },
      "message": "Move bluetooth priorities from Secure to Global.\n\nBug: 7231171\nChange-Id: I836fdc2cfb8d67f984b4715559b9e92d0dc41c95\n"
    },
    {
      "commit": "625239a05401bbf18b04d9874cea3f82da7c29a1",
      "tree": "b7d6cdc6c51342262763ad251870350759800ed3",
      "parents": [
        "e00d33cf05a111c9be605d3d59db911cd983fcb9"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Sep 26 22:03:49 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 27 16:22:53 2012 -0700"
      },
      "message": "Migrate more Secure settings to Global.\n\nMigrate networking, storage, battery, DropBox, and PackageManager\nrelated Secure settings to Global table.\n\nBug: 7232014, 7231331, 7231198\nChange-Id: I772c2a9586a2f708c9db95622477f235064b8f4d\n"
    },
    {
      "commit": "bdfce2ec05a3e9ca6acd6711de6133e06f2446e6",
      "tree": "50fd53ef94070944416713eacceaa4cb4bff15c5",
      "parents": [
        "51ce1607b392bf463e4175596d0b91dc337f4c14"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Sep 26 15:54:06 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Sep 26 17:18:49 2012 -0700"
      },
      "message": "First step towards cleaning up Global settings.\n\nRemove all @Deprecated @hide settings, and clean up any stragglers.\n\nBug: 7232125\nChange-Id: Ibf67093c728d4a28565129b923edb1701d3b2789\n"
    },
    {
      "commit": "d33646008948db439ea8cde8dfc0188aced6436d",
      "tree": "463a3dcd113ecd43e0b725764748aeeadf432f81",
      "parents": [
        "95293865bde95d2a41cb6edb0d113277000ccb29",
        "5bcb55186ebda12d9e4308043898f7aa3ac5c952"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 25 09:40:05 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 25 09:40:08 2012 -0700"
      },
      "message": "Merge into jb-mr1-dev\n\nChange-Id: Idf183be6a41ff37add5141a20e96d5190396d1a4\n"
    },
    {
      "commit": "139748fd724b482e2c012a6ec44d1c5abc0c0e97",
      "tree": "aef4a2d661092f667e3c932e195c6bacd1208663",
      "parents": [
        "4249be40bd1c51dae37c27f9450ed01f19edcbef"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 24 11:36:57 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 24 14:15:14 2012 -0700"
      },
      "message": "Fix issue #7215984: java.lang.RuntimeException: Unable to create...\n\n...service com.android.systemui.SystemUIService: java.lang.NullPointerException\n\n- Don\u0027t acquire the activity manager lock in handleIncomingUser(),\n  there is really no need to do so.\n- Rework the settings provider client side cache code to not hold\n  locks while calling into the provider.\n\nI also changed the way the settings provider uses system properties\nso that there is one property for all users.  We can\u0027t do one per\nuser, since the system property name space is limited with a fixed\nsize.  And we don\u0027t really need to do that; the worse that happens\nby combining all users is that if one running user changes one of its\nsettings, all other running users will think they need to reload\nsettings when they go to fetch them next.\n\nChange-Id: I13b90b832310d117eb6d721aacd122cfba7d749a\n"
    },
    {
      "commit": "5bcb55186ebda12d9e4308043898f7aa3ac5c952",
      "tree": "9f234cf61f05344b26bceff71207feceb6b59a2e",
      "parents": [
        "bc391d58c8d09bd58b57dda20dd9d2281d90db32"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@google.com",
        "time": "Mon Sep 24 12:24:54 2012 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@google.com",
        "time": "Mon Sep 24 12:24:54 2012 -0700"
      },
      "message": "fix argument parser for global settings URLs\n\nMake content://settings/global/setting_name URLs work like system and\nsecure URLs.\n\nBug: 7212535\nChange-Id: I33e388a0cc80309453714eab726ce45b3f8fef73\n"
    },
    {
      "commit": "b7564454297ba1706670ccab0562cac6676d0a77",
      "tree": "d52fa66f9729feb3250a20eba04fca2a70a40561",
      "parents": [
        "314488b791d36756504ee593f818f04b4cd24893"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Sep 19 16:21:18 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Sep 20 13:58:16 2012 -0700"
      },
      "message": "Multiuser awareness in content observer infrastructure\n\nContent observers are registered under the calling user\u0027s identity,\nnot under the provider host\u0027s identity (unless the caller is using\nthe new permissioned entry points that allow observers to be\nregistered for a different user\u0027s view of the data).  The most important\nimplication of this is that when the settings provider is directly\nqueried, the Cursor returned to the app is wired for change notifications\nbased on that calling app\u0027s user.\n\nNote that it is not possible to use query() / insert() to read/write\ndata for different users.  All such manipulations should use the\nstandard get* / put* methods in Settings.*.\n\nBug 7122169\n\nChange-Id: If5d9ec44927e5e56e4e7635438f4ef48a5430986\n"
    },
    {
      "commit": "89d5546d7fd3a3bb19820c42e8b4527013dd6545",
      "tree": "d3c39ef51f626165545504772f0fb8ba8f01f076",
      "parents": [
        "4e7b551fbffa6112821ed6cfeedd6128463fccd0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 19 11:33:42 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 19 22:04:44 2012 -0700"
      },
      "message": "Add support for remembering Wifi display devices.\n\nAdd a setting to globally disable Wifi display.\n\nFixed a bug where the wifi display broadcast receiver\nwas running on the wrong thread.\n\nRemoved the wifi-display QuickSettings dialog, all functionality\nhas been moved to Settings.\n\nBug: 7178216\nBug: 7192799\nChange-Id: I9796baac8245d664cf28fa147b9ed978d81d8ab9\n"
    },
    {
      "commit": "c8459dc85e53a9275c89190b35f1da35cd996e46",
      "tree": "63d2ef3c319eb51bf457ecf21422fcfb5fdba1e4",
      "parents": [
        "21dfd7c5fe9e42d2ef3ac7423065c86dfe8f29da"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Sep 18 13:27:36 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Sep 18 13:27:36 2012 -0700"
      },
      "message": "Settings provider needs to send notifications as itself\n\n... and not as its ultimate caller, who may be a less-privileged\napplication.  Fixes bug 7188309\n\nChange-Id: Iffd37b8da84f683bf665bf3d48c0b7fbc8dd721d\n"
    },
    {
      "commit": "16aa9736175f5bbe924a6e5587a2ca47c2dd702b",
      "tree": "40a40cd4aee50183ced46dbc34106c29c09c4787",
      "parents": [
        "9f5f80e7a64d9388e3e73763b5c73dcddaa729fc"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Sep 17 16:23:44 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Sep 17 16:35:36 2012 -0700"
      },
      "message": "Per-user content observer APIs\n\nCallers with INTERACT_ACROSS_USERS_FULL permission can now observe content\nfor a given user\u0027s view (and can notify content uri changes targeted to a\nspecific user).  An observer watching for UserHandle.USER_ALL will see all\nnotifications for the given uri across all users; similarly, a notifier\nwho specifies USER_ALL will broadcast the change to all observers across\nall users.\n\nThe API handles both USER_ALL or USER_CURRENT, and explicitly forbids\nany other \"pseudouser\" designations.\n\nThis CL also revs the Settings provider to notify with USER_ALL for\nchanges to global settings, and with only the affected user\u0027s handle\nfor all other changes.\n\nBug 7122169\n\nChange-Id: I94248b11aa91d1beb0a36432e82fe5725bb1264f\n"
    },
    {
      "commit": "6f5a9a96523ecf97a9828a410dd1226df47ec4e6",
      "tree": "5c62cd082f05f811d996c6794ac8b4a850fb70c2",
      "parents": [
        "4f49d9450fe919868f9a9a9a44db59ca2497150c"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Sep 14 17:24:28 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Sep 14 17:57:35 2012 -0700"
      },
      "message": "Fix default population of wifi settings\n\nVarious wifi settings that are explicitly defaulted did not get their\ndefault code properly converted to refer to the correct settings\ndatabase table.\n\nA collection of moved-to-Global settings that had not yet been\nmarked @deprecated in the Secure.* namespace are now so marked.\n\nAlso updated the namespace used to refer to wifi settings from the\nWifi Service.  These changes are cosmetic, but they do eliminate a\nnumber of runtime log messages.\n\nBug 7153671\n\nChange-Id: I9e5b6464d025cfb480ef97373996e38e82f90593\n"
    },
    {
      "commit": "0dbc4108005445d241c5f6990000d25a09a8e00e",
      "tree": "eccc8ae6e6e701deb4be58fffc700bb4583a37ca",
      "parents": [
        "a96fa35e50788d26fc8ab7667ed5000e7b67b26e",
        "78d2a66ac12e4c8f1303225514f573fb53af1dd9"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Sep 14 11:35:19 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 14 11:35:19 2012 -0700"
      },
      "message": "Merge \"Fix Settings writes to a different user\" into jb-mr1-dev"
    },
    {
      "commit": "78d2a66ac12e4c8f1303225514f573fb53af1dd9",
      "tree": "34125548e558c48d3677d43c5f9b4e7cde4d5f48",
      "parents": [
        "79d45660f2a83a7a771acf82c0bd0efed806abfa"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Sep 13 16:19:44 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Sep 13 19:15:54 2012 -0700"
      },
      "message": "Fix Settings writes to a different user\n\nOops.  Stacked bugs:  first, the desired user handle was not properly\nbeing passed from the call() entry point to the database operations;\nthen on top of that, the client-side cache management was still\nlooking in the local user\u0027s cache for the data, so a request to read\na different user\u0027s settings would return the local user\u0027s instead if\nthat key was already known to the local user\u0027s cache.\n\nReads and writes of a different user\u0027s settings are now uncached,\nso they\u0027re relatively much slower.  They\u0027re rare, however, so this\nis not something to worry about unless we encounter a real world\ncase where it\u0027s a significant factor.\n\nThis CL also adds a bit of cross-user settings read/write testing\nto the existing provider suite.  These new tests caught both the\nknown wrong-user-write bug and discovered the client-side cache\nbug, so yay.\n\nFinally, the existing wholesale mutual-exclusion approach would\ndeadlock in certain circumstances due to the fact that the\nsettings database creation code might have to call out to the\nPackage Manager while populating the bookmark/shortcut table,\nand the Package Manager would then call back into the settings\nprovider in the course of handling that request.  The synchronization\nregime has been significantly tightened up now: now the database\ncode [which is known to deal with concurrency itself] is allowed\nto cope with multiple parallel openers of the same db; this\nallows the settings provider to avoid calling out to other parts\nof the system even implicitly while its internal lock is held.\n\nChange-Id: Ib77d445b4a2ec658cc5c210830f6977c981f87ed\n"
    },
    {
      "commit": "59c5beec64af8ea20509998230b7b1de496702f6",
      "tree": "50cbf7bf4ceefee836d593f8be48b1f3796cddff",
      "parents": [
        "79d45660f2a83a7a771acf82c0bd0efed806abfa"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Sep 13 14:38:33 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Sep 13 14:46:25 2012 -0700"
      },
      "message": "Settings db upgrade steps only apply to the owner user\n\nChange-Id: Ib74b42bcc2554edf721199f31f563daa9fc227a2\n"
    },
    {
      "commit": "27d91832235a061cf57a78643a4d34feda7c0070",
      "tree": "5a7e447c8326fecfeacb42cb31d273617db5120d",
      "parents": [
        "3e451fa128e5b7beb22b413eb5600d6c980e5a29",
        "818d20459099ea75e9b8d27c341af482653847a1"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Sep 12 21:40:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 12 21:40:55 2012 -0700"
      },
      "message": "Merge \"Core accessibility settings should not be cleared on restore.\" into jb-mr1-dev"
    },
    {
      "commit": "818d20459099ea75e9b8d27c341af482653847a1",
      "tree": "b52776711dff2f18a53936839885f5d7f41edb1a",
      "parents": [
        "39de2b0e1941c143d5b882a468e36929d978a35f"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Sep 12 21:35:15 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Sep 12 21:40:21 2012 -0700"
      },
      "message": "Core accessibility settings should not be cleared on restore.\n\n1. The core accessibility settings required for a blind user to use\n   the device should not be overwritten on restore. There could have\n   been enabled via a global gesture from setup wizard, hence the\n   user definitely needs them. Restoring disabled values for these\n   settings render the device useless unless sighted help is sought.\n\nbug:7138401\n\nChange-Id: Idc593889aa61fada65b0407623720517c827df53\n"
    },
    {
      "commit": "c868b645b46685574955eaff9f8d46d9262a3357",
      "tree": "266c234a211ee2c11e2d07db5e4bb92ff0fc7801",
      "parents": [
        "4f8da32ffaf7aaf1f670e74caa7cd8a70ddb63c6"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Sep 12 17:41:04 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Sep 12 17:42:43 2012 -0700"
      },
      "message": "Moved a few telephony settings from Secure to Global\n\nAlso tidy up the bookkeeping for a few settings that were earlier\nmoved to Global without the redirect tables being fixed up.\n\nChange-Id: I69275db3b2636cd6ba9c8c51b88e97d8ba4b7b7d\n"
    },
    {
      "commit": "4dc7a68dbeaa0edd8815b2105915753310d58343",
      "tree": "9f6feb41247440858dba81a6cb47ec0301563b2a",
      "parents": [
        "2fa10c675b42d22e73492154ca0ca1cbdbceaa3a"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Sep 11 12:15:49 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Sep 11 14:51:33 2012 -0700"
      },
      "message": "Set up default (random) Android IDs for all users\n\nAlso correct some now-misleading terminology in a permission-check\nlog message, and fix a bug in which a system component trying to\nwrite to a secondary user\u0027s settings would wind up writing the\nowner\u0027s settings instead.\n\nBug 7132405\n\nChange-Id: I5b8fafc35720390a01652e386ab5b7c0ad751abe\n"
    },
    {
      "commit": "d5fe1479248fa597efc7ccb0b36df0b520bbc2a3",
      "tree": "1252a9dc7865156e8915f05494defbfe7c265ffc",
      "parents": [
        "4e2eb6581f8ee91166cbfd80b531f628dedab89a"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Sep 10 15:48:38 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Sep 10 17:32:39 2012 -0700"
      },
      "message": "Miscellaneous fixes for Settings\n\n(1) It\u0027s okay to write literal null as a settings element value\n(2) Properly convey the user handle in the put-for-user variant\n\nBug 7137201\nBug 7139826\n\nChange-Id: I0ed77d65e8377f0e0580a2668f10b7167ad34928\n"
    },
    {
      "commit": "0a26696560461b7fc4ecbf9588c291d46d253bda",
      "tree": "67cebb9c0d2fcd92f6c79132ff21719edfa98810",
      "parents": [
        "824b959dfc830f3d0aa12afc5fb429980e35f3fd",
        "d71778804c2b0f30c3b7b63997273d54a53e58d7"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Sep 07 18:10:02 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 18:10:02 2012 -0700"
      },
      "message": "Merge \"Log all individual settings restored\" into jb-mr1-dev"
    },
    {
      "commit": "d71778804c2b0f30c3b7b63997273d54a53e58d7",
      "tree": "e7ea1f972fe1998c39daf383311ebd66be950da6",
      "parents": [
        "965e7ff4de117a9681b04e84573cb5924efdd6d9"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Sep 07 18:09:03 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Sep 07 18:09:03 2012 -0700"
      },
      "message": "Log all individual settings restored\n\nTrying to get a handle on bug 7129406\n\nChange-Id: If436c7888f0a8565d83c03024c54ea6ec83e7955\n"
    },
    {
      "commit": "4d8fc793f044cf2c857ac72ebe51641b8e6c413d",
      "tree": "6cfddf7fa4ac28d1140c07502dfd17ec060f78bd",
      "parents": [
        "5fc626639aa7ff2aed224b58891149e19fb24b57"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Fri Sep 07 14:43:43 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Fri Sep 07 15:34:08 2012 -0700"
      },
      "message": "Move verification settings to Settings.Global\n\nMove Settings.Secure.PACKAGE_VERIFIER_ENABLE,\nSettings.Secure.PACKAGE_VERIFIER_TIMEOUT,\nSettings.Secure.PACKAGE_VERIFIER_DEFAULT_RESPONSE to\nSettings.Global.PACKAGE_VERIFIER_ENABLE,\nSettings.Global.PACKAGE_VERIFIER_TIMEOUT,\nSettings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE, respectively.\n\nBug: 7082362\nChange-Id: I21fde031a330563891c0129132f3d6369ac5e7a5\n"
    },
    {
      "commit": "9219874be99cc07660807cc5dc94b0d157ef8808",
      "tree": "d62ffe5a7cdd9d26facb4b2ca61199d6b8beb082",
      "parents": [
        "56b6293976c37645476462e61ed554af495e3633"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Sep 07 12:00:13 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Sep 07 12:00:13 2012 -0700"
      },
      "message": "Further fixup of migration to global settings\n\nThe Settings.System.STAY_ON_WHILE_PLUGGED element should have been\nmigrated to the global table, but wasn\u0027t.  This CL does a couple of\nthings around dealing with this:\n\n(1) Tidies up the migration tables outright, so that they correctly\n    reflect the intended final state\n\n(2) Introduces the option of doing a key migration only if the element\n    has not yet been moved to the new table, to allow for safe retry-\n    -with-ignore.  This will make it easy to make any future alterations\n    to the global vs per-user association of individual elements\n\n(3) Migrates the STAY_ON_WHILE_PLUGGED element if it hasn\u0027t been already.\n\nBug 7126575\n\nChange-Id: Ic5fa9ba45f11b09270bd5bc94c26fbbd84abc749\n"
    },
    {
      "commit": "1a9c0dfdbbeba1bc498170be283394ba3e0e9752",
      "tree": "dff9e345171462a71a176b069d0ea278b0bf5014",
      "parents": [
        "8e21d4df2154ad13916b95efc6c4b89815bb2cfb"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Sep 06 22:17:43 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Sep 06 22:52:23 2012 -0700"
      },
      "message": "Mark all settings upgrade transactions as successful along the way\n\nIf you don\u0027t, then the upgrade gets rolled back by the open helper,\nand Bad Stuff Happens.\n\nChange-Id: I191263e5cceb21b96ef413d28e7ee00a924acfc2\n"
    },
    {
      "commit": "a96798e4a548f5ec0e387b2cdd8d419378498ebd",
      "tree": "d8dfc68e893d00ffa6adcf559f003afc24d7e0c4",
      "parents": [
        "6da5827193408ec6d2a77b64448b2f1c40b9a482"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Sep 06 19:07:19 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Sep 06 19:17:45 2012 -0700"
      },
      "message": "Don\u0027t use toArray() inappropriately\n\nHashSet\u003cString\u003e.toArray() does not give you an array of strings.\n\nChange-Id: I2053e714b12eab718aaf75d92bbc0625745b9932\n"
    },
    {
      "commit": "1cf70bbf96930662cab0e699d70b62865766ff52",
      "tree": "2173762d4e4d7be76f5691cebd74e1bd8f2b8543",
      "parents": [
        "fa8d83d90444354e8eca6ca0e080bc917e5a1f32"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 10:53:34 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 18:56:17 2012 -0700"
      },
      "message": "Screen magnification - feature - framework.\n\nThis change is the initial check in of the screen magnification\nfeature. This feature enables magnification of the screen via\nglobal gestures (assuming it has been enabled from settings)\nto allow a low vision user to efficiently use an Android device.\n\nInteraction model:\n\n1. Triple tap toggles permanent screen magnification which is magnifying\n   the area around the location of the triple tap. One can think of the\n   location of the triple tap as the center of the magnified viewport.\n   For example, a triple tap when not magnified would magnify the screen\n   and leave it in a magnified state. A triple tapping when magnified would\n   clear magnification and leave the screen in a not magnified state.\n\n2. Triple tap and hold would magnify the screen if not magnified and enable\n   viewport dragging mode until the finger goes up. One can think of this\n   mode as a way to move the magnified viewport since the area around the\n   moving finger will be magnified to fit the screen. For example, if the\n   screen was not magnified and the user triple taps and holds the screen\n   would magnify and the viewport will follow the user\u0027s finger. When the\n   finger goes up the screen will clear zoom out. If the same user interaction\n   is performed when the screen is magnified, the viewport movement will\n   be the same but when the finger goes up the screen will stay magnified.\n   In other words, the initial magnified state is sticky.\n\n3. Pinching with any number of additional fingers when viewport dragging\n   is enabled, i.e. the user triple tapped and holds, would adjust the\n   magnification scale which will become the current default magnification\n   scale. The next time the user magnifies the same magnification scale\n   would be used.\n\n4. When in a permanent magnified state the user can use two or more fingers\n   to pan the viewport. Note that in this mode the content is panned as\n   opposed to the viewport dragging mode in which the viewport is moved.\n\n5. When in a permanent magnified state the user can use three or more\n   fingers to change the magnification scale which will become the current\n   default magnification scale. The next time the user magnifies the same\n   magnification scale would be used.\n\n6. The magnification scale will be persisted in settings and in the cloud.\n\nNote: Since two fingers are used to pan the content in a permanently magnified\n   state no other two finger gestures in touch exploration or applications\n   will work unless the uses zooms out to normal state where all gestures\n   works as expected. This is an intentional tradeoff to allow efficient\n   panning since in a permanently magnified state this would be the dominant\n   action to be performed.\n\nDesign:\n\n1. The window manager exposes APIs for setting accessibility transformation\n   which is a scale and offsets for X and Y axis. The window manager queries\n   the window policy for which windows will not be magnified. For example,\n   the IME windows and the navigation bar are not magnified including windows\n   that are attached to them.\n\n2. The accessibility features such a screen magnification and touch\n   exploration are now impemented as a sequence of transformations on the\n   event stream. The accessibility manager service may request each\n   of these features or both. The behavior of the features is not changed\n   based on the fact that another one is enabled.\n\n3. The screen magnifier keeps a viewport of the content that is magnified\n   which is surrounded by a glow in a magnified state. Interactions outside\n   of the viewport are delegated directly to the application without\n   interpretation. For example, a triple tap on the letter \u0027a\u0027 of the IME\n   would type three letters instead of toggling magnified state. The viewport\n   is updated on screen rotation and on window transitions. For example,\n   when the IME pops up the viewport shrinks.\n\n4. The glow around the viewport is implemented as a special type of window\n   that does not take input focus, cannot be touched, is laid out in the\n   screen coordiates with width and height matching these of the screen.\n   When the magnified region changes the root view of the window draws the\n   hightlight but the size of the window does not change - unless a rotation\n   happens. All changes in the viewport size or showing or hiding it are\n   animated.\n\n5. The viewport is encapsulated in a class that knows how to show,\n   hide, and resize the viewport - potentially animating that.\n   This class uses the new animation framework for animations.\n\n6. The magnification is handled by a magnification controller that\n   keeps track of the current trnasformation to be applied to the screen\n   content and the desired such. If these two are not the same it is\n   responsibility of the magnification controller to reconcile them by\n   potentially animating the transition from one to the other.\n\n7. A dipslay content observer wathces for winodw transitions, screen\n   rotations, and when a rectange on the screen has been reqeusted. This\n   class is responsible for handling interesting state changes such\n   as changing the viewport bounds on IME pop up or screen rotation,\n   panning the content to make a requested rectangle visible on the\n   screen, etc.\n\n8. To implement viewport updates the window manger was updated with APIs\n   to watch for window transitions and when a rectangle has been requested\n   on the screen. These APIs are protected by a signature level permission.\n   Also a parcelable and poolable window info class has been added with\n   APIs for getting the window info given the window token. This enables\n   getting some useful information about a window. There APIs are also\n   signature protected.\n\nbug:6795382\n\nChange-Id: Iec93da8bf6376beebbd4f5167ab7723dc7d9bd00\n"
    },
    {
      "commit": "06efb530a479ea12398c1b3ee4b80e2ac85a1680",
      "tree": "e0b556042183883b892969b6343c193c15a3e7ce",
      "parents": [
        "9e130e70eff57d15c0888f51c4f1a7cc4cd62573"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Aug 24 15:29:27 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Sep 06 16:39:08 2012 -0700"
      },
      "message": "Per-user settings\n\nEach user has its own Settings.System.* and Settings.Secure.* namespace now.  In\naddition, this CL introduces the new Settings.Global.* namespace, which contains\na number of previously-elsewhere named settings entities; these Global.* entities\nare common to all users.  Because these elements have been moved from their prior\nexistence in the other namespaces, attempts to access them under their old names\nand namespaces are detected and redirected (with appropriate compile-time and\nlogging messages) to their new homes.\n\nThe new Global.* namespace can only be written by system-level code, just like\nthe existing Secure.* namespace.  If an app attempts to write a key that was\npreviously in the System.* namespace but has been moved to the Global.* namespace,\nthen a warning is logged and no write is performed; the action is a no-op.  (The\napp is explicitly not crashed, to avoid breaking well-behaved apps that can\u0027t\nknow any better.)\n\nThere is also now a hidden API for getting/setting settings entities associated\nwith a user other than the caller\u0027s.  Reading/writing data for a user other than\nyourself requires the signature-level INTERACT_ACROSS_USERS_FULL permission.\n\nManipulating data for a different user cannot be done via the ContentProvider\nquery() / insert() APIs; you must use the Settings.get/put APIs for that degree\nof control.  In general, use of the get/set API is *strongly* preferred over\nquery-type access to Settings.\n\nBug 6985398\n\nChange-Id: Ibee54ddff99fb847c8c2479c23b50f1e7524d724\n"
    },
    {
      "commit": "16e119e798cd1e6dd94114bc910b2c1fd92b88e5",
      "tree": "115e69181caece3ea52d7d57aa71dec33a361872",
      "parents": [
        "fb3ec448f1208d75edebff0e93fa97a8913ff29e"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Sep 06 12:04:37 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Sep 06 14:37:44 2012 -0700"
      },
      "message": "Add secure setting for package verification\n\nFramework changes to store and read a secure setting for package verification.\nDefault is on/true.\n\nThis setting will be turned on/off via the Settings app.\n\nBug: 7082362\nChange-Id: I6f93d3136add8af0dbbdc664f0473c5f5b7e3fee\n"
    },
    {
      "commit": "8de24dca68a34828277bf661d72110a3a3191165",
      "tree": "47d71e1eddc85b8208ad959cd3399da75af582f1",
      "parents": [
        "5575e97cea2bbaf0f4f1c3445e28cff2759d4f74"
      ],
      "author": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Wed Sep 05 12:18:41 2012 -0700"
      },
      "committer": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Wed Sep 05 12:35:09 2012 -0700"
      },
      "message": "Restore original default Wifi sleep policy (always)\n\nBUG: b/7092819\n\nChange-Id: I6ee6755fd04df2f0169f8602e60542c3591038f3\nSigned-off-by: Dmitry Shmidt \u003cdimitrysh@google.com\u003e\n"
    }
  ],
  "next": "4e724c842378e84b8744db657a8e8c8ae09fa264"
}
