)]}'
{
  "commit": "e8bdfbfa97667dec8bac00a65d3b00929671cb8a",
  "tree": "fbe840dc45b8144bdb1aae0376a274e4b010f969",
  "parents": [
    "28ec28e3b14a7f9489a4b135d0e866504f1f5913"
  ],
  "author": {
    "name": "yaakovschectman",
    "email": "109111084+yaakovschectman@users.noreply.github.com",
    "time": "Mon Apr 03 14:32:02 2023 -0400"
  },
  "committer": {
    "name": "dart-internal-monorepo",
    "email": "dart-internal-monorepo@dart-ci-internal.iam.gserviceaccount.com",
    "time": "Mon Apr 03 11:40:14 2023 -0700"
  },
  "message": "Re-introduce WM_CLOSE listener, new quit protocol posts a second message to next handler (#40802)\n\nWith this approach, when the last window of an app is closed, the engine\nsends a message to the framework to check if it is allowed to exit. If\nit may, the windows lifecycle manager synthesizes a second `WM_CLOSE`\nmessage that it will ignore, and so the next registered top level window\nproc delegate, if any, will be able to process the message. If none do\nso, the message will be handled by the default window proc, so the app\nwill be able to close.\n\nI was not able to get a full system tray example application running to\ntest this, but I could get an application that stays open when its\nwindow is closed and can be seen as a system tray icon as long as it is\nrunning, albeit the icon was non-functional. As this repro app still\nexhibited this behavior when using this engine build, I am reasonably\nconfident in concluding that applications that want to be able to run\nheadless when their windows close will function properly.\n\nAddresses https://github.com/flutter/flutter/issues/123654.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide] and the [C++,\nObjective-C, Java style guides].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I added new tests to check the change I am making or feature I am\nadding, or Hixie said the PR is test-exempt. See [testing the engine]\nfor instructions on writing and running engine tests.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [ ] I signed the [CLA].\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/wiki/Tree-hygiene#overview\n[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo\n[C++, Objective-C, Java style guides]:\nhttps://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style\n[testing the engine]:\nhttps://github.com/flutter/flutter/wiki/Testing-the-engine\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes\n[Discord]: https://github.com/flutter/flutter/wiki/Chat\n\n---------\n\nCo-authored-by: Loïc Sharma \u003c737941+loic-sharma@users.noreply.github.com\u003e\nhttps://dart.googlesource.com/external/github.com/flutter/engine/+/95a962fea38bb27cba07edadb525857d1f712ae9\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ff763a412dc80111e088c92edcd13308e8980417",
      "old_mode": 33188,
      "old_path": "DEPS",
      "new_id": "08f905fe7bbc33718c6ce6b6ef39259d72ce2784",
      "new_mode": 33188,
      "new_path": "DEPS"
    },
    {
      "type": "modify",
      "old_id": "83c773cdf63e95516fa49f8eed5b3b8378794017",
      "old_mode": 33188,
      "old_path": "commits.json",
      "new_id": "7a8d6e646fb6f3732b18e3025d34d44fa0eb4c15",
      "new_mode": 33188,
      "new_path": "commits.json"
    }
  ]
}
