)]}'
{
  "commit": "031c6b8463a1c75d7770f862a472438ac714d296",
  "tree": "b7fb7b852361ca354f522fd286b01abfc69bfc7d",
  "parents": [
    "29e612e26c1df42e741262874af6529e52c0f441"
  ],
  "author": {
    "name": "zhongliugo",
    "email": "zhongliu88889@gmail.com",
    "time": "Thu Jul 30 21:56:09 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Jul 31 04:56:09 2026 +0000"
  },
  "message": "[web] Autofill all AutofillGroup fields in semantics mode (#187108)\n\n**Fixes #180652**\n\n  **Problem**\n\nWith a screen reader on, picking a saved login only filled the field you\ntapped. The other fields stayed empty.\n  \nBrowsers autofill a login by putting all its fields in one hidden\n`\u003cform\u003e`. But in screen-reader mode each field has to live in its own\nspot for accessibility, so it never went into that form. The browser saw\na half-built login and filled only one field.\n\n  **Fix**\n\nStill build the hidden form, but instead of moving the field into it,\njust link them with the HTML `form\u003d\"\u003cid\u003e\"` attribute. The field stays\nwhere the screen reader needs it, and the browser now sees a complete\nlogin and fills every field.\n\n  **Demo**\n  \n  Semantics ON:\n  - Before: https://flutter-demo-30-before.web.app — only email fills\n  - After: https://flutter-demo-30-after.web.app — both fields fill\n\n  Semantics OFF (regression check, both behave the same):\n  - Before: https://flutter-demo-31-before.web.app\n  - After: https://flutter-demo-31-after.web.app\n\n**Known limitation**\n\nChrome on iOS still fills only the username, not the password. That is a\npre-existing WebKit limitation unrelated to this change (it also happens\nwithout a screen reader) and is tracked separately in #185327.\n\n---------\n\nCo-authored-by: Harry Terkelsen \u003c1961493+harryterkelsen@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7a8a78bb5d33109fa6943ca620ef7cf78271db4f",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/lib/src/engine/semantics/text_field.dart",
      "new_id": "97ece97a2a7a5cf55cf60482eb025ded46a332b5",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/lib/src/engine/semantics/text_field.dart"
    },
    {
      "type": "modify",
      "old_id": "f737daf67c728d3b5c739fa74c7a6cb2f6569cb7",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/lib/src/engine/text_editing/text_editing.dart",
      "new_id": "e907a3e98469fe04054b78a1570162b89be2d973",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/lib/src/engine/text_editing/text_editing.dart"
    },
    {
      "type": "modify",
      "old_id": "20ea90ccad1c8d4d006e4e399c26a232b1141d0e",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/test/engine/semantics/text_field_test.dart",
      "new_id": "d0993e7587ebedfbe71e25d055cd4308a96b9c48",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/test/engine/semantics/text_field_test.dart"
    }
  ]
}
