[hhh] Update cached flutter_web_sdk with freshly built one

Change-Id: Id692c8d274ae0489bed7a705d38ab390d4141c3e
Reviewed-on: https://dart-review.googlesource.com/c/recipes/+/196700
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
diff --git a/README.recipes.md b/README.recipes.md
index b8b4cd2..5886247 100644
--- a/README.recipes.md
+++ b/README.recipes.md
@@ -190,7 +190,7 @@
 
 &mdash; **def [Build](/recipes/dart/flutter_engine.py#63)(api, engine_src, config, \*targets):**
 
-&mdash; **def [BuildAndTest](/recipes/dart/flutter_engine.py#392)(api, start_dir, engine_src, flutter_rev):**
+&mdash; **def [BuildAndTest](/recipes/dart/flutter_engine.py#402)(api, start_dir, engine_src, flutter_rev):**
 
 &mdash; **def [BuildLinux](/recipes/dart/flutter_engine.py#113)(api, engine_src):**
 
@@ -208,11 +208,11 @@
 
 &mdash; **def [RunGN](/recipes/dart/flutter_engine.py#72)(api, engine_src, \*args):**
 
-&mdash; **def [RunSteps](/recipes/dart/flutter_engine.py#362)(api):**
+&mdash; **def [RunSteps](/recipes/dart/flutter_engine.py#372)(api):**
 
 &mdash; **def [TestEngine](/recipes/dart/flutter_engine.py#85)(api, engine_src):**
 
-&mdash; **def [TestFlutter](/recipes/dart/flutter_engine.py#282)(api, start_dir, engine_src, just_built_dart_sdk):**
+&mdash; **def [TestFlutter](/recipes/dart/flutter_engine.py#292)(api, start_dir, engine_src, just_built_dart_sdk):**
 
 &mdash; **def [TestObservatory](/recipes/dart/flutter_engine.py#129)(api, engine_src):**
 
diff --git a/recipes/dart/flutter_engine.expected/flutter-engine-linux.json b/recipes/dart/flutter_engine.expected/flutter-engine-linux.json
index 09b5537..a87f923 100644
--- a/recipes/dart/flutter_engine.expected/flutter-engine-linux.json
+++ b/recipes/dart/flutter_engine.expected/flutter-engine-linux.json
@@ -6139,6 +6139,25 @@
     "cmd": [
       "/bin/bash",
       "-c",
+      "if [ -L \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\"; fi"
+    ],
+    "cwd": "[CACHE]/builder/flutter",
+    "env": {
+      "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+      "ANDROID_SDK_ROOT": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "CHROME_EXECUTABLE": "[CACHE]/builder/engine/src/flutter/third_party/browsers/chrome/chrome/google-chrome",
+      "FLUTTER_SKIP_ENGINE_CHECK": "true",
+      "GOMA_DIR": "[CACHE]/goma/client",
+      "PATH": "[CACHE]/builder/engine/src/out/host_debug/dart-sdk/bin:<PATH>",
+      "TEST_COMMIT_RANGE": "HEAD",
+      "WEB_SHARD_COUNT": "16"
+    },
+    "name": "cleanup flutter_web_sdk"
+  },
+  {
+    "cmd": [
+      "/bin/bash",
+      "-c",
       "if [ -L \"[CACHE]/builder/flutter/bin/cache/pkg\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/pkg\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/pkg\"; fi"
     ],
     "cwd": "[CACHE]/builder/flutter",
@@ -6224,6 +6243,31 @@
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
       "--json-output",
       "/path/to/tmp/json",
+      "copytree",
+      "[CACHE]/builder/engine/src/out/host_debug/flutter_web_sdk",
+      "[CACHE]/builder/flutter/bin/cache/flutter_web_sdk"
+    ],
+    "cwd": "[CACHE]/builder/flutter",
+    "env": {
+      "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+      "ANDROID_SDK_ROOT": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "CHROME_EXECUTABLE": "[CACHE]/builder/engine/src/flutter/third_party/browsers/chrome/chrome/google-chrome",
+      "FLUTTER_SKIP_ENGINE_CHECK": "true",
+      "GOMA_DIR": "[CACHE]/goma/client",
+      "PATH": "[CACHE]/builder/engine/src/out/host_debug/dart-sdk/bin:<PATH>",
+      "TEST_COMMIT_RANGE": "HEAD",
+      "WEB_SHARD_COUNT": "16"
+    },
+    "infra_step": true,
+    "name": "copy just built dart sdk to cached location (2)"
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
       "symlink",
       "[CACHE]/builder/engine/src/out/host_debug/gen/dart-pkg",
       "[CACHE]/builder/flutter/bin/cache/pkg"
diff --git a/recipes/dart/flutter_engine.expected/only-run-webtests-suite.json b/recipes/dart/flutter_engine.expected/only-run-webtests-suite.json
index de7166e..2395623 100644
--- a/recipes/dart/flutter_engine.expected/only-run-webtests-suite.json
+++ b/recipes/dart/flutter_engine.expected/only-run-webtests-suite.json
@@ -6139,6 +6139,25 @@
     "cmd": [
       "/bin/bash",
       "-c",
+      "if [ -L \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\"; fi"
+    ],
+    "cwd": "[CACHE]/builder/flutter",
+    "env": {
+      "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+      "ANDROID_SDK_ROOT": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "CHROME_EXECUTABLE": "[CACHE]/builder/engine/src/flutter/third_party/browsers/chrome/chrome/google-chrome",
+      "FLUTTER_SKIP_ENGINE_CHECK": "true",
+      "GOMA_DIR": "[CACHE]/goma/client",
+      "PATH": "[CACHE]/builder/engine/src/out/host_debug/dart-sdk/bin:<PATH>",
+      "TEST_COMMIT_RANGE": "HEAD",
+      "WEB_SHARD_COUNT": "16"
+    },
+    "name": "cleanup flutter_web_sdk"
+  },
+  {
+    "cmd": [
+      "/bin/bash",
+      "-c",
       "if [ -L \"[CACHE]/builder/flutter/bin/cache/pkg\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/pkg\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/pkg\"; fi"
     ],
     "cwd": "[CACHE]/builder/flutter",
@@ -6224,6 +6243,31 @@
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
       "--json-output",
       "/path/to/tmp/json",
+      "copytree",
+      "[CACHE]/builder/engine/src/out/host_debug/flutter_web_sdk",
+      "[CACHE]/builder/flutter/bin/cache/flutter_web_sdk"
+    ],
+    "cwd": "[CACHE]/builder/flutter",
+    "env": {
+      "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+      "ANDROID_SDK_ROOT": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "CHROME_EXECUTABLE": "[CACHE]/builder/engine/src/flutter/third_party/browsers/chrome/chrome/google-chrome",
+      "FLUTTER_SKIP_ENGINE_CHECK": "true",
+      "GOMA_DIR": "[CACHE]/goma/client",
+      "PATH": "[CACHE]/builder/engine/src/out/host_debug/dart-sdk/bin:<PATH>",
+      "TEST_COMMIT_RANGE": "HEAD",
+      "WEB_SHARD_COUNT": "16"
+    },
+    "infra_step": true,
+    "name": "copy just built dart sdk to cached location (2)"
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
       "symlink",
       "[CACHE]/builder/engine/src/out/host_debug/gen/dart-pkg",
       "[CACHE]/builder/flutter/bin/cache/pkg"
diff --git a/recipes/dart/flutter_engine.expected/run-all-test-suites.json b/recipes/dart/flutter_engine.expected/run-all-test-suites.json
index 09b5537..a87f923 100644
--- a/recipes/dart/flutter_engine.expected/run-all-test-suites.json
+++ b/recipes/dart/flutter_engine.expected/run-all-test-suites.json
@@ -6139,6 +6139,25 @@
     "cmd": [
       "/bin/bash",
       "-c",
+      "if [ -L \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\"; fi"
+    ],
+    "cwd": "[CACHE]/builder/flutter",
+    "env": {
+      "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+      "ANDROID_SDK_ROOT": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "CHROME_EXECUTABLE": "[CACHE]/builder/engine/src/flutter/third_party/browsers/chrome/chrome/google-chrome",
+      "FLUTTER_SKIP_ENGINE_CHECK": "true",
+      "GOMA_DIR": "[CACHE]/goma/client",
+      "PATH": "[CACHE]/builder/engine/src/out/host_debug/dart-sdk/bin:<PATH>",
+      "TEST_COMMIT_RANGE": "HEAD",
+      "WEB_SHARD_COUNT": "16"
+    },
+    "name": "cleanup flutter_web_sdk"
+  },
+  {
+    "cmd": [
+      "/bin/bash",
+      "-c",
       "if [ -L \"[CACHE]/builder/flutter/bin/cache/pkg\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/pkg\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/pkg\"; fi"
     ],
     "cwd": "[CACHE]/builder/flutter",
@@ -6224,6 +6243,31 @@
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
       "--json-output",
       "/path/to/tmp/json",
+      "copytree",
+      "[CACHE]/builder/engine/src/out/host_debug/flutter_web_sdk",
+      "[CACHE]/builder/flutter/bin/cache/flutter_web_sdk"
+    ],
+    "cwd": "[CACHE]/builder/flutter",
+    "env": {
+      "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+      "ANDROID_SDK_ROOT": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "CHROME_EXECUTABLE": "[CACHE]/builder/engine/src/flutter/third_party/browsers/chrome/chrome/google-chrome",
+      "FLUTTER_SKIP_ENGINE_CHECK": "true",
+      "GOMA_DIR": "[CACHE]/goma/client",
+      "PATH": "[CACHE]/builder/engine/src/out/host_debug/dart-sdk/bin:<PATH>",
+      "TEST_COMMIT_RANGE": "HEAD",
+      "WEB_SHARD_COUNT": "16"
+    },
+    "infra_step": true,
+    "name": "copy just built dart sdk to cached location (2)"
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
       "symlink",
       "[CACHE]/builder/engine/src/out/host_debug/gen/dart-pkg",
       "[CACHE]/builder/flutter/bin/cache/pkg"
diff --git a/recipes/dart/flutter_engine.expected/run-undefined-test-suite.json b/recipes/dart/flutter_engine.expected/run-undefined-test-suite.json
index dd7b42e..759479f 100644
--- a/recipes/dart/flutter_engine.expected/run-undefined-test-suite.json
+++ b/recipes/dart/flutter_engine.expected/run-undefined-test-suite.json
@@ -6139,6 +6139,25 @@
     "cmd": [
       "/bin/bash",
       "-c",
+      "if [ -L \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/flutter_web_sdk\"; fi"
+    ],
+    "cwd": "[CACHE]/builder/flutter",
+    "env": {
+      "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+      "ANDROID_SDK_ROOT": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "CHROME_EXECUTABLE": "[CACHE]/builder/engine/src/flutter/third_party/browsers/chrome/chrome/google-chrome",
+      "FLUTTER_SKIP_ENGINE_CHECK": "true",
+      "GOMA_DIR": "[CACHE]/goma/client",
+      "PATH": "[CACHE]/builder/engine/src/out/host_debug/dart-sdk/bin:<PATH>",
+      "TEST_COMMIT_RANGE": "HEAD",
+      "WEB_SHARD_COUNT": "16"
+    },
+    "name": "cleanup flutter_web_sdk"
+  },
+  {
+    "cmd": [
+      "/bin/bash",
+      "-c",
       "if [ -L \"[CACHE]/builder/flutter/bin/cache/pkg\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/pkg\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/pkg\"; fi"
     ],
     "cwd": "[CACHE]/builder/flutter",
@@ -6224,6 +6243,31 @@
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
       "--json-output",
       "/path/to/tmp/json",
+      "copytree",
+      "[CACHE]/builder/engine/src/out/host_debug/flutter_web_sdk",
+      "[CACHE]/builder/flutter/bin/cache/flutter_web_sdk"
+    ],
+    "cwd": "[CACHE]/builder/flutter",
+    "env": {
+      "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+      "ANDROID_SDK_ROOT": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "CHROME_EXECUTABLE": "[CACHE]/builder/engine/src/flutter/third_party/browsers/chrome/chrome/google-chrome",
+      "FLUTTER_SKIP_ENGINE_CHECK": "true",
+      "GOMA_DIR": "[CACHE]/goma/client",
+      "PATH": "[CACHE]/builder/engine/src/out/host_debug/dart-sdk/bin:<PATH>",
+      "TEST_COMMIT_RANGE": "HEAD",
+      "WEB_SHARD_COUNT": "16"
+    },
+    "infra_step": true,
+    "name": "copy just built dart sdk to cached location (2)"
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
       "symlink",
       "[CACHE]/builder/engine/src/out/host_debug/gen/dart-pkg",
       "[CACHE]/builder/flutter/bin/cache/pkg"
diff --git a/recipes/dart/flutter_engine.py b/recipes/dart/flutter_engine.py
index a04747d..adebe0d 100644
--- a/recipes/dart/flutter_engine.py
+++ b/recipes/dart/flutter_engine.py
@@ -233,6 +233,7 @@
                                              'engine', 'common',
                                              'flutter_patched_sdk_product')
   dart_sdk = flutter.join('bin', 'cache', 'dart-sdk')
+  flutter_web_sdk = flutter.join('bin', 'cache', 'flutter_web_sdk')
   pkg = flutter.join('bin', 'cache', 'pkg')
   # In case dart-sdk symlink was left from previous run we need to [remove] it,
   # rather than [rmtree] because rmtree is going to remove symlink target
@@ -242,6 +243,12 @@
     '/bin/bash', '-c',
     'if [ -L "%(dir)s" ]; then rm "%(dir)s"; else rm -rf "%(dir)s"; fi' %
     {'dir': dart_sdk}])
+  api.step('cleanup flutter_web_sdk', [
+      '/bin/bash', '-c',
+      'if [ -L "%(dir)s" ]; then rm "%(dir)s"; else rm -rf "%(dir)s"; fi' % {
+          'dir': flutter_web_sdk
+      }
+  ])
   api.step('cleanup pkg', [
       '/bin/bash', '-c',
       'if [ -L "%(dir)s" ]; then rm "%(dir)s"; else rm -rf "%(dir)s"; fi' % {
@@ -258,6 +265,9 @@
     {'dir': flutter_patched_sdk_product}])
   api.file.copytree('copy just built dart sdk to cached location',
                     engine_src.join('out', 'host_debug', 'dart-sdk'), dart_sdk)
+  api.file.copytree('copy just built dart sdk to cached location',
+                    engine_src.join('out', 'host_debug', 'flutter_web_sdk'),
+                    flutter_web_sdk)
   api.file.symlink('symlink just built pkg from dart sdk to cached location',
                    engine_src.join('out', 'host_debug', 'gen', 'dart-pkg'), pkg)
   api.file.symlink(