)]}'
{
  "commit": "a89d00f8769c0d75e924140bcc2413513116c40f",
  "tree": "52938bca2a43c176f8b83fca5e4801f09a04a1a8",
  "parents": [
    "a42aeb704f233ab8645231a3f8b0c0dae088190a"
  ],
  "author": {
    "name": "Reema Bajwa",
    "email": "reemabajwa@google.com",
    "time": "Thu Dec 19 01:51:49 2024 +0000"
  },
  "committer": {
    "name": "Reema Bajwa",
    "email": "reemabajwa@google.com",
    "time": "Wed Jan 22 19:49:51 2025 +0000"
  },
  "message": "Remove service when package is modified and service is no longer valid\n\nFor system services that are configured in multi mode, i.e support connecting to multiple services,\nthis change modifies the onPackageModified logic and does the following:\n- Gets all services from default service list that are valid\n- Loops through the services in the cache and removes a service that is not present in the default service list\n- Retains the same logic for services that are still valid\n\nThis change is needed because services that become invalid after a package is modified\nare ignored in the logic today, which means that they stop showing up in the settings UI\nbut are still active in the cache. Hence if a provider proactivly disables the services (hence\nhiding it from the UI), the user is unable to see it in the settings. Then, if the developer\nenables it programmatically, the service is valid again and can start receiving requests\nwithout the user getting a chance to view it in between. This change handles changes in\npackage modification such that if a service becomes invalid, it is cleared from the cache\nso that if it is programmatically enabled again, the user has to explicitly go into\nsettings and enable it (put it in secure settings).\n\nNote that this change also retains the old logic for single mode services.\n\nBug: 351809293\nFlag: android.credentials.flags.package_update_fix_enabled\nTest: Locally deployed and tested\n\nChange-Id: I8b579ac91c3e8cf37379adba686961c574bce254\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e28939bc1fbdd82927a05e7898074b4de60b3120",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/infra/AbstractMasterSystemService.java",
      "new_id": "6e5e0fd5224fc3c9a4b9e69e45638ac7323ea756",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/infra/AbstractMasterSystemService.java"
    },
    {
      "type": "modify",
      "old_id": "af025c0ef4dac36fee93dd78f5f8dddf73532c8e",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/infra/AbstractPerUserSystemService.java",
      "new_id": "81d3e0c56e140174f0b506f35598e1fe63d97363",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/infra/AbstractPerUserSystemService.java"
    },
    {
      "type": "modify",
      "old_id": "2e126f1b50ba9e7445b980ed81e5244d5295a528",
      "old_mode": 33188,
      "old_path": "services/credentials/java/com/android/server/credentials/CredentialManagerService.java",
      "new_id": "014f0a2229c11df50c12c8b6e0dde1a8c8753812",
      "new_mode": 33188,
      "new_path": "services/credentials/java/com/android/server/credentials/CredentialManagerService.java"
    },
    {
      "type": "modify",
      "old_id": "b86db065cfd776724773b98a27beccc62f4ec431",
      "old_mode": 33188,
      "old_path": "services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java",
      "new_id": "40554ac51b24f75140b64df3f9b85c8b1e87aa8e",
      "new_mode": 33188,
      "new_path": "services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java"
    },
    {
      "type": "modify",
      "old_id": "57f3cc03980e1678354e6e25d8d04d9314aaa556",
      "old_mode": 33188,
      "old_path": "services/tests/servicestests/src/com/android/server/credentials/CredentialManagerServiceTest.java",
      "new_id": "515d8e96d25c4a7d9aa91bd99e1e92b4a99d607c",
      "new_mode": 33188,
      "new_path": "services/tests/servicestests/src/com/android/server/credentials/CredentialManagerServiceTest.java"
    }
  ]
}
