)]}'
{
  "commit": "3a8e191c9eaf0015544c998220edd9d5668fe662",
  "tree": "24e422f4f5092f99b6fd3801add0f90a564790f5",
  "parents": [
    "009d3864c3158d7e7843a168fef07ea6b5e4f368"
  ],
  "author": {
    "name": "Ben Konyi",
    "email": "bkonyi@google.com",
    "time": "Tue Sep 29 18:38:24 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 29 18:38:24 2026 +0000"
  },
  "message": "[tool] Migrate Web build subcommands and toolchain to modular dependency injection (#190783)\n\n## Summary\n\nPart 17 of the modular dependency injection migration.\n\n\u003e [!NOTE]\n\u003e Stacked on [#192462](https://github.com/flutter/flutter/pull/192462)\n(`di/17a-build-bundle-command`), which migrated `BuildBundleCommand` to\nmodular DI.\n\n* Migrates Web build subcommand and toolchain components to modular\nconstructor dependency injection:\n- `BuildWebCommand({required BuildSystem buildSystem, required\nFeatureFlags featureFlags, required ToolContext toolContext, required\nsuper.verboseHelp, BuildTargets buildTargets \u003d const BuildTargetsImpl(),\nWebBuilder? webBuilder})`\n* Passes `ToolContext` directly to subcommands, eliminating\n`context.get` fallbacks in `BuildCommand` and `WebBuilder`.\n* Injects `FileSystem` into `defaultDepfilePath` and\n`getAssetBuildDirectory`.\n* Migrates unit tests in\n`test/commands.shard/hermetic/build_web_test.dart` to hermetic\n`testWithoutContext`.\n\nPart of #188471",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d0de9071493f21ce716e2b1fb5f31693ffe5008c",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/build_info.dart",
      "new_id": "17b5c352531ac855af57fa0218f1549ea5db234f",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/build_info.dart"
    },
    {
      "type": "modify",
      "old_id": "1fb44d4948bfe31fec88f8115a3a0adcd01dd877",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/commands/build.dart",
      "new_id": "facb4c11a8ba7d223b9f1a55a0bd46877b70851b",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/commands/build.dart"
    },
    {
      "type": "modify",
      "old_id": "d2a8da56b7df25134ee7b050b81cb986bd220d38",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/commands/build_web.dart",
      "new_id": "8af152b06357a902a1a7e7d45270227530323397",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/commands/build_web.dart"
    },
    {
      "type": "modify",
      "old_id": "676478ada5083a8a119cec3a3ee4aac8b4310809",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/flutter_plugins.dart",
      "new_id": "2ae351acb2a72604ab62a50002a5f283bc300a96",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/flutter_plugins.dart"
    },
    {
      "type": "modify",
      "old_id": "48473769f873cc1dd969d9a4a36a969e71b49ca6",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/isolated/resident_web_runner.dart",
      "new_id": "4407fb43619ae15b188dde2ea62b155526f74cc1",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/isolated/resident_web_runner.dart"
    },
    {
      "type": "modify",
      "old_id": "8bedd04ed43067e8dc3590c1ea453c5dda6edc0f",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/isolated/web_asset_server.dart",
      "new_id": "d49d8393e0ab6507405d3c5389e0d2693bd9338a",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/isolated/web_asset_server.dart"
    },
    {
      "type": "modify",
      "old_id": "f9b67c7ff2bb974eaa7ebd63aa8fd1a8f143d0f6",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/web/compile.dart",
      "new_id": "94d291325dc1e2cb151feb1cd16937828a313540",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/web/compile.dart"
    },
    {
      "type": "modify",
      "old_id": "184a2bd4e7b6c166f55ee904f2b915985ee0a4c9",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart",
      "new_id": "da009bbbcd364cefc0ebfaa868d246d5c7fc4efb",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart"
    },
    {
      "type": "modify",
      "old_id": "af95f4f85248a43271f172aa9eb532ac45e6ca8a",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/web/compile_web_test.dart",
      "new_id": "46b80afb0e5ab35f2537523d717c5500c97b0b10",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/web/compile_web_test.dart"
    }
  ]
}
