)]}'
{
  "commit": "b8bbdaf0226670645d112d7bca1c2838a27deee7",
  "tree": "99913b64664ccd26f412f6b417e8f3f3f6e03649",
  "parents": [
    "41b5ece1359db36c59a38629225c75da7513e9cd"
  ],
  "author": {
    "name": "Yohei Yukawa",
    "email": "yukawa@google.com",
    "time": "Wed Mar 14 18:04:52 2018 -0700"
  },
  "committer": {
    "name": "Yohei Yukawa",
    "email": "yukawa@google.com",
    "time": "Wed Mar 14 18:04:52 2018 -0700"
  },
  "message": "Delay DropBox until SettingsProvider becomes ready\n\nIt turns out that we are still not ready to publish\nDropBoxManagerService at an extremely early boot phase as we attempted\nso [1].  Our best right now is to publish DropBoxManagerService\nimmediatelly after SettingsProvider is installed.\n\nOtherwise, if WTF logs are generated in a too early boot phase, it is\nindeed possible that two different instances of SettingsProvider can\nbe created.\n\nThe first SettingsProvider instance, created by the\nDropBoxManagerService access to Settings, is still present, and a\nreference is held in Settings.ContentProviderHolder, such that\nframework API access hits this instance.\n\nThe second SettingsProvider instance, created by the SettingsService\nstartup, also still exists and is referenced by\nSettingsService.mProvider -- this instance is hit by \"settings\" shell\ncommand access via SettingsService.onShellCommand().\n\nThis creates a situation where settings modifications made via shell\ncommand cannot be seen by the usual frameworks APIs, and vice-versa.\n\n [1]: Ie71d53fc125ebc47fa08ef59a8b7e4f66f2e805c\n      d79d203b357b8ac54c36e028d8bb80e3a39165f5\n\nBug: 72399950\nFix: 72450122\nFix: 73505784\nTest: atest CtsTextTestCases:android.text.format.cts.DateFormatTest#test_is24HourFormat\nTest: atest CtsInputMethodServiceHostTestCases\nTest: Manually verified as follows\n      1. Boot a certain device that has neither /proc/wakelocks nor /d/wakeup_sources exists\n      2. adb shell settings get secure enabled_input_methods\n         -\u003e shows non-empty result\nChange-Id: I66b68e7f456c4e0e8f5933e65202c61ed862088d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "165aaac6a42c2768cdfe33ec9eab0ca968177ca5",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/SystemServer.java",
      "new_id": "70abf8054dbbfe15ab55518ac348be7f55c12d6d",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/SystemServer.java"
    }
  ]
}
